c4d.utils.SplineHelp
¶
Helper class for
SplineObject
. Designed to allow you to get positions along splines form real world units as well as get non flipping/non gimbal locked matrices and vectors from the spline. Must be inited before use. All values returned are in global space. The slow part is
SplineHelp.InitSpline()
; other access is pretty fast.
c4d.utils.
SplineHelp
¶
SplineHelp.InitSpline()
SplineHelp.InitSplineWith()
SplineHelp.InitSplineWithUpVector()
SplineHelp.InitSplineWithRail()
SplineHelp.FreeSpline()
SplineHelp.Exists()
SplineHelp.GetSegmentCount()
SplineHelp.GetVertexMatrix()
SplineHelp.GetPointValue()
SplineHelp.GetPointIndex()
SplineHelp.GetPosition()
SplineHelp.GetTangent()
SplineHelp.GetNormal()
SplineHelp.GetCrossNormal()
SplineHelp.GetSegmentLength()
SplineHelp.GetSplineLength()
SplineHelp.GetOffsetFromUnit()
SplineHelp.GetOffsetFromReal()
SplineHelp.SplineToLineIndex()
SplineHelp.GetSize()
SplineHelp.GetMatrix()
SplineHelp.GetVertexCount()
SplineHelp.GetVertexSize()
SplineHelp.GetDirty()
SplineHelp.GetPointMatrix()
SplineHelp.GetLineObject()
SplineHelp.
__init__
(
)
¶
Return type: | c4d.utils.SplineHelp |
---|---|
Returns: | A new spline help object. |
SplineHelp.
InitSpline
(
op, [up=c4d.Vector(0.0)][, rail=None][, target_rail=True][, use_deformed_points=False][, force_update=False][, use_global_space=True]
)
¶
Initializes the
SplineHelp
. Must be called before any other function.
Deprecated since version R17.048.
Instead use the specialized
Init()
methods:
InitSplineWith()
,
InitSplineWithUpVector()
,
InitSplineWithRail()
Parameters: |
|
---|---|
Return type: |
bool |
Returns: |
True if successful, otherwise False . |
SplineHelp.
InitSplineWith
(
op
[
,
flags=c4d.SPLINEHELPFLAGS_GLOBALSPACE|c4d.SPLINEHELPFLAGS_CONTINUECURVE
]
)
¶
New in version R17.048.
Initializes the
SplineHelp
with the passed spline
op
.
Warning
Must be called before any other function.
Parameters: |
|
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Return type: |
bool |
||||||||||||||
Returns: |
True if successful, otherwise False . |
SplineHelp.
InitSplineWithUpVector
(
op
,
upvector
[
,
flags=c4d.SPLINEHELPFLAGS_GLOBALSPACE|c4d.SPLINEHELPFLAGS_CONTINUECURVE
]
)
¶
New in version R17.048.
Initializes the
SplineHelp
with the passed spline
op
and
upvector
.
Warning
Must be called before any other function.
Parameters: |
|
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Return type: |
bool |
||||||||||||||
Returns: |
True if successful, otherwise False . |
SplineHelp.
InitSplineWithRail
(
op
,
rail
[
,
flags=c4d.SPLINEHELPFLAGS_GLOBALSPACE|c4d.SPLINEHELPFLAGS_CONTINUECURVE
]
)
¶
New in version R17.048.
Initializes the
SplineHelp
with the passed spline
op
and
rail
.
Warning
Must be called before any other function.
Parameters: |
|
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Return type: |
bool |
||||||||||||||
Returns: |
True if successful, otherwise False . |
SplineHelp.
FreeSpline
(
)
¶
Called to free the spline data. Recalling
InitSpline()
or calling
SplineHelp.__free__
will automatically call this.
SplineHelp.
Exists
(
)
¶
Useful check to see if the spline helper contains data and has been inited.
Return type: | bool |
---|---|
Returns: | True if the spline helper is ready to use. |
SplineHelp.
GetSegmentCount
(
)
¶
Gets the number of segments in the spline.
Note
Unlike the way Cinema 4D handles segments where a segmenet count of 0 means there’s either no segments or 1 segment, this returns 1 segment if there is 1 and 0 if there are 0.
Return type: | int |
---|---|
Returns: | Segment count. |
SplineHelp.
GetVertexMatrix
(
index
)
¶
Retrieves a full matrix for a specific point of the line.
Note
This is not the spline vertex, but instead the line object’s vertex. (Calculated with LOD=1.0.)
Parameters: | index ( int ) – Line object’s vertex. |
---|---|
Raises: |
IndexError
– If the point
index
is out of range :
0<=segment<
PointObject.GetPointCount()
.
|
Return type: | c4d.Matrix |
Returns: | Coordinate system matrix at index . |
SplineHelp.
GetPointValue
(
offset
,
segment
)
¶
Converts a natural offset value to a real percentage offset value.
Note
This percentage uses the realworld units for its offset, so regardless of how the spline’s points and interpolation is set, a gap of 2% on a 100m long spline will always be 2m whereas normally in spline natural space, a gap of 2% can vary a great deal depending on the spline’s interpolation etc.
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: |
float |
Returns: |
The realworld percentage offset. |
SplineHelp.
GetPointIndex
(
offset
,
segment
)
¶
Retrieves the nearest line point index to the given real offset .
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: |
int |
Returns: |
The nearest line object point index, rounded down. |
SplineHelp.
GetPosition
(
offset[, segment=0][, smooth=True][, realoffset=False]
)
¶
Retrieves the nearest line point index to the given real offset .
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: | |
Returns: |
The position given by offset in global space. |
SplineHelp.
GetTangent
(
offset[, segment=0][, smooth=True][, realoffset=False]
)
¶
Gets a tangent vector for any point along the spline.
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: | |
Returns: |
The tangent given by offset in global space. |
SplineHelp.
GetNormal
(
offset[, segment=0][, smooth=True][, realoffset=False]
)
¶
Gets a normal vector for any point along the spline.
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: | |
Returns: |
The normal given by offset in global space. |
SplineHelp.
GetCrossNormal
(
offset[, segment=0][, smooth=True]
)
¶
Gets a cross normal vector (i.e. perpendicular to the normal and the tangent) for any point along the spline.
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: | |
Returns: |
The cross normal given by offset in global space. |
SplineHelp.
GetSegmentLength
(
segment
)
¶
Returns a specific segment’s realworld unit length.
Parameters: | segment ( int ) – The segment index. |
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
GetSegmentCount()
.
|
Return type: | float |
Returns: | The length of the specified segment. |
SplineHelp.
GetSplineLength
(
)
¶
Returns the spline’s realworld unit length uncluding all segments.
Return type: | float |
---|---|
Returns: | Spline length. |
SplineHelp.
GetOffsetFromUnit
(
unitoffset
[
,
segment=0
]
)
¶
Retrieve an offset from a realworld unit. For example, if a spline is 50 units long, 25 would be 50% of the length, i.e. 0.5
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: |
float |
Returns: |
The offset in spline space. |
SplineHelp.
GetOffsetFromReal
(
offset
[
,
segment=0
]
)
¶
Convert a percentage offset into a natural offset. Percentage offsets ignore spline interpolation etc. and are always x% along the spline.
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: |
float |
Returns: |
The natural offset. |
SplineHelp.
SplineToLineIndex
(
index
)
¶
Converts a spline vertex index to its corresponding line object vertex index.
Parameters: | index ( int ) – The spline vertex index. |
---|---|
Return type: | int |
Returns: | The line object vertex index. |
SplineHelp.
GetSize
(
offset[, segment=0][, smooth=True][, realoffset=False]
)
¶
Get the distance to an existing rail spline for any point along the spline.
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: |
float |
Returns: |
The distance given by offset . |
SplineHelp.
GetMatrix
(
offset[, segment=0][, smooth=True][, realoffset=False]
)
¶
Retrieve a full matrix for any point along the spline, constructed as a local coordinate system at that point. Optionally use realworld percentage rather than spline natural space for the offset.
Parameters: |
|
---|---|
Raises: |
IndexError
– If
segment
index is out of range :
0<=segment<
|
Return type: | |
Returns: |
Coordinate system matrix at offset . |
SplineHelp.
GetVertexCount
(
segment
)
¶
Get the number of vertices for a spline segment.
Parameters: | segment ( int ) – The segment index. |
---|---|
Raises: |
IndexError
– If the
segment
index is out of range : must be
0<=segment<
GetSegmentCount()
.
|
Return type: | int |
Returns: | The number of vertices. |
SplineHelp.
GetVertexSize
(
index
)
¶
Get the distance to an existing rail spline for a spline vertex specified by index .
Parameters: | index ( int ) – The vertex index. |
---|---|
Raises: |
IndexError
– If the vertex
index
is out of range : must be
0<=segment<
GetVertexCount()
.
|
Return type: | int |
Returns: | The distance given by index . |
SplineHelp.
GetDirty
(
)
¶
New in version R17.048.
Gets the dirty value for the
SplineHelp
which indicates how often the help has been updated with new values. i.e. how often the source spline has changed, and or the spline has been cleared.
Return type: | int |
---|---|
Returns: | The dirty checksum. |
SplineHelp.
GetPointMatrix
(
)
¶
New in version R17.048.
Gets the matrix for a spline vertex.
Parameters: | splineVertexIndex ( int ) – The zero-based index of the spline vertex. |
---|---|
Return type: | c4d.Matrix |
Returns: | The resulting matrix for the point along the spline. |
SplineHelp.
GetLineObject
(
)
¶
New in version R17.048.
Gets a
LineObject
from SplineHelp functions.
Note
Initializes the
SplineHelp
with
SPLINEHELPFLAGS_RETAINLINEOBJECT
for this method to return a line object.
Return type: | c4d.LineObject |
---|---|
Returns: |
The line object.
None
if it fails or if the
SplineHelp
was not initialized with
SPLINEHELPFLAGS_RETAINLINEOBJECT
.
|