v5.0
Gives the geometry description of the subdivided mesh given the
subdivision rule, the level of subdivision and the discontinuity
angle if used. The geometry data is returned in a 1-dimensional
array and contains the following values:
1) vertices: polygon vertex 2D array (Nx3) of x,y,z values.
2) polygon data: ordered array of polygon definitions, each polygon
is defined by a list of elements, the first element of a polygon
definition must be set with the number of indices for that polygon.
The ordering of vertices must respect a ccw ordering to get out
going normals (right-hand rule). For example, an array of polygons
with 4 indices each: {4,0,1,4,3,4,1,2,5,4... }
3) polygon node normal array: 2D array containing the normal x,y,z
values for every polygon node.
4) polygon node for each polygon face: 1D array containing the
number of polygon nodes on each polygon face followed by the
corresponding polygon node index.
Note: The C++ API equivalent function, PolygonMesh::GetGeometryAccessor,
returns the CGeometryAccessor
object which allows you to get only the data you need, and is
therefore a much more efficient way to access this data.
Object PolygonMesh.GetApproximatedMesh( siSubdivisionRuleType in_SubRule, Int32 in_lSubdivisionLevel, Boolean in_bDiscontinuity, Double in_dDiscontinuityAngle ); |
oArray = PolygonMesh.GetApproximatedMesh( SubdivisionRule, SubdivisionLevel, UseDiscontinuity, DiscontinuityAngle ); |
1-dimensional Array
Parameter | Type | Description |
---|---|---|
SubdivisionRule | siSubdivisionRuleType | This parameter contains the subdivision rule to use for the approximation. |
SubdivisionLevel | Long | This parameter contains the subdivision rule to use for the approximation. |
UseDiscontinuity | Boolean | Specified if we want to use the discontinuity angle or not. |
DiscontinuityAngle | Double | Specifies the angle of discontinuity. |
set oCube = ActiveSceneRoot.AddGeometry( "Cube","MeshSurface" ) set oGApprox = oCube.Properties.Find("geomapprox") MakeLocal oGApprox oGApprox.Parameters("gapproxmosl").value = 1 values = oCube.ActivePrimitive.Geometry.GetApproximatedMesh( _ oGApprox.Parameters("gapproxmosr").value,_ oGApprox.Parameters("gapproxmosl").value,_ oGApprox.Parameters("gapproxmoad").value,_ oGApprox.Parameters("gapproxmoan").value ) aVertices = values(0) aPolygonData = values(1) set oApproximatedCube = ActiveSceneRoot.AddPolygonMesh( aVertices, aPolygonData ) |