MergeVectors
Apply a merge operation to combine several inputs
Templates:
vector<RigidCoord2d>vector<RigidCoord3d>vector<RigidDeriv2d>vector<RigidDeriv3d>vector<Vec2I>vector<Vec2d>vector<Vec3d>vector<Vec4d>vector<bool>vector<d>vector<i>
Target: Sofa.Component.Engine.Generate
namespace: sofa::component::engine::generate
parents:
DataEngine
Data:
| Name | Description | Default value |
|---|---|---|
| name | object name | unnamed |
| printLog | if true, emits extra messages at runtime. | 0 |
| tags | list of the subsets the objet belongs to | |
| bbox | this object bounding box | |
| componentState | The state of the component among (Dirty, Valid, Undefined, Loading, Invalid). | Undefined |
| listening | if true, handle the events, otherwise ignore the events | 0 |
| nbInputs | Number of input vectors | 2 |
| output | Output vector |
Links:
| Name | Description |
|---|---|
| context | Graph Node containing this object (or BaseContext::getDefault() if no graph is used) |
| slaves | Sub-objects used internally by this object |
| master | nullptr for regular objects, or master object for which this object is one sub-objects |
Examples
Component/Engine/Generate/MergeVectors.scn
<?xml version="1.0" ?>
<Node name="root" dt="0.05" showBoundingTree="0" gravity="0 -9 1">
<RequiredPlugin name="Sofa.Component.Engine.Generate"/> <!-- Needed to use components [MergeVectors] -->
<RequiredPlugin name="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [MeshOBJLoader] -->
<RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
<RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
<VisualStyle displayFlags="showVisual showBehaviorModels" />
<DefaultAnimationLoop/>
<Node name="mesh">
<MeshOBJLoader name="mesh1" filename="mesh/raptor_35kp.obj"/>
<MeshOBJLoader name="mesh2" filename="mesh/snake_body.obj"/>
<MergeVectors template="Data<double>" name="mergedPositions" nbInputs="2" input1="@mesh1.position" input2="@mesh2.position" />
<MechanicalObject template="Vec3" position="@mergedPositions.output" showObject="True" />
</Node>
</Node>
def createScene(rootNode):
root = rootNode.addChild('root', dt="0.05", showBoundingTree="0", gravity="0 -9 1")
root.addObject('RequiredPlugin', name="Sofa.Component.Engine.Generate")
root.addObject('RequiredPlugin', name="Sofa.Component.IO.Mesh")
root.addObject('RequiredPlugin', name="Sofa.Component.StateContainer")
root.addObject('RequiredPlugin', name="Sofa.Component.Visual")
root.addObject('VisualStyle', displayFlags="showVisual showBehaviorModels")
root.addObject('DefaultAnimationLoop')
mesh = root.addChild('mesh')
mesh.addObject('MeshOBJLoader', name="mesh1", filename="mesh/raptor_35kp.obj")
mesh.addObject('MeshOBJLoader', name="mesh2", filename="mesh/snake_body.obj")
mesh.addObject('MergeVectors', template="Data<double>", name="mergedPositions", nbInputs="2", input1="@mesh1.position", input2="@mesh2.position")
mesh.addObject('MechanicalObject', template="Vec3", position="@mergedPositions.output", showObject="True")