User Tools

Site Tools


visual3d:documentation:third-party:xsens:xsens_prop

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
visual3d:documentation:third-party:xsens:xsens_prop [2024/07/17 15:43] – removed sgrangervisual3d:documentation:third-party:xsens:xsens_prop [2024/07/17 15:46] (current) – created sgranger
Line 1: Line 1:
 +====== 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:
 +
 +<code>
 +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=
 +;
 +</code>
 +
 +=== 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:
 +
 +<code>
 +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
 +;
 +</code>
 +
 +==== 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:
 +
 +<code>
 +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=
 +;
 +</code>
 +
 +
  
visual3d/documentation/third-party/xsens/xsens_prop.1721230996.txt.gz · Last modified: 2024/07/17 15:43 by sgranger