MeshClosingEngine
Close a given mesh.
Vec3d
Templates:
- Vec3d
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 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 |
| Inputs | ||
| inputPosition | input vertices | |
| inputTriangles | input triangles | |
| inputQuads | input quads | |
| Outputs | ||
| position | Vertices of closed mesh | |
| triangles | Triangles of closed mesh | |
| quads | Quads of closed mesh (=input quads with current method) | |
| indices | Index lists of the closing parts | |
| closingPosition | Vertices of the closing parts | |
| closingTriangles | Triangles of the closing parts | |
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
MeshClosingEngine.scn
<?xml version="1.0"?>
<Node name="root" gravity="0 0 0" dt="1" >
<RequiredPlugin name="Sofa.Component.Engine.Generate"/> <!-- Needed to use components [MeshClosingEngine] -->
<RequiredPlugin name="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [MeshOBJLoader] -->
<RequiredPlugin name="Sofa.Component.Setting"/> <!-- Needed to use components [BackgroundSetting] -->
<RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
<RequiredPlugin name="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [OglModel] -->
<DefaultAnimationLoop/>
<BackgroundSetting color="1 1 1" />
<MeshOBJLoader name="mesh" filename="mesh/c_open.obj" triangulate="0"/>
<MeshClosingEngine name="closer" inputPosition="@mesh.position" inputTriangles="@mesh.triangles" inputQuads="@mesh.quads"/>
<Node name="plain visu of closing area (red)" >
<OglModel name="closingVisual" position="@../closer.closingPosition" triangles="@../closer.closingTriangles" color="1 0.1 0.1 1"/>
</Node>
<Node name="visu of closed mesh (green)" >
<OglModel name="closedMesh" position="@../closer.position" vertices="@../closer.position" triangles="@../closer.triangles" quads="@../closer.quads" color="0.5 1 0.5 1" translation="0 0 4"/>
</Node>
<Node name="visu of original open mesh (wireframe)" >
<VisualStyle displayFlags="showVisual showWireframe" />
<OglModel name="visual" src="@../mesh" color="0.5 0.5 1 1" />
</Node>
</Node>
def createScene(root_node):
root = root_node.addChild('root', gravity="0 0 0", dt="1")
root.addObject('RequiredPlugin', name="Sofa.Component.Engine.Generate")
root.addObject('RequiredPlugin', name="Sofa.Component.IO.Mesh")
root.addObject('RequiredPlugin', name="Sofa.Component.Setting")
root.addObject('RequiredPlugin', name="Sofa.Component.Visual")
root.addObject('RequiredPlugin', name="Sofa.GL.Component.Rendering3D")
root.addObject('DefaultAnimationLoop', )
root.addObject('BackgroundSetting', color="1 1 1")
root.addObject('MeshOBJLoader', name="mesh", filename="mesh/c_open.obj", triangulate="0")
root.addObject('MeshClosingEngine', name="closer", inputPosition="@mesh.position", inputTriangles="@mesh.triangles", inputQuads="@mesh.quads")
plain_visu_of_closing_area_(red) = root.addChild('plain visu of closing area (red)')
plain_visu_of_closing_area_(red).addObject('OglModel', name="closingVisual", position="@../closer.closingPosition", triangles="@../closer.closingTriangles", color="1 0.1 0.1 1")
visu_of_closed_mesh_(green) = root.addChild('visu of closed mesh (green)')
visu_of_closed_mesh_(green).addObject('OglModel', name="closedMesh", position="@../closer.position", vertices="@../closer.position", triangles="@../closer.triangles", quads="@../closer.quads", color="0.5 1 0.5 1", translation="0 0 4")
visu_of_original_open_mesh_(wireframe) = root.addChild('visu of original open mesh (wireframe)')
visu_of_original_open_mesh_(wireframe).addObject('VisualStyle', displayFlags="showVisual showWireframe")
visu_of_original_open_mesh_(wireframe).addObject('OglModel', name="visual", src="@../mesh", color="0.5 0.5 1 1")