Unigine::SplineGraph Class
Header: | #include <UnigineSplineGraph.h> |
This class is used to manage vertices and segments of spline graphs. UNIGINE's 3D spline system has a wide range of applications, particularly procedural content generation (rivers, roads, pipelines etc.).
See Also
The C++ API sample <UnigineSDK>/data/samples/worlds/spline_graph_00 . It illustrates:
- Creation of a SplineGraph from scratch.
- Movement of a node along the segments of the SplineGraph.
- The WorldSplineGraph class article to learn how to generate geometry along a spline graph.
SplineGraph Class
Members
static SplineGraphPtr create()
Default constructor. Creates an empty spline graph.static SplineGraphPtr create(const char * name)
Constructor. Creates an empty spline graph with a given name.Arguments
- const char * name - Spline graph name.
static SplineGraphPtr create(const Ptr<SplineGraph> & graph)
Constructor. Creates a spline graph by copying a given source spline graph.Arguments
- const Ptr<SplineGraph> & graph - Source spline graph.
float getLength(int index)
Retuns the length of the segment with a given index.Arguments
- int index - Segment index.
Return value
Segment length.int getNumPoints()
Returns the total number of points in the spline graph.Return value
Number of points.int getNumSegments()
Returns the total number of segments in the spline graph.Return value
Number of segments.int isOwner()
Returns the owner flag. If the pointer is the owner, on its deletion the spline graph also will be deleted. Use grab() and release() functions to change ownershipReturn value
Owner flag.void setPoint(int index, const Math::vec3 & point)
Sets new coordinates for the point with a given index.Arguments
- int index - Point index.
- const Math::vec3 & point - New point coordinates.
Math::vec3 getPoint(int index)
Returns the coordinates of the point with a given index.Arguments
- int index - Point index.
Return value
Point coordinates.Math::vec3 getSegmentEndPoint(int index)
Returns the coordinates of the end point for the segment with a given index.Arguments
- int index - Segment index.
Return value
Segment end point coordinates.int getSegmentEndPointIndex(int index)
Returns the index of the end point for the segment with a given index.Arguments
- int index - Segment index.
Return value
Segment end point index.void setSegmentEndTangent(int index, const Math::vec3 & tangent)
Sets the tangent coordinates for the end point of the segment with a given index.Arguments
- int index - Segment index.
- const Math::vec3 & tangent - End point tangent coordinates.
Math::vec3 getSegmentEndTangent(int index)
Returns the tangent coordinates for the end point of the segment with a given index.Arguments
- int index - Segment index.
Return value
End point tangent coordinates.void setSegmentEndUpVector(int index, const Math::vec3 & up)
Sets the up-vector coordinates for the end point of the segment with a given index.Arguments
- int index - Segment index.
- const Math::vec3 & up - End point up-vector coordinates.
Math::vec3 getSegmentEndUpVector(int index)
Returns the up-vector coordinates for the end point of the segment with a given index.Arguments
- int index - Segment index.
Return value
End point up-vector coordinates.Math::vec3 getSegmentStartPoint(int index)
Returns the coordinates of the start point for the segment with a given index.Arguments
- int index - Segment index.
Return value
Segment start point coordinates.int getSegmentStartPointIndex(int index)
Returns the index of the end point for the segment with a given index.Arguments
- int index - Segment index.
Return value
Segment start point index.void setSegmentStartTangent(int index, const Math::vec3 & tangent)
Sets the tangent coordinates for the start point of the segment with a given index.Arguments
- int index - Segment index.
- const Math::vec3 & tangent - Start point tangent coordinates.
Math::vec3 getSegmentStartTangent(int index)
Returns the tangent coordinates for the start point of the segment with a given index.Arguments
- int index - Segment index.
Return value
Start point tangent coordinates.void setSegmentStartUpVector(int index, const Math::vec3 & up)
Sets the up-vector coordinates for the start point of the segment with a given index.Arguments
- int index - Segment index.
- const Math::vec3 & up - Start point up-vector coordinates.
Math::vec3 getSegmentStartUpVector(int index)
Returns the up-vector coordinates for the start point of the segment with a given index.Arguments
- int index - Segment index.
Return value
Start point up-vector coordinates.int addPoint(const Math::vec3 & point)
Adds a point with specified coordinates to the spline graph.Arguments
- const Math::vec3 & point - Point coordinates.
Return value
Current number of points in the spline graph.int addSegment(int start_index, const Math::vec3 & start_tangent, const Math::vec3 & start_up, int end_index, const Math::vec3 & end_tangent, const Math::vec3 & end_up)
Adds a segment to the spline graph.Arguments
- int start_index - Start point index.
- const Math::vec3 & start_tangent - Start point tangent coordinates.
- const Math::vec3 & start_up - Start point up-vector coordinates.
- int end_index - End point index.
- const Math::vec3 & end_tangent - End point tangent coordinates.
- const Math::vec3 & end_up - End point up-vector coordinates.
Return value
Number of segments in the spline graph if a segment was addes successfully; otherwise, -1Math::vec3 calcSegmentPoint(int index, float t)
Returns the coordinates of the point on the given segment.Arguments
- int index - Segment index.
- float t - Position of the point on the segment, in increments of the segment's length normalized to 1.
Return value
Coordinates of the point on the given segment.Math::vec3 calcSegmentTangent(int index, float t)
Returns the tangent coordinates for the point on the given segment.Arguments
- int index - Segment index.
- float t - Position of the point on the segment, in increments of the segment's length normalized to 1.
Return value
Tangent coordinates for the point on the given segment.Math::vec3 calcSegmentUpVector(int index, float t)
Returns the up-vector coordinates for the point on the given segment.Arguments
- int index - Segment index.
- float t - Position of the point on the segment, in increments of the segment's length normalized to 1.
Return value
Up-vector coordinates for the point on the given segment.void clear()
Clears the spline graph.void grab()
Grabs the spline graph (sets the owner flag to 1). The spline graph should not be handled by the engine after this function is called.int load(const char * name)
Loads the spline graph from the specified XML-file.Arguments
- const char * name - Name of the XML-file to load the spline graph from.
Return value
1 if the spline graph was successfully loaded; otherwise, 0.void release()
Releases the spline graph (sets the owner flag to 0). The spline graph should be handled by the engine after this function is called.void removePoint(int index)
Removes a point with a given index from the spline graph.The segments having this point as a starting or ending one will also be removed from the spline graph.
Arguments
- int index - Point index.
void removeSegment(int index)
Removes the segment with a given index.Arguments
- int index - Segment index.
int save(const char * name)
Saves the spline graph to the specified XML-file.Arguments
- const char * name - Name of the XML-file to save the spline graph to.
Return value
1 if the spline graph was successfully saved; otherwise, 0.Last update: 20.10.2017
Помогите сделать статью лучше
Была ли эта статья полезной?
(или выберите слово/фразу и нажмите Ctrl+Enter