RandomPointDistributionInSurface
Engine distributing points over a surface randomly.
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 |
randomSeed | Set a specified seed for random generation (0 for "true pseudo-randomness" | 0 |
isVisible | is Visible ? | 1 |
minDistanceBetweenPoints | Min Distance between 2 points (-1 for true randomness) | 0.1 |
numberOfInPoints | Number of points inside | 10 |
numberOfTests | Number of tests to find if the point is inside or not (odd number) | 5 |
outPoints | Points outside the surface | |
Visualization | ||
drawOutputPoints | Output points visible ? | 0 |
Inputs | ||
vertices | Vertices | |
triangles | Triangles indices | |
Outputs | ||
inPoints | Points inside the surface |
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
RandomPointDistributionInSurface.scn
<?xml version="1.0"?>
<Node name="root" dt="0.02">
<RequiredPlugin name="Sofa.Component.Engine.Generate"/> <!-- Needed to use components [RandomPointDistributionInSurface] -->
<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] -->
<RequiredPlugin name="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [OglModel] -->
<VisualStyle displayFlags="showBehaviorModels" />
<DefaultAnimationLoop/>
<Node name="Random">
<MeshOBJLoader name="meshLoader" filename="mesh/liver.obj" />
<MechanicalObject src="@meshLoader"/>
<RandomPointDistributionInSurface template="Vec3" drawOutputPoints="true"
vertices="@meshLoader.position" triangles="@meshLoader.triangles" numberOfInPoints="100" numberOfTests="3" minDistanceBetweenPoints="0.1"
/>
</Node>
<Node name="Visu">
<VisualStyle displayFlags="showWireframe" />
<MeshOBJLoader name='myLoader' filename='mesh/liver.obj'/>
<OglModel src='@myLoader'/>
</Node>
</Node>
def createScene(root_node):
root = root_node.addChild('root', dt="0.02")
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('RequiredPlugin', name="Sofa.GL.Component.Rendering3D")
root.addObject('VisualStyle', displayFlags="showBehaviorModels")
root.addObject('DefaultAnimationLoop', )
random = root.addChild('Random')
random.addObject('MeshOBJLoader', name="meshLoader", filename="mesh/liver.obj")
random.addObject('MechanicalObject', src="@meshLoader")
random.addObject('RandomPointDistributionInSurface', template="Vec3", drawOutputPoints="true", vertices="@meshLoader.position", triangles="@meshLoader.triangles", numberOfInPoints="100", numberOfTests="3", minDistanceBetweenPoints="0.1")
visu = root.addChild('Visu')
visu.addObject('VisualStyle', displayFlags="showWireframe")
visu.addObject('MeshOBJLoader', name="myLoader", filename="mesh/liver.obj")
visu.addObject('OglModel', src="@myLoader")