VisualPointCloud
Render a point cloud.
Rigid3d
Templates:
- Rigid3d
Target: Sofa.Component.Visual
namespace: sofa::component::visual
parents:
- VisualModel
Data
| Name | Description | Default value | 
|---|---|---|
| name | object name | unnamed | 
| printLog | if true, emits extra messages at runtime. | 0 | 
| tags | list of the subsets the object 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 | 
| enable | Display the object or not | 1 | 
| position | The position of the points to display | |
| pointSize | The size of the points and frames | 1 | 
| sphereRadius | The radius list of the spheres | |
| color | The color of the points | |
| indicesScale | The scale of the indices | 1 | 
| indicesColor | The color of the indices | |
| Visualization | ||
| drawMode | The draw mode: - Point: Coordinates are displayed with points - Sphere: Coordinates are displayed using spheres - Frame: Coordinates are displayed using oriented frames | |
| showIndices | Show the indices of the points | 0 | 
Links
| Name | Description | Destination type name | 
|---|---|---|
| context | Graph Node containing this object (or BaseContext::getDefault() if no graph is used) | BaseContext | 
| slaves | Sub-objects used internally by this object | BaseObject | 
| master | nullptr for regular objects, or master object for which this object is one sub-objects | BaseObject | 
Vec3d
Templates:
- Vec3d
Target: Sofa.Component.Visual
namespace: sofa::component::visual
parents:
- VisualModel
Data
| Name | Description | Default value | 
|---|---|---|
| name | object name | unnamed | 
| printLog | if true, emits extra messages at runtime. | 0 | 
| tags | list of the subsets the object 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 | 
| enable | Display the object or not | 1 | 
| position | The position of the points to display | |
| pointSize | The size of the points and frames | 1 | 
| sphereRadius | The radius list of the spheres | |
| color | The color of the points | |
| indicesScale | The scale of the indices | 1 | 
| indicesColor | The color of the indices | |
| Visualization | ||
| drawMode | The draw mode: - Point: Coordinates are displayed with points - Sphere: Coordinates are displayed using spheres | |
| showIndices | Show the indices of the points | 0 | 
Links
| Name | Description | Destination type name | 
|---|---|---|
| context | Graph Node containing this object (or BaseContext::getDefault() if no graph is used) | BaseContext | 
| slaves | Sub-objects used internally by this object | BaseObject | 
| master | nullptr for regular objects, or master object for which this object is one sub-objects | BaseObject | 
Examples
VisualPointCloud.scn
<Node name="root" gravity="0 -9.81 0" dt="0.01">
    <Node name="plugins">
        <RequiredPlugin name="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
        <RequiredPlugin name="Sofa.Component.Engine.Select"/> <!-- Needed to use components [BoxROI] -->
        <RequiredPlugin name="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [BTDLinearSolver,EigenSimplicialLDLT] -->
        <RequiredPlugin name="Sofa.Component.LinearSystem"/> <!-- Needed to use components [ConstantSparsityPatternSystem] -->
        <RequiredPlugin name="Sofa.Component.Mass"/> <!-- Needed to use components [UniformMass] -->
        <RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
        <RequiredPlugin name="Sofa.Component.SolidMechanics.FEM.Elastic"/> <!-- Needed to use components [BeamFEMForceField,HexahedronFEMForceField] -->
        <RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
        <RequiredPlugin name="Sofa.Component.Topology.Container.Constant"/> <!-- Needed to use components [MeshTopology] -->
        <RequiredPlugin name="Sofa.Component.Topology.Container.Grid"/> <!-- Needed to use components [RegularGridTopology] -->
        <RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [LineAxis,VisualGrid,VisualPointCloud,VisualStyle] -->
    </Node>
    <DefaultAnimationLoop parallelODESolving="true"/>
    <DefaultVisualManagerLoop name="visualLoop"/>
    <VisualStyle displayFlags="showVisual" />
    <VisualGrid name="grid"/>
    <LineAxis size="@grid.size"/>
    <Node name="3d_point">
        <EulerImplicitSolver name="odesolver" rayleighStiffness="0.1" rayleighMass="0.1" />
        <ConstantSparsityPatternSystem template="CompressedRowSparseMatrixd" name="A"/>
        <EigenSimplicialLDLT template="CompressedRowSparseMatrixd"/>
        <MechanicalObject name="DoFs" template="Vec3" />
        <UniformMass name="mass" totalMass="320" />
        <RegularGridTopology name="grid" nx="4" ny="4" nz="10" xmin="-5" xmax="-3" ymin="2" ymax="5" zmin="0" zmax="9" />
        <BoxROI name="box" box="-6 1 -0.0001  -2 6 0.0001"/>
        <FixedProjectiveConstraint indices="@box.indices" />
        <HexahedronFEMForceField name="FEM" youngModulus="4000" poissonRatio="0.3" method="large" />
        <VisualPointCloud position="@DoFs.position" pointSize="10" drawMode="Point" color="navy"/>
    </Node>
    <Node name="3d_sphere">
        <EulerImplicitSolver name="odesolver" rayleighStiffness="0.1" rayleighMass="0.1" />
        <ConstantSparsityPatternSystem template="CompressedRowSparseMatrixd" name="A"/>
        <EigenSimplicialLDLT template="CompressedRowSparseMatrixd"/>
        <MechanicalObject name="DoFs" template="Vec3" />
        <UniformMass name="mass" totalMass="320" />
        <RegularGridTopology name="grid" nx="4" ny="4" nz="10" xmin="-5" xmax="-3" ymin="-5" ymax="-2" zmin="0" zmax="9" />
        <BoxROI name="box" box="-6 -6 -0.0001  -2 -1 0.0001"/>
        <FixedProjectiveConstraint indices="@box.indices" />
        <HexahedronFEMForceField name="FEM" youngModulus="4000" poissonRatio="0.3" method="large" />
        <VisualPointCloud position="@DoFs.position" drawMode="Sphere" sphereRadius="0.1" color="lime"/>
    </Node>
    <Node name="rigid3">
        <EulerImplicitSolver rayleighStiffness="0" printLog="false" rayleighMass="0.1"/>
        <BTDLinearSolver template="BTDMatrix6d"/>
        <MechanicalObject template="Rigid3" name="DoFs" position="0 0 1 0 0 0 1  1 0 1 0 0 0 1  2 0 1 0 0 0 1  3 0 1 0 0 0 1" />
        <MeshTopology name="lines" lines="0 1 1 2 2 3" />
        <FixedProjectiveConstraint name="FixedProjectiveConstraint" indices="0" />
        <UniformMass totalMass="4" />
        <BeamFEMForceField name="FEM" radius="0.05" radiusInner="0" youngModulus="20000000" poissonRatio="0.49"/>
        <VisualPointCloud position="@DoFs.position" pointSize="1" template="Rigid3" drawMode="Frame"/>
    </Node>
</Node>
def createScene(root_node):
   root = root_node.addChild('root', gravity="0 -9.81 0", dt="0.01")
   plugins = root.addChild('plugins')
   plugins.addObject('RequiredPlugin', name="Sofa.Component.Constraint.Projective")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.Engine.Select")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.LinearSolver.Direct")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.LinearSystem")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.Mass")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.ODESolver.Backward")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.SolidMechanics.FEM.Elastic")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.StateContainer")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.Topology.Container.Constant")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.Topology.Container.Grid")
   plugins.addObject('RequiredPlugin', name="Sofa.Component.Visual")
   root.addObject('DefaultAnimationLoop', parallelODESolving="true")
   root.addObject('DefaultVisualManagerLoop', name="visualLoop")
   root.addObject('VisualStyle', displayFlags="showVisual")
   root.addObject('VisualGrid', name="grid")
   root.addObject('LineAxis', size="@grid.size")
   3d_point = root.addChild('3d_point')
   3d_point.addObject('EulerImplicitSolver', name="odesolver", rayleighStiffness="0.1", rayleighMass="0.1")
   3d_point.addObject('ConstantSparsityPatternSystem', template="CompressedRowSparseMatrixd", name="A")
   3d_point.addObject('EigenSimplicialLDLT', template="CompressedRowSparseMatrixd")
   3d_point.addObject('MechanicalObject', name="DoFs", template="Vec3")
   3d_point.addObject('UniformMass', name="mass", totalMass="320")
   3d_point.addObject('RegularGridTopology', name="grid", nx="4", ny="4", nz="10", xmin="-5", xmax="-3", ymin="2", ymax="5", zmin="0", zmax="9")
   3d_point.addObject('BoxROI', name="box", box="-6 1 -0.0001  -2 6 0.0001")
   3d_point.addObject('FixedProjectiveConstraint', indices="@box.indices")
   3d_point.addObject('HexahedronFEMForceField', name="FEM", youngModulus="4000", poissonRatio="0.3", method="large")
   3d_point.addObject('VisualPointCloud', position="@DoFs.position", pointSize="10", drawMode="Point", color="navy")
   3d_sphere = root.addChild('3d_sphere')
   3d_sphere.addObject('EulerImplicitSolver', name="odesolver", rayleighStiffness="0.1", rayleighMass="0.1")
   3d_sphere.addObject('ConstantSparsityPatternSystem', template="CompressedRowSparseMatrixd", name="A")
   3d_sphere.addObject('EigenSimplicialLDLT', template="CompressedRowSparseMatrixd")
   3d_sphere.addObject('MechanicalObject', name="DoFs", template="Vec3")
   3d_sphere.addObject('UniformMass', name="mass", totalMass="320")
   3d_sphere.addObject('RegularGridTopology', name="grid", nx="4", ny="4", nz="10", xmin="-5", xmax="-3", ymin="-5", ymax="-2", zmin="0", zmax="9")
   3d_sphere.addObject('BoxROI', name="box", box="-6 -6 -0.0001  -2 -1 0.0001")
   3d_sphere.addObject('FixedProjectiveConstraint', indices="@box.indices")
   3d_sphere.addObject('HexahedronFEMForceField', name="FEM", youngModulus="4000", poissonRatio="0.3", method="large")
   3d_sphere.addObject('VisualPointCloud', position="@DoFs.position", drawMode="Sphere", sphereRadius="0.1", color="lime")
   rigid3 = root.addChild('rigid3')
   rigid3.addObject('EulerImplicitSolver', rayleighStiffness="0", printLog="false", rayleighMass="0.1")
   rigid3.addObject('BTDLinearSolver', template="BTDMatrix6d")
   rigid3.addObject('MechanicalObject', template="Rigid3", name="DoFs", position="0 0 1 0 0 0 1  1 0 1 0 0 0 1  2 0 1 0 0 0 1  3 0 1 0 0 0 1")
   rigid3.addObject('MeshTopology', name="lines", lines="0 1 1 2 2 3")
   rigid3.addObject('FixedProjectiveConstraint', name="FixedProjectiveConstraint", indices="0")
   rigid3.addObject('UniformMass', totalMass="4")
   rigid3.addObject('BeamFEMForceField', name="FEM", radius="0.05", radiusInner="0", youngModulus="20000000", poissonRatio="0.49")
   rigid3.addObject('VisualPointCloud', position="@DoFs.position", pointSize="1", template="Rigid3", drawMode="Frame")