RopeNode¶
from panda3d.core import RopeNode
-
class
RopeNode
¶ Bases:
PandaNode
This class draws a visible representation of the NURBS curve stored in its
NurbsCurveEvaluator
. It automatically recomputes the curve every frame.This is not related to
NurbsCurve
,CubicCurveseg
or any of the ParametricCurve-derived objects in this module. It is a completely parallel implementation of NURBS curves, and will probably eventually replace the wholeParametricCurve
class hierarchy.Inheritance diagram
-
enum
NormalMode
¶ -
enumerator
NM_none
= 0¶ Don’t generate normals.
-
enumerator
NM_vertex
= 1¶ Generate vertex (smooth-shaded) normals.
-
enumerator
-
enum
RenderMode
¶ -
enumerator
RM_thread
= 0¶ Render the rope as a one-pixel thread using a linestrip.
-
enumerator
RM_tape
= 1¶ Render the rope as a triangle strip oriented to be perpendicular to the tube_up vector.
-
enumerator
RM_billboard
= 2¶ Render the rope as a triangle strip oriented to be perpendicular to the view vector.
-
enumerator
RM_tube
= 3¶ Render the rope as a hollow tube extruded along its length.
-
enumerator
-
enum
UVMode
¶ -
enumerator
UV_none
= 0¶ Don’t generate UV’s along the curve.
-
enumerator
UV_parametric
= 1¶ Generate UV’s based on the parametric coordinates along the curve.
-
enumerator
UV_distance
= 2¶ Generate UV’s in proportion to spatial distance along the curve, by using the distance function to compute the length of each segment.
-
enumerator
UV_distance2
= 3¶ As above, but don’t bother to take the square root of each segment. The distance is then in proportion to the sum-of-squares of the segments along the rope. If the segments are similar in length, this approximates the proportion of UV_distance while avoiding hundreds of square root operations.
-
enumerator
-
clearMatrix
() → None¶ Resets the node’s matrix to identity. See
setMatrix()
.
-
property
curve
→ NurbsCurveEvaluator¶
-
static
getClassType
() → TypeHandle¶
-
getCurve
() → NurbsCurveEvaluator¶ Returns the curve represented by the
RopeNode
.
-
getMatrix
() → LMatrix4¶ Returns the optional matrix which is used to transform each control vertex after it has been transformed into the RopeNode’s coordinate space, but before the polygon vertices are generated.
-
getNormalMode
() → NormalMode¶ Returns the kind of normals to generate for the rope. This is only applicable when the
RopeNodeRenderMode
is set to RM_tube.
-
getNumSlices
() → int¶ Returns the number of radial subdivisions to make if
RopeNodeRenderMode
is RM_tube. It is ignored in the other render modes. SeesetNumSlices()
.
-
getNumSubdiv
() → int¶ Returns the number of subdivisions per cubic segment to draw. See
setNumSubdiv()
.
-
getRenderMode
() → RenderMode¶ Returns the method used to render the rope. See
setRenderMode()
.
-
getThickness
() → float¶ Returns the thickness of the rope. See
setThickness()
.
-
getTubeUp
() → LVector3¶ Returns the normal vector used to control the “top” of the curve, when
RopeNodeRenderMode
is RM_tube. SeesetTubeUp()
.
-
getUseVertexColor
() → bool¶ Returns the “use vertex color” flag. See
setUseVertexColor()
.
-
getUseVertexThickness
() → bool¶ Returns the “use vertex thickness” flag. See
setUseVertexThickness()
.
-
getUvDirection
() → bool¶ Returns true if the rope runs down the U coordinate of the texture, or false if it runs down the V coordinate.
-
getUvMode
() → UVMode¶ Returns the algorithm to use to generate UV’s for the rope.
-
static
getVertexColorDimension
() → int¶ Returns the numeric extended dimension in which the color components should be found. See
NurbsCurveEvaluator.setExtendedVertex()
.The color components will be expected at (n, n + 1, n + 2, n + 3).
-
static
getVertexThicknessDimension
() → int¶ Returns the numeric extended dimension in which the thickness component should be found. See
NurbsCurveEvaluator.setExtendedVertex()
.
-
hasMatrix
() → bool¶ Returns true if the node has a matrix set, false otherwise. See
setMatrix()
.
-
property
matrix
→ LMatrix4¶ - Getter
Returns the optional matrix which is used to transform each control vertex after it has been transformed into the RopeNode’s coordinate space, but before the polygon vertices are generated.
- Setter
Specifies an optional matrix which is used to transform each control vertex after it has been transformed into the RopeNode’s coordinate space, but before the polygon vertices are generated.
-
property
normal_mode
→ NormalMode¶ - Getter
Returns the kind of normals to generate for the rope. This is only applicable when the
RopeNodeRenderMode
is set to RM_tube.- Setter
Specifies the kind of normals to generate for the rope. This is only applicable when the
RopeNodeRenderMode
is set to RM_tube; in the other render modes, normals are never generated.
-
property
num_slices
→ int¶ - Getter
Returns the number of radial subdivisions to make if
RopeNodeRenderMode
is RM_tube. It is ignored in the other render modes. SeesetNumSlices()
.- Setter
Specifies the number of radial subdivisions to make if
RopeNodeRenderMode
is RM_tube. It is ignored in the other render modes.Increasing this number increases the roundness of a cross-section of the tube. The minimum value for a dimensional tube is 3; setting it to 2 will get you a thin piece of tape (which is similar to RM_billboard, except it won’t rotate to face the camera).
-
property
num_subdiv
→ int¶ - Getter
Returns the number of subdivisions per cubic segment to draw. See
setNumSubdiv()
.- Setter
Specifies the number of subdivisions per cubic segment (that is, per unique knot value) to draw in a fixed uniform tesselation of the curve.
-
property
render_mode
→ RenderMode¶ - Getter
Returns the method used to render the rope. See
setRenderMode()
.- Setter
Specifies the method used to render the rope. The simplest is RM_thread, which just draws a one-pixel line segment.
-
resetBound
(rel_to: NodePath) → None¶ Recomputes the bounding volume. This is normally called automatically, but it must occasionally be called explicitly when the curve has changed properties outside of this node’s knowledge.
-
setCurve
(curve: NurbsCurveEvaluator) → None¶ Sets the particular curve represented by the
RopeNode
.
-
setMatrix
(matrix: LMatrix4) → None¶ Specifies an optional matrix which is used to transform each control vertex after it has been transformed into the RopeNode’s coordinate space, but before the polygon vertices are generated.
-
setNormalMode
(normal_mode: NormalMode) → None¶ Specifies the kind of normals to generate for the rope. This is only applicable when the
RopeNodeRenderMode
is set to RM_tube; in the other render modes, normals are never generated.
-
setNumSlices
(num_slices: int) → None¶ Specifies the number of radial subdivisions to make if
RopeNodeRenderMode
is RM_tube. It is ignored in the other render modes.Increasing this number increases the roundness of a cross-section of the tube. The minimum value for a dimensional tube is 3; setting it to 2 will get you a thin piece of tape (which is similar to RM_billboard, except it won’t rotate to face the camera).
-
setNumSubdiv
(num_subdiv: int) → None¶ Specifies the number of subdivisions per cubic segment (that is, per unique knot value) to draw in a fixed uniform tesselation of the curve.
-
setRenderMode
(render_mode: RenderMode) → None¶ Specifies the method used to render the rope. The simplest is RM_thread, which just draws a one-pixel line segment.
-
setThickness
(thickness: float) → None¶ Specifies the thickness of the rope, in pixels or in spatial units, depending on the render mode. See
setRenderMode()
.The thickness may also be specified on a per-vertex basis. See
setUseVertexThickness()
.
-
setTubeUp
(tube_up: LVector3) → None¶ Specifies a normal vector, generally perpendicular to the main axis of the starting point of the curve, that controls the “top” of the curve, when
RopeNodeRenderMode
is RM_tube. This is used to orient the vertices that make up the tube. If this vector is too nearly parallel with the starting direction of the curve, there may be a tendency for the whole tube to gimble-lock around its primary axis.
-
setUseVertexColor
(flag: bool) → None¶ Sets the “use vertex color” flag. When this is true, the R, G, B, A vertex color is assumed to be stored as the dimensions n + 0, n + 1, n + 2, n + 3, respectively, of the extended vertex values, where n is the value returned by
getVertexColorDimension()
. UseNurbsCurveEvaluator.setExtendedVertex()
to set these values.
-
setUseVertexThickness
(flag: bool) → None¶ Sets the “use vertex thickness” flag. When this is true, the vertex thickness is assumed to be stored as the dimension
getVertexThicknessDimension()
, of the extended vertex values. UseNurbsCurveEvaluator.setExtendedVertex()
to set these values.In this mode, the overall thickness is also applied as a scale to the vertex thickness. Not all render modes support vertex thickness.
-
setUvDirection
(u_dominant: bool) → None¶ Specify true to vary the U coordinate down the length of the rope, or false to vary the V coordinate.
-
setUvScale
(scale: float) → None¶ Specifies an additional scaling factor to apply to generated UV’s along the rope. This scale factor is applied in whichever direction is along the rope, as specified by
setUvDirection()
.
-
property
thickness
→ float¶ - Getter
Returns the thickness of the rope. See
setThickness()
.- Setter
Specifies the thickness of the rope, in pixels or in spatial units, depending on the render mode. See
setRenderMode()
.The thickness may also be specified on a per-vertex basis. See
setUseVertexThickness()
.
-
property
tube_up
→ LVector3¶ - Getter
Returns the normal vector used to control the “top” of the curve, when
RopeNodeRenderMode
is RM_tube. SeesetTubeUp()
.- Setter
Specifies a normal vector, generally perpendicular to the main axis of the starting point of the curve, that controls the “top” of the curve, when
RopeNodeRenderMode
is RM_tube. This is used to orient the vertices that make up the tube. If this vector is too nearly parallel with the starting direction of the curve, there may be a tendency for the whole tube to gimble-lock around its primary axis.
-
property
use_vertex_color
→ bool¶ - Getter
Returns the “use vertex color” flag. See
setUseVertexColor()
.- Setter
Sets the “use vertex color” flag. When this is true, the R, G, B, A vertex color is assumed to be stored as the dimensions n + 0, n + 1, n + 2, n + 3, respectively, of the extended vertex values, where n is the value returned by
getVertexColorDimension()
. UseNurbsCurveEvaluator.setExtendedVertex()
to set these values.
-
property
use_vertex_thickness
→ bool¶ - Getter
Returns the “use vertex thickness” flag. See
setUseVertexThickness()
.- Setter
Sets the “use vertex thickness” flag. When this is true, the vertex thickness is assumed to be stored as the dimension
getVertexThicknessDimension()
, of the extended vertex values. UseNurbsCurveEvaluator.setExtendedVertex()
to set these values.In this mode, the overall thickness is also applied as a scale to the vertex thickness. Not all render modes support vertex thickness.
-
property
uv_direction
→ bool¶ - Getter
Returns true if the rope runs down the U coordinate of the texture, or false if it runs down the V coordinate.
- Setter
Specify true to vary the U coordinate down the length of the rope, or false to vary the V coordinate.
-
property
uv_mode
→ UVMode¶ - Getter
Returns the algorithm to use to generate UV’s for the rope.
- Setter
Specifies the algorithm to use to generate UV’s for the rope.
-
property
uv_scale
→ float¶ - Getter
Returns the scaling factor to apply to generated UV’s for the rope.
- Setter
Specifies an additional scaling factor to apply to generated UV’s along the rope. This scale factor is applied in whichever direction is along the rope, as specified by
setUvDirection()
.
-
property
vertex_color_dimension
→ int¶ Returns the numeric extended dimension in which the color components should be found. See
NurbsCurveEvaluator.setExtendedVertex()
.The color components will be expected at (n, n + 1, n + 2, n + 3).
-
property
vertex_thickness_dimension
→ int¶ Returns the numeric extended dimension in which the thickness component should be found. See
NurbsCurveEvaluator.setExtendedVertex()
.
-
enum