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")