====== XSens Prop ======
===== Introduction =====
\\
Visual3Dv2020.## supports reading MVNX files with one prop sensor. The sensor will be loaded automatically as a segment (ex. PR1). If more props are required to process your data, please contact C-Motion. **When using an Xsens prop in Visual3D, all information is loaded automatically and no further steps are required.**\\
\\
You can however choose to load a graphics object or adjust the location of the prop segment. **This wiki page will explain the steps in the pipeline so that you can modify the script for your own data.**\\
==== Sample Data ====
**[[https://www.has-motion.com/download/examples/Xsens/Xsens_Prop_Example.zip|Sample data can be downloaded here]].**
- Save the sword.obj file in your [[Visual3D:Tutorials:Modeling:Fun_With_Graphics#Finding_your_Graphics_Folder|Models folder]]
- Open the MVNX file:
- File -> Open
- Browse for MVNX file
- Notice all the information for the prop signal is loaded and the segment coordinate system is displayed in the 3D viewer
- Run the pipeline:
- Pipeline -> Workshop
- Open Pipeline
- Browse for Sword.v3s
- Execute Pipeline
**The pipeline will:**
* Adjust the position of the prop so that it is fixed to the center of mass of the hand
* Load the sword graphic object
* Color the sword red
==== Segment Properties ====
The graphics object and kinetic segment properties can be defined using the Segment Properties command. In this example, the sword graphic object is being associated with the prop:
Set_Segment_Properties
/CALIBRATION_FILE=
/SEGMENT_NAME=PR1
! /KINEMATIC_ONLY=
! /MASS=
! /CG_FROM_PROX_AXIAL=
! /CG_FROM_PROX_ML=
! /CG_FROM_PROX_AP=
! /INERTIA_XX=
! /INERTIA_YY=
! /INERTIA_ZZ=
! /AP_DIRECTION=
! /AXIAL_DIRECTION=
/MODEL_FILE=sword.obj
! /MATERIAL_FILE=
! /GRAPHICS_ROT_X=
! /GRAPHICS_ROT_Y=
! /GRAPHICS_ROT_Z=
/GRAPHICS_SCALE_X=2.5
/GRAPHICS_SCALE_Y=2.5
/GRAPHICS_SCALE_Z=2.5
! /GRAPHICS_TRANSLATE_X=
! /GRAPHICS_TRANSLATE_Y=
! /GRAPHICS_TRANSLATE_Z=
;
=== Graphics Object ===
In Visual3D graphics objects are just for visual affect and can be adjusted as needed. [[Visual3D:Tutorials:Modeling:Fun_With_Graphics|Graphics objects are described here, which will also explain how to store the graphics object in the correct location on your computer]].
=== Kinetic Properties ===
Set the segment to kinetic (/KINMEATIC_ONLY=FALSE), set the segment mass, and inertial properties. These settings will be specific to whatever your prop segment represents.
==== Adjusted Position ====
**A.** By default, Visual3D uses the position data from the MVNX file. In this example, you will notice that the hand and the sword are close at Frame 1.\\
**B.** However, at the end of the file there is an offset between the the sword and the hand segment.\\
**C.** By overwriting the sword position with the hand center of gravity signal, the sword position is then moved to the hand, which may be a more realistic location since the prop is in the person's hand.\\
| __**A. Frame 1:**__\\ \\ {{:Xsens_PropPos_Frame1.png}} | __**B. Last Frame:**__\\ \\ {{:Xsens_PropPos_FrameLast.png}} | __**C. Last Frame Adjusted:**__\\ \\ {{:Xsens_PropPos_FrameLastAdjusted.png}} |
The position data for the prop is stored in BODY::ORIGINAL::PR1_POS. By storing data in BODY::PROCESSED::PR1_POS, the processed signal will be used instead. An example of using the hand center of gravity instead of the data original signal would be:
Evaluate_Expression
/EXPRESSION=KINETIC_KINEMATIC::RHA::CGPOS
! /SIGNAL_TYPES=
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
/RESULT_TYPES=BODY
/RESULT_FOLDERS=PROCESSED
/RESULT_NAME=PR1_POS
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;
==== Adjust Graphics Object Color within Visual3D ====
This step would be done just for graphics. Typically an OBJ file has a corresponding MTL file which contains the color information. However, you can also add color to a segment graphic in Visual3D using the [[Visual3D:Documentation:Pipeline:Other_Commands:Map_Object_Color_to_Signal_Value|Map_Object_Color_to_Signal_Value]] command. The example below colors the sword graphic red:
Map_Object_Color_to_Signal_Value
/OBJECT_NAME=PR1
/SIGNAL_TYPES=KINETIC_KINEMATIC
/SIGNAL_FOLDER=PR1
/SIGNAL_NAMES=CGPOS
! /COMPONENT_SEQUENCE=X
/MIN_COLORS=RED
/INNER_COLORS=RED
/MAX_COLORS=RED
! /INNER_COLOR_INDEX=127
/MAX_COLOR_INDEX=256
/MIN_VALUES=0
/MAX_VALUES=200
! /REMOVE_EXISTING_COLORIZATIONS=FALSE
! /COLOR_MAP_FILE_NAMES=
! /COLOR_MAP_FILES=
;