Collaborative design review in VR
Collaborate in the same virtual workspace, no matter where you are. Please take a look at the Improov website for more information: http://www.improovr.com/
Improov encrypts its connections using the standard TLS (Transport Layer Security) version 1.2 protocol.
By default, the Improov server generates a temporary certificate and RSA key pair each time it is started, but you can specify a custom certificate and key. See Advanced security setup for more information.
Note: The current version of Improov does not verify the server identity and only uses TLS for encryption purposes.
Improov uses the WebSocket Secure communication protocol.
We make sure that only the minimum necessary data will be transmitted to the server.
Here is a list of the data that is transferred over the secured network connection:
- Voice data
- Internal Improov commands such as:
- File name and path when importing a Model.
- Anonymised product tree data: the name of the parts are never transmitted. Every individual part is assigned a unique ID. The only time a name is transmitted is when a part is renamed. Only the new name is transmitted.
- 3D data of extrusions, drawings and measures.
Here is a list of the data that is collected on the server for Improov to work properly:
- For each part: ID of the part.
- Command history: Command type.
- For each connected client: company’s external IP address and Improov user name.
- Error reports (only internal function).
- License levels.
Data that will never be transmitted:
- Original 3D/CAD file.
- Product tree with the name of the parts
- Tessellated geometry.
Currently Improov does not transmit the model automatically to other users. You have to do it manually. Please see section Sharing 3D model for more information about how to best transmit your 3D model to other participants.
Automatic model transmission is a feature that will be added soon.
Improov requires a 64-bit version of Windows 7 or later.
Running Improov on Windows 7 requires the Service Pack 2 or later.
Improov uses the MiddleVR for Unity plugin internally, so you can use any VR system supported by it. This includes HMDs such as the Oculus Rift CV1, the HTC Vive or other VR systems such as CAVEs, Powerwalls, etc.
For a comprehensive list of all supported devices, please follow this url : http://www.middlevr.com/doc/current/#requirement_devices
The requirements for 3D monitors, 3D projectors, 3D-TVs, head-mounted displays, passive and active stereoscopy are the same as MiddleVR: http://www.middlevr.com/doc/current/#requirements-for-using-a-3d-monitor-or-3d-projector
Please note that this configuration depends on the complexity of your 3D models. The following recommendations are for a CAD object of medium complexity.
- OS: Windows 10
- Graphic cards: NVidia GTX 1070, NVidia GTX 1080 and over with latest drivers
- RAM: 32 Gb min
- CPU: Intel i7 or greater
- OS: Windows 7 or 10
- Graphic cards: NVidia Quadro P5000, NVidia Quadro P6000, NVidia GV100 and over.
- Sync: Quadro Sync
- RAM: 32 Gb min
- CPU: Intel i7 or greater
The default online session server port is TCP 443.
The default port for a private server is TCP 25000.
License server : 6200 by default (TCP and UDP)
For users of advanced VR systems such as CAVEs, Walls etc, MiddleVR requires the following ports to be opened in the firewall:
- TCP: 9996, 9997, 9998 and 9999
- VRPN communicates on port 3883 (UDP by default).
- Other devices (Vicon, ART, Optitrack) have specific network ports.
Before starting a collaborative session, you have to make sure that all participants have access to all the 3D files that will be used during the sessions.
Today in Improov, you have to do it manually.
The user is advised to use whatever secure method for sharing the model he prefers. Some people simply send the 3D model via e-mail, or through a company specific secured transmission channel.
The only requirement for Improov to be able to locate the 3D model on all participants’ hard drive is the folder where it is stored. There are two methods described below.
The organizer can choose to load a 3D model anywhere on its hard drive. For each participants Improov will then try to load this 3D model at this exact same path on every computer.
For example let’s take two distant users, Alex and Zavier.
Alex loads a 3D model located on
On Zavier’s computer, Improov will then try to load this file at the exame same path. If the model is here, Improov will load it.
If Improov cannot find the model, Zavier will be immediately disconnected.
Sometimes for security reasons the users only have access to their user folder
So it Alex tries to load
C:\Users\Alex\MyProject1\2018\Iteration1.fbx, Zavier’s Improov will try to access this exact same path on its computer, which probably does not exist. Zavier will the be disconnected.
One solution is to use Improov’s Default Path described below.
Default Path, defined in the Settings, is a path that will be used as a root path for your 3D models repository.
By default the path is set to
For example let’s take two distant users, Alex and Zavier.
The default path for Alex is:
The default path for Zavier is:
If the file you are loading is NOT located in this default path or in a child folder, Improov will send the absolute path to all users.
If the file you are loading is located in this default path or in a child folder, Improov will send the path of the model relative to the default path to all users.
Suppose Alex imports a file located at :
Improov will take the path of the model relative to the
Default Path, in this case
BigProject\Box.3dxml, and send that to all users. All users will then load this model relative to their default path.
Zavier will then load
Note: If a client cannot locate the file at the given path, he will be disconnected. He can fix this problem by putting the 3D model in the correct folder and reconnect.
The first thing you will see when opening Improov is the getting started window:
This window will help you to quickly get into your work.
License edition: Please refer to the license section.
A private server is an Improov server that can only be accessed on the same local network using the local network address. This ensures that you manage all aspects of the security by your own standards.
To join a private server you will have to use local network address of the server.
Create server...: Creates a server on this computer.
Join server...: Join a server using local network address. This feature can only be used only if another user created a private server using the previous button.
To create a private server you only need to set a password, and then create the server and autoconnect with a desktop or in VR directly (this option works only with HMDs).
To join a private server you need to set the network address of the host server and the password. You can join with a desktop or in VR directly (this option works only with HMDs).
You can also setup a private Improov server on a computer that will not be used as a client. For example the server could be setup on an online computer accessible by all your users. You will need a custom license to run it. Please contact the support.
An online session is a session created on a online public session server. This solution is made to simplify the collaboration process. You don’t need to think about the IP address or make sure that everyone is on the same local network as with the private server.
You only need to ensure that each client can reach the server (by default
https://session.improovr.com:443). Please make sure to read how we use your data and where it will be transmitted
Create session...: Create an online session. By selecting this button, you will use the online session server.
Join session...: Join an online session with the Session ID.
This information can be seen at the bottom of the Join and Create windows:
If you run into the
Session server unavailable message please contact the support.
If everything is working, you just need to add a password and you can Create a session with a desktop or in VR directly (this option work only with HMDs).
To join a session you will need the Session ID which can be found in the collaboration panel. You can join with a desktop or in VR directly (this option work only with HMDs).
Note: If the creator of an online session quits the session, everybody will be disconnected
Note: If the creator of an online session is disconnected non-willingly (either due to a network connection error, a crash or anything else), he has 5 mins to reconnect to the session using the original Session ID. If the creator of the session is not back in the session within 5 mins, the session will be closed and everyone will be disconnected.
After joining or creating a private server or an online session, you will see the desktop interface.
The Improov desktop GUI is made of multiple panels:
- The menu bar where you can import a file, connect to a mannequin, launch in vr, manage license or access some advanced option such as mannequin or the settings window.
- The tool panel where you can select the current tool and see advanced options based on the current tool selected.
- The user list where you can see all collaborators currently in the session with some button to control the voice chat for each user.
- The 3D window where your 3D model will be displayed. This is the area where you can navigate and interact with your 3D model directly.
- The console, to display debug and details information about your action in the software.
- The hierarchy of the 3D model in the scene.
- The properties of the current selection.
The desktop main window can be resize like every other application but the panel will not be reduced.
Note: Make sure to check section Sharing 3D models.
To start working on your model, you first need to import it. You will find the import function in the file menu:
To import a model in Improov you need to use the import window:
You can import two type of models in Improov:
- Models: Default type of all CAD model in Improov. It will import the hierarchy and the full model.
- Environments: Use this tab only if you want to import static environment. This functionality is useful to import unselectable object or environment map.
For more information about importing environment, please look at the section importing environment
To import a model use the square button next to the text field to select a file:
After selecting a file and click open, you will be back in the improov panel with the selected file path in the text field.
By clicking Import, you will then import the file in Improov:
You will see a progress bar with all file in the loading list to import. At this step you can only cancel an import if you do it with multiple file. Every finished import will stay in the scene with the current file being imported, and every other file not yet imported will be canceled.
For more information, please look at the section import advanced options.
Navigation is the set of methods used by the user to move around the virtual environment. They are based on the navigation methods of popular 3d engines. The default navigation is
|CATIA||Translation||Middle Mouse Button + mouse movement|
|CATIA||Rotation||Middle Mouse Button + Left Mouse Button + mouse movement|
|CATIA||Zoom||Middle Mouse Button + Click Left Mouse Button + mouse movement|
|Solidworks||Translation||Ctrl + Middle Mouse Button + mouse movement|
|Solidworks||Rotation||Middle Mouse Button + mouse movement|
|Solidworks||Rotate the horizon||Alt +Middle Mouse Button + mouse movement|
|Solidworks||Slow Zoom||Shift + Mouse Scrollwheel + mouse movement|
|Mouse Sketchup||Translation||Shift + mouse movement|
|Mouse Sketchup||Rotation||Middle Mouse Button + mouse movement|
|Mouse Sketchup||Zoom||Mouse Scrollwheel|
|Walk Sketchup||Slow horizontal translation||Right Mouse Button + mouse movement|
|Walk Sketchup||Fast horizontal translation||Ctrl + Right Mouse Button + mouse movement|
|Walk Sketchup||Slow translation in camera plane||Shift + Right Mouse Button + mouse movement|
|Walk Sketchup||Fast translation in camera plane||Shift + Ctrl + Right Mouse Button + mouse movement|
|Walk Sketchup||Rotation||Middle Mouse Button + mouse movement|
|Walk Sketchup||Zoom||Mouse Scrollwheel|
Selection allows you to specify one or more object that can be acted upon with other tools or inspected with the inspector window. Selected objects cannot be selected by other users.
An object can be selected by :
- Pointing the object and clicking on it (or by pressing the interaction button on the wand). Locked objects cannot be selected this way. The Lock attribute can be modified in the “properties” view or in the hierarchy.
- Selecting the object through the hierarchy or with a selection method in the selection panel.
Now that the model has been imported, there are various ways to interact with it :
- Through the hierarchy : The 3D model scene tree is added in the hierarchy view. The displayed components of the model are of two types : non-mesh and mesh. You can select objects by clicking on the names or you can modify properties by clicking on the icons to the right.
- Through the inspector: The inspector allows you to modify the object’s properties (such as visibility) and tweak its 3D position.
- Through the menu: The
Editmenu allows you to select objects, show them or delete them.
- Through the tools: A set of tools is here to allow the selection or transformation of an object. Select a tool on the left of the GUI. You can have only one tool active at one time.
Improov come with an embedded voice chat. You can choose to activate or no the voice chat when creating a server. By default the voice chat is activated. You will manage the voice chat in the user section.
You have multiple information and actions possible in the user panel for the voice chat: - Cut your microphone or the one of each collaborator using the button with a microphone icon on it. - Cut your sound with the second button. - See how loud is each user.
You can also change some more advanced option and select the correct microphone in the settings
The navigation techniques use a button from the wand. By default, this button is the wand button 1. For your custom MiddleVR configurations, you can map your chosen device button to the wand button 1 to make it be the navigation button. Some others also use a navigation axis, which is often mapped to a joystick.
Here is a short list of button assignment for some of the most common hardware :
|HTC Vive||Touchpad||Navigation axis & button|
|Razer Hydra||Right-Hand Button 1||Navigation button|
|Razer Hydra||Right-Hand Joystick||Navigation axis|
Some of the immersive navigation methods have a “Fly” property to lock/unlock vertical translations. This parameter can be directly checked/unchecked on the settings window.
|Joystick||Use the Wand’s joystick to navigate in the direction pointed by the Wand.|
|Elastic||Stretch a virtual elastic to the direction you want to move. The more your stretch, the faster you go.|
You can navigate using the navigation axis. The user moves in the direction pointed by the wand. It will also rotate left or right if you move the horizontal axis of the wand.
If you want to strafe, point your hand to the right or to the left and press forward.
By default you will be able to fly in the scene. If you wand to stick to the current height, uncheck the Fly option in the settings menu and tin the navigation tab.
You can navigate by pressing the navigation button and stretching the displayed elastic gizmo. The resulting vector will represent the motion to apply to the user. The more the elastic is stretched, the faster the navigation is. The same concept applies to rotation.
If you want to strafe, press the navigation button and stretch the elastic to the right or to the left.
By default you will be able to fly in the scene. If you wand to stick to the current height, uncheck the Fly option in the settings menu.
The hand is the main interaction tool for a cross-platform VR. Whether a client uses a HMD or a CAVE system, the wand will still be an efficient and natural interface.
It is represented by a hand with a colored ray. The ray’s color is linked to the user’s identity.
In MiddleVR, a wand is a set of virtual buttons and axis. Each hardware has its own mapping to the wand. In Improov, only three buttons and one axis are used : the interaction button, the navigation button, the menu button and the navigation axis.
|Interaction button||It is the main button used for interacting with the 3D environment and the GUI.|
|Navigation button||This button is used by some navigation techniques.|
|Menu button||This button spawns the floating menu in front of the wand.|
|Navigation axis||It is used by some of the navigation techniques to have a direction to apply to the user.|
In VR, the user can freely manipulate objects. By selecting an object and maintaining the trigger, the user can move the object around freely. The user can also navigate while holding the object. Collisions between objects may be highlighted and prevented.
To select and object, you have to point it with your wand and press the interaction button.
The tool’s interface is similar to the desktop application. For more details, please refer to the appropriate section.
The immersive Improov GUI is identical to the desktop GUI. However, the behaviors are different for some tools.
The top of the menu contains the date, information about the user’ and host’ IPs and a window resizing button.
The immersive menu is bound to the user. During navigation, it follows him. You can move around the menu by grabbing the top part and dragging it. You can also use the menu button to spawn the GUI in front of the wand. This part of the GUI contains :
- A reminder of the active tool in the top-left corner
- A quick access to the Improov settings (shown only when the menu is open)
- A delete button, allowing the user to remove any selected object from the scene. Note: deletion of an object is not yet undoable.
- An undo button, allowing the user to cancel the last command. A complete list of undoable commands can be found here.
The menu is made of 3 tabs : Home, Tools and Scene. They are displayed on the bottom of the menu. The fourth button is a shortcut to the Undo function.
Selection is the default tool in Improov. You can use this tool in the 3D view to select an object part or multiple parts.
All buttons can be found in the edit menu. Some help about the current selection is displayed in the console and in the Selected object count field in the Selection panel.
|Select All||Will select every nodes* of the scene (Can be quicly made using the
|Deselect All||Will clear the current selection.|
|Select parents||Will select every direct parent of all current select object.|
|Select children||Will select from the current node all children node and will discard every other intermediate*.|
|Invert selection||Will invert the current selection without all children of the selected object*.|
|Select All||Select all node in the scene.|
* For more information about node and parenting rules, please look at the scene graph differences from CAD section
|Show all||Show all hidden objects.|
|Show selection||Show the selected object and all it’s children*.|
|Hide selection||Hide the selected object and all it’s children*.|
|Show only selection||Show only the selected object and all it’s children and hide everything else.|
|Reframe selection||Will change the desktop camera position to make sure the object is visible directly in front of the camera.|
* For more information about node and parenting rules, please look at the scene graph differences from CAD section
In most CAD software, you will find the same definitions and words to describe a 3D scene:
- Body : The smallest possible 3D part of a model, under any body will be a 2D shape, a path, an extrusion…
- Part : This can be a single body or multiple bodies depending on the structure of you CAD hierarchy. Most of the time this represents a single object in the final product.
- Assembly : Multiple parts assembled together to form a more complex object. It can be an assembly of multiple assemblies.
Improov translates this CAD product tree in another hierarchy based on a tree of 3D nodes. This mean that every intermediate assembly, part or body will have a local transform and a parent with the same properties:
- If you move the parent node, all children will move like this node.
- If you change the color of a parent’s node, all children’s color will change.
- If you scale a parent it will scale its children.
Because we have a node representation, we have a notion of direct and indirect selection.
A node is directly selected if you have clicked on its 3D representation in the 3D view or if you have clicked on it in the hierarchy.
When a node is directly selected, its color is changed to match the color of the user who selected it. When the node is deselected, the color is reverted back to the parts original color.
If you select directly a node that has children, all its children will be indirectly selected. Nodes that are selected indirectly are not highlighted in the same way: only their outline is highlighted. Since parent nodes don’t have a 3d representation, indirect selection is used to represent nodes that will be affected by the Manipulation tool.
If you move a parent node, all the children node will move like this node.
Only the properties of directly selected nodes will be modified in the Properties view.
Selecting multiple object in the Desktop can be made using the
Ctrl key. Keep the key pressed until you’ve selected all the desired objects.
Selecting multiple object in VR can be activated with the checkox in the selection tool panel. You then add to the current selection all object you will designated until you click on an empty spce.
The multiselection can be done on the hierarchy and the result will be displayed in the properties panel. All shared field will have the shared value. If this is not the same value, each field will displayed a replacement value :
- Name will be replaced by
- Color will be a light grey (C0C0C).
- Position, orientation and scale will be empty.
Every action done in the properties of a multiselection will be made on every selected object. Be careful when editing multiple object at the same time !
The bounding box field will display the bounding box size of all the object it they where inside of a virtual box in the scene. This can be useful to know if all object are close to each other or not.
The transformation tool enables you to change the position and orientation of a selection or multiselection of nodes.
You can use the gizmos displayed in the 3D view or use the menu panel to be more precise.
- Reference option will enable you to change the referencial of the current gizmos. Either use local to lock the gizmos to the current orientation of the object, or use world to always align to the world.
- Origin option will enable you to chose between object center or pivot for the position of the manipulation gizmos.
- Translation vector will help you translate precisely the current selection.
- Rotation vector will help you rotate precisely the current selection.
- Reset is a simple tool to reinitialize the position of the current selection to it’s position when imported into the scene.
The Stretching tool is used to deform an object.
The widget is made up of 9 parts:
|Red arrows||Scale object along the X axis|
|Green arrows||Scale object along the Y axis|
|Blue arrows||Scale object along the Z axis|
|Red line||Measure the object along the X axis|
|Blue line||Measure the object along the Y axis|
|Green line||Measure the object along the Z axis|
In the desktop Improov application, the widget size is adjusted so that it is always the same size on screen, regardless of the distance from the user.
Note: Only one mesh can be scaled at a time. Only a node that has a visual representation can be scaled. This means only leaf nodes, not parent nodes, can be stretched
The Measure tool draws a ruler between two points in space and displays its length.
A measure is made up of two points attached to objects and a vector between them. By default, it displays only the distance (in meters) between these two points. If any of the objects moves, the measure will be updated. If one of them is hidden, the measure will be hidden too.
Several functions are available for this tool :
|Decomposition||Show the decomposition along the XYZ axis for all the measures. Disabled by default.|
|Show||Display or hide all existing measures.|
|Clear||Erase all measures.|
The axis decomposition of a measure generates 3 similar-looking colored lines. The red line represents the measurement value on the X axis. The green line is on the Y axis and the blue line is on Z.
This tool allows the user to provide a visual/audio feedback to all the other users on a particular element by clicking on it.
You have two type of POI :
- Temporary POI : Every time you place a new POI, it will remove the last one.
- Permanent POI : The POI you place will stay here unless you delete it.
The Cutting plane tool allows the user to spawn up to 3 section planes. A section plane cuts all the meshes in the positive Y direction. All meshes with the
Slice property enabled will be cut.
While using the tool, a mockup of a section plane is spawned in front of the mouse pointer. If any object is close by, the plane will be located on the object. The plane colors are, in order, red, green and blue. These colors are applied to the section of the meshes.
Clicking will spawn a section plane on the desired location. Then the user will be required to select the orientation of its Y axis. By moving the pointer around the plane, the user will be able to turn it adequately. The plane’s normal orientation is by default constrained to 6 directions (X,-X,Y,-Y,Z,-Z) but it can be tweaked by selecting the plane afterward and rotating it manually.
The Drawing tool allows the user to make drawings in the 3D environment.
Each drawing is colored by the user’s own color and shared with all the other users.
The tool is used by maintaining the left mouse button while moving the pointer. The drawing will appear at a constant distance from the user.
Existing drawings can be cleaned by clicking the button Clear.
This tool can be used to make 3D shapes. It is used by left clicking in the scene to create the shape point by point.
Options are available such as “Draw on objects” and “Draw on floor”.
It is possible to cancel the extrusion, or to remove the last point, by left clicking on their respective buttons.
The screenshot tool is useful to memorize elements or modifications of the environment by taking pictures of it. Pushing the button Take Picture will take a picture of the actual user’s view.
It is possible to specify the location in which the screenshosts are exported. Each image will be named following the pattern :
Improov_Screenshots_sessiondate_time/1.jpg. The number will be incremented for each screenshot in the session.
Improov comes in different editions. Please look at the website for more information about each edition limitations.
This is what the license management window looks like:
You have several choices:
- Start a Pro Trial for 7 days.
- Activate a license.
- Use a license server license server.
- Close the current wizard and do not modify anything.
If you already have a license key for this computer, please select
Key text entry please paste or write your license key, then press Activate. If the activation succeeded, the window will close and you can start using Improov. If the installation failed, please use check the manual activation section.
Click on “Website activation”.
If your computer has an internet access, enter you activation code then click “Go to website”. If not, use an another computer that has internet access and go to the License Activation Center (http://license.middlevr.com):
After entering the activation code in the Improov “Website Activation” dialog or directly on the website, you should arrive on this page:
Now enter the HostID values on the website. Note: Please enter the entire HostID text after the “=” character, including the trailing dot character if there is one.
Click the “Activate” button on the website, then when the license activation has finished, click the “Download” button to download your license file. Transfer the license file to the computer running Improov you used a different computer.
In Improov, click on “Load license” and select your license file.
The following steps describe how to easily install a license server on Windows using the LM-X End-user Tools (Windows only).
During the installation process, make sure that “Install LM-X server” is checked.
Browse to find our
liblmxvendor.dllin the Improov installation path
Keep “Install LM-X license server as a service” checked.
After the installation, open the configuration file
lmx-serv.cfg from the LM-X tool installation folder (for example “C:\Program Files\ X-Formation\LM-X End-user Tools 4.8.13 x64\-serv.cfg”).
Set the value LICENSE_FILE to the path leading to your floating/network license file.
You can choose your TCP_LISTEN_PORT if needed.
Make sure to open this port (TCP and UDP) in your firewall, both on the license server machine and the client machines.
If there are any problems running the license server, the log file will indicate the cause of the problem. You can find the log file at the path indicated in the configuration file value LOG_FILE. If still not found, check to make sure that the path is correct.
After installing the LM-X End-user Tools and the license server, run the LM-X Configuration Tool.
- Follow the Manual Activation section above.
- Go to the MiddleVR license activation website.
- Use the activation key to login and the add your HostID recover from the previous software (Example: “ETHERNET=D8CB8AC31A80,HARDDISK=Z4Z1515P”)
- Click on “Activate” and download the license file.
- Go to
C:\Program Files\X-Formation\LM-X End-user Tools 4.8.10 x64
- Copy the license in the folder and rename it to “iminvr.lic”
- Restart the computer and now the license server should be running on the 6200 port.
- If necessary, contact your system administrator to make sure the port 6200 (TCP and UDP) is opened.
On the client machines, you can either:
use the License configuration tool
Improov/binfolder in the Start menu
In the Client Application License Path tab, specify the network license server in the form of: firstname.lastname@example.org. You can also use a network name instead of an IP address.
or, set the LMX_LICENSE_PATH environment variable to the network license server, in the same form.
|.3dxml||format 3dxml en ascii||/|
|.gltf||GL Transmission Format||Versions 1.0 and 2.0|
|.glb||GL Binary||Versions 1.0 and 2.0|
|.dae||ISO 17506 Collada/Dae : COLLAborative Design Activity||/|
|.stl||STereoLithography made by 3D Systems||/|
|.ifc||Industry Fundation Classes||/|
|.fbx||FilmBoX Autodesk||Versions 2013 to 2016|
|.igs||ASME Y14.26M IGES : Initial Graphics Exchange Specification||Versions 5.2 and 5.3|
|.vrml, .wrl||Virtual Reality Markup Language||/|
|.step, .stp, .p21||ISO 10303-21 STEP : Standard For the Exchange of Product model data||Versions 203/214/242|
|.CATPart||CATIA V5: CATia file PART||Versions R10 to R26|
|.CATProduct||CATIA V5: CATia file PRODUCT||Versions R10 to R26|
|.3dxml||CATIA V6: format 3dxml en binaire||Versions 2011X to 2013X|
|.sldprt||SoLiDworks PaRT file||Versions 1999 to 2018|
|.sldasm||SoLiDworks ASseMblage||Versions 1999 to 2018|
|.jt||Siemens NX: Jupiter Tessellation||Versions 7.0 to 10.2|
|.prt., .prt|PTC Creo: Pro/Engineer part files|Versions 13 to Creo 4| |.asm., .asm||PTC Creo: Pro/Engineer assembly files||Versions 13 to Creo 4|
|.ipt||Inventor part files||Version all to 2017|
|.iam||Inventor assembly files||Version all to 2017|
|.dwg||DraWinG by Open Design Alliance||Version DWG 2010|
|File path||Specify the path of the environment you want to import.|
|Translation||Apply the given translation to the environment after it has been imported.|
|Rotation||Apply the given rotation to the environment after it has been imported.|
|Scale factor||Apply the given scale factor to the environment after it has been imported.|
You need to make a MiddleVR configuration that will have the same number of nodes as the number of tracked points by your system. For example, if you have the following DTrack nodes:
You will need to make a MiddleVR configuration including 4 nodes like this (names can be whatever you want, same as the DTrack nodes or not):
Be sure to save this configuration file in a folder that you will remember (it will be needed later).
188.8.131.52 184.108.40.206: Targets.xml
This file is used to link nodes from the MiddleVR configuration to body parts before sending information to IPSI (default location : C:/Program Files/MiddleVR/Improov/bin/targets.xml). It contains three different types of data:
- Targets: Link each body part to a custom ID and define its weight
- Manipulation device: Define the node having the given custom id has the one used to manipulate
- Fake Targets: Link each MiddleVR node to a custom ID
Guidelines to modify the file:
- Target names are not to be modified
- Target custom IDs and weights can be changed
- The manipulation device id can be changed
- There should be one Fake Target for each node in the MiddleVR configuration
About custom ids:
- Custom IDs have to be unique when above or equal to 0
- Custom IDs are used to link body parts and MiddleVR nodes together
- To enable a body part, give it a positive (0 or more) custom ID
- To disable a body part, just give it the -1 custom ID
Let’s say that you want to use the following MiddleVR configuration nodes:
Then you have to:
- Set an ID for every body part that has a corresponding node in the MiddleVR Configuration
- Disable every unused part by setting an ID of -1
- Set the right custom ID for the manipulation device (1 in our case to use the HandNode as the manipulation device)
- Add two Fake Targets, one named ‘HeadNode’ with the custom ID 0, and another named ‘HandNode’ with the custom ID 1.
Here is an example of the properly setup file:
[...] <Targets> <Target> <m_name>Hips</m_name> <m_id>-1</m_id> <m_weight>10.0</m_weight> </Target> <Target> <m_name>LeftUpperLeg</m_name> <m_id>-1</m_id> <m_weight>1</m_weight> </Target> <Target> <m_name>RightUpperLeg</m_name> <m_id>-1</m_id> <m_weight>1</m_weight> </Target> <Target> <m_name>LeftLowerLeg</m_name> <m_id>-1</m_id> <m_weight>-1.0</m_weight> </Target> <Target> <m_name>RightLowerLeg</m_name> <m_id>-1</m_id> <m_weight>-1.0</m_weight> </Target> <Target> <m_name>LeftAnkle</m_name> <m_id>-1</m_id> <m_weight>3.0</m_weight> </Target> <Target> <m_name>RightAnkle</m_name> <m_id>-1</m_id> <m_weight>3.0</m_weight> </Target> <Target> <m_name>Neck</m_name> <m_id>0</m_id> <m_weight>2.0</m_weight> </Target> <Target> <m_name>LeftUpperArm</m_name> <m_id>-1</m_id> <m_weight>2.0</m_weight> </Target> <Target> <m_name>RightUpperArm</m_name> <m_id>-1</m_id> <m_weight>2.0</m_weight> </Target> <Target> <m_name>LeftLowerArm</m_name> <m_id>-1</m_id> <m_weight>-1.0</m_weight> </Target> <Target> <m_name>RightLowerArm</m_name> <m_id>-1</m_id> <m_weight>-1.0</m_weight> </Target> <Target> <m_name>LeftHand</m_name> <m_id>-1</m_id> <m_weight>20.0</m_weight> </Target> <Target> <m_name>RightHand</m_name> <m_id>1</m_id> <m_weight>20.0</m_weight> </Target> <Target> <m_name>LeftToes</m_name> <m_id>-1</m_id> <m_weight>-1.0</m_weight> </Target> <Target> <m_name>RightToes</m_name> <m_id>-1</m_id> <m_weight>-1.0</m_weight> </Target> <Target> <m_name>RightShoulder</m_name> <m_id>-1</m_id> <m_weight>1.0</m_weight> </Target> <Target> <m_name>LeftShoulder</m_name> <m_id>-1</m_id> <m_weight>1.0</m_weight> </Target> <Target> <m_name>Lumbar1</m_name> <m_id>-1</m_id> <m_weight>1.0</m_weight> </Target> </Targets> <m_manipulationDeviceId>1</m_manipulationDeviceId> <FakeTargets> <FakeTarget> <m_name>HeadNode</m_name> <m_id>0</m_id> </FakeTarget> <FakeTarget> <m_name>HandNode</m_name> <m_id>1</m_id> </FakeTarget> </FakeTargets> [...]
Once you are done with the previous steps, you can go back to Improov and start a first person simulation. Check the dedicated section ‘User avatar’ to use it.
IMPROOV allows to perform ergonomics assessments on virtual humans (see section Advanced Simulation for an insight into virtual humans). Ergonomics assessments are based on the RULA (Rapid Upper Limb Assessment) method, and may be performed in real time to help identifying ergonomics issues and optimizing the work place. Assessments results may be visualized as colored limbs on the virtual human, for a quick overview, or as grades for a more in-depth analysis.
To perform an ergonomics assessment:
Insert virtual humans. This can be the user avatar and/or articulated mannequins.
On any connected desktop client, activate ergonomics assessment tool through
Menu > Ergonomics > RULA
On the newly open RULA window, click on
Then click on
Pick mannequin, and click on the desired virtual human.
The mannequin limbs are coloured from green (good posture) to red (bad posture), and grades are displayed in the ergonomics assessment window.
For a more in-depth analysis, click on the
Save posture button to take a snapshot of the posture of the virtual human. A new window opens, where context information may be entered. Once completed, click on the
Saved postures may be edited by clicking the
Edit posture button. Navigate through postures with the
Saved postures may be exported in Excel 2010 (.xlsx) format by clicking on the
Save to Excel button and specifying a file in the files browser.
Commands are actions which are sent to the server. The list of all the commands executed by all the users during a session is called the Command stack of the scene. When a user connects to the server, all of these commands are applied locally.
They can be stored in scene files, shared among other users and some of these can be undone.
A stored command means that it will endure after loading the scene again or after connection. Temporary commands (such as pointing) are not stored. All commands which have a lasting effect on the scene’s state are stored.
A shared command has effects which impacts all users, such as loading a 3D model. Saving the scene is not a shared command.
An undoable command has effects which can be reverted. For example renaming an object can be undone.
Here is a summary of the actions that can be made in Improov:
|Importing a model||No||Yes||Yes|
|Deleting an object||No||Yes||Yes|
|Selecting an object||No||Yes||No|
|Saving a scene||No||No||No|
|Loading a scene||No||No||No|
|Translating or scaling an object||Yes||Yes||Yes|
|Modifying a property||Yes||Yes||Yes|
|Clearing the drawings||No||Yes||Yes|
|Removing last extrusion point||No||No||Yes|
|Making a measure||Yes||Yes||Yes|
|Clearing the measures||No||Yes||Yes|
|Showing the measures||No||No||No|
|Displaying the axis decomposition of a measure||No||No||No|
|Taking a picture||No||No||No|
|Creating a section plane||No||Yes||Yes|
|Connecting to a server||No||Yes||Yes|
|Disconnecting from a server||No||Yes||Yes|
|Managing the GUI||No||No||No|
|Changing a widget’s reference axis||No||No||No|
|Changing anything in the settings||No||No||No|
Recognized loglevels are:
Only messages describing the actions taken in Improov (such as connection/disconnection or notifications present in the console) are stored.
Error messages are also included in the logs.
Notifications about potential problems will be stored in the logs.
Details about the low-level behavior of Improov (such as message exchange, visible in the server console) will be stored.
Every notification will be stored.
Once installed you can start Improov via different methods.
- At the end of the installation, you can check the option to start Improov right after closing the installer.
- Double click on the shortcut that was created on your desktop.
Improov will be installed in the
Program Files/Improov folder (
%programfiles%/Improov). The Improov executable and all the tools shipped with it can be found in the folder
Program Files/Improov/bin folder (
You can run
improov.exe to start Improov in different modes and with different parameters.
||Removes rendering and input from the Improov instance. Required for standalone servers.|
||Specifies a custom configuration file to use in Improov. This will automatically set the client as immersive.|
||Sets an IP address which holds the standalone server the client must connect to. When given this argument, the client will automatically try to connect to this external server. If it fails, it will open the getting started.|
||Sets the IP and port at which to find a license server. By default the ip@port is 127.0.0.1@6200. This is only required if you are using floating licenses and have not specified this address in your environment variables. This argument will be transmitted to any local standalone server spawned. Note: In the case of clusters, this argument will be transmitted to the clients.|
||Sets a name for the logfile. Logs are stored in %tmp%/MiddleVR/. By default, the log file is “Improov_client.log”.|
||Specifies the level of importance of the logs stored in the logfile.|
||Sets a custom password. This password is used when connecting to an external server. By default the password used comes from the user preferences. Note: Since any process can see the active processes with their command-line arguments, please be careful when transmitting passwords manually. When launched, Improov will encrypt the password when transmitting to other instances it creates.|
||Sets a custom port. This port is used to send data to the server. It is also the port used by any local server created by this instance of Improov to receive data. By default this port is 25000 but can be modified in the user preferences.|
||Improov will act as a standalone server.|
||The Improov client will not start a local server and will simply open up the connection popup.|
||Stop Improov from initializing graphical devices. Required for standalone servers.|
Improov - desktop.bat includes all the command line parameters, feel free to modify it for your usage.
The batch file
Improov - server.bat will create a minimized Improov server window. The file contains command line parameters to help you customise a standalone server for your usage.
MiddleVR is the plugin used to run Improov on non-HMD VR systems such as CAVEs, PowerWalls etc.
MiddleVR tools can be found in the folder
Program Files/Improov/bin folder (
- Run `MiddleVRConfig.exe` to start MiddleVR Configuration from the Improov installation folder. - Run `MiddleVRDaemon.exe` to start the MiddleVR Daemon (Useful for cluster system).
For more information see the MiddleVR documentation: https://www.middlevr.com/doc/middlevr-for-unity/current/
Installation of the given .exe has to be made in the following order:
- Install IPSI Service Manager 3.0.2 (IPSI_SM_3_0_2)
- Install IPSI Server 2.20.7 (IPSI_SERVER_R2_20_7)
This version of the server is absolutely mandatory, any other would crash when used with Improov.
The license we sent you should be saved in a folder you remember (this information will be needed later).
Now that IPSI is installed and the license saved, we need to setup IPSI for it to be able to communicate with Improov:
- Open the IPSI Device Configurator (location by default : Program Files/HAPTION/IPSI/Server/V2.20/bin/DEVICE_CONFIGURATOR.exe)
We need to create a new device with the following information:
- Kind: DTRACK
- The name is automatically set when picking the kind of device
- Address: 5001
- Position: X=0, Y=0, Z=0
- Orientation: X=0, Y=90, Z=90
It is important to check that the port 5001 is not used by any other application on your system, otherwise IPSI will not be able to communicate with Improov. Before pursuing, check that your device settings look like the following ones:
Press ‘Add’, you should get a result looking like the following picture :
- Open Improov in VR Mode (The mannequin mode cannot be toggled from the desktop view)
- Select Mannequin
- Press ‘Add Mannequin’ and ‘Start Simulation’
- Improov will be blocked in VR so you need to look at your desktop to find the following window
- Pick ‘Specify the license file’
- Once you have entered the path to your license, press ‘Next’ or ‘Confirm’ until the process is done
You will see a virtual human appear in Improov, meaning that you have successfully activated your IPSI License and Server. The next time you start Improov these functions will be immediately available.
- Screen dimension, relative position and shape.
- Projector type.
- Connection type to computer.
- Tracking solution used and configuration information (rigidbody name, port used and tracking system origin).
- Processor type.
- Graphic card number and type.
- Windows version (with installed service pack version).
- Graphic driver version.
- Warping solution used.
- Cluster organisation:
- Computer nodes count, name and IP (master and slaves)
- Viewport organisation on each computer.
- Admin account is required to install MiddleVR, Improov, IPSI (for physics), LMX License Server and some update of
- Access to firewall for firewall configuration
For a complete installation, you need to validate multiple steps in the correct order:
- Validate that the hardware and driver installation is working properly first:
- If you run the tool “OGLPlane.exe” that comes with MiddleVR, you should see a wireframe paper plane in stereoscopy. If this is not working please make sure that you did all the necessary configuration in your graphics drivers and that your GPU is compatible with Improov for Cave.
- If you start MiddleVR Config, you should be able to add the correct tracking driver and see the correct position in the 3D nodes view (please look a the MiddleVR documentation for more information about cluster).
- If everything is working so far, please install MiddleVR (for more information please look at the MiddleVR documentation).
- When everything is working, please install Improov on every node.
We recommand to use MiddleVR or create a batch file to automatically connect to an already existing Improov server as every restart of a cluster take some time (Starting Improov with command line arguments).
Improov encrypts its connections using the standard TLS (Transport Layer Security) version 1.2 protocol.
By default, the Improov server generates a temporary certificate and RSA key pair each time it is started, but you can specify a custom certificate and key.
Note: The current version of Improov does not verify the server identity and only uses TLS for encryption purposes.
You will have to put the two following files, in the OpenSSL PEM format, into the
bin\server folder of your Improov installation path: -
cert.pem: the server certificate, -
key.pem: the associated key.
Here is an example of generating a self-signed certificate and RSA key pair using OpenSSL on the windows command-line (We provide an OpenSSL executable in the folder
bin\openssl of your Improov installation path):
openssl req -config openssl.cnf -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 10000 -out cert.pem