NurbsSurfaceEvaluator

from panda3d.core import NurbsSurfaceEvaluator
class NurbsSurfaceEvaluator

Bases: ReferenceCount

This class is an abstraction for evaluating NURBS surfaces. It accepts an array of vertices, each of which may be in a different coordinate space (as defined by a NodePath), as well as an optional knot vector.

Inheritance diagram

Inheritance diagram of NurbsSurfaceEvaluator

__init__(*args, **kwargs)
evaluate()

C++ Interface: evaluate(NurbsSurfaceEvaluator self, const NodePath rel_to)

/**
  • Returns a NurbsSurfaceResult object that represents the result of applying

  • the knots to all of the current values of the vertices, transformed into

  • the indicated coordinate space.

*/

getExtendedVertex()

C++ Interface: get_extended_vertex(NurbsSurfaceEvaluator self, int ui, int vi, int d)

/**
  • Returns an n-dimensional vertex value. See set_extended_vertex(). This

  • returns the value set for the indicated dimension, or 0.0 if nothing has

  • been set.

*/

getNumUKnots()

C++ Interface: get_num_u_knots(NurbsSurfaceEvaluator self)

/**
  • Returns the number of knot values in the surface in the U direction. This

  • is based on the number of vertices and the order.

*/

getNumUSegments()

C++ Interface: get_num_u_segments(NurbsSurfaceEvaluator self)

/**
  • Returns the number of piecewise continuous segments in the surface in the U

  • direction. This is based on the knot vector.

*/

getNumUVertices()

C++ Interface: get_num_u_vertices(NurbsSurfaceEvaluator self)

/**
  • Returns the number of control vertices in the U direction on the surface.

  • This is the number passed to the last call to reset().

*/

getNumVKnots()

C++ Interface: get_num_v_knots(NurbsSurfaceEvaluator self)

/**
  • Returns the number of knot values in the surface in the V direction. This

  • is based on the number of vertices and the order.

*/

getNumVSegments()

C++ Interface: get_num_v_segments(NurbsSurfaceEvaluator self)

/**
  • Returns the number of piecewise continuous segments in the surface in the V

  • direction. This is based on the knot vector.

*/

getNumVVertices()

C++ Interface: get_num_v_vertices(NurbsSurfaceEvaluator self)

/**
  • Returns the number of control vertices in the V direction on the surface.

  • This is the number passed to the last call to reset().

*/

getUKnot()

C++ Interface: get_u_knot(NurbsSurfaceEvaluator self, int i)

/**
  • Returns the value of the nth knot.

*/

getUKnots()
getUOrder()

C++ Interface: get_u_order(NurbsSurfaceEvaluator self)

/**
  • Returns the order of the surface in the U direction as set by a previous

  • call to set_u_order().

*/

getVKnot()

C++ Interface: get_v_knot(NurbsSurfaceEvaluator self, int i)

/**
  • Returns the value of the nth knot.

*/

getVKnots()
getVOrder()

C++ Interface: get_v_order(NurbsSurfaceEvaluator self)

/**
  • Returns the order of the surface in the V direction as set by a previous

  • call to set_v_order().

*/

getVertex()

C++ Interface: get_vertex(NurbsSurfaceEvaluator self, int ui, int vi) get_vertex(NurbsSurfaceEvaluator self, int ui, int vi, const NodePath rel_to)

/**
  • Returns the nth control vertex of the surface, relative to its indicated

  • coordinate space.

*/

/**
  • Returns the nth control vertex of the surface, relative to the given

  • coordinate space.

*/

getVertexSpace()

C++ Interface: get_vertex_space(NurbsSurfaceEvaluator self, int ui, int vi, const NodePath rel_to)

/**
  • Returns the coordinate space of the nth control vertex of the surface,

  • expressed as a NodePath.

*/

get_extended_vertex()

C++ Interface: get_extended_vertex(NurbsSurfaceEvaluator self, int ui, int vi, int d)

/**
  • Returns an n-dimensional vertex value. See set_extended_vertex(). This

  • returns the value set for the indicated dimension, or 0.0 if nothing has

  • been set.

*/

get_num_u_knots()

C++ Interface: get_num_u_knots(NurbsSurfaceEvaluator self)

/**
  • Returns the number of knot values in the surface in the U direction. This

  • is based on the number of vertices and the order.

*/

get_num_u_segments()

C++ Interface: get_num_u_segments(NurbsSurfaceEvaluator self)

/**
  • Returns the number of piecewise continuous segments in the surface in the U

  • direction. This is based on the knot vector.

*/

get_num_u_vertices()

C++ Interface: get_num_u_vertices(NurbsSurfaceEvaluator self)

/**
  • Returns the number of control vertices in the U direction on the surface.

  • This is the number passed to the last call to reset().

*/

get_num_v_knots()

C++ Interface: get_num_v_knots(NurbsSurfaceEvaluator self)

/**
  • Returns the number of knot values in the surface in the V direction. This

  • is based on the number of vertices and the order.

*/

get_num_v_segments()

C++ Interface: get_num_v_segments(NurbsSurfaceEvaluator self)

/**
  • Returns the number of piecewise continuous segments in the surface in the V

  • direction. This is based on the knot vector.

*/

get_num_v_vertices()

C++ Interface: get_num_v_vertices(NurbsSurfaceEvaluator self)

/**
  • Returns the number of control vertices in the V direction on the surface.

  • This is the number passed to the last call to reset().

*/

get_u_knot()

C++ Interface: get_u_knot(NurbsSurfaceEvaluator self, int i)

/**
  • Returns the value of the nth knot.

*/

get_u_knots()
get_u_order()

C++ Interface: get_u_order(NurbsSurfaceEvaluator self)

/**
  • Returns the order of the surface in the U direction as set by a previous

  • call to set_u_order().

*/

get_v_knot()

C++ Interface: get_v_knot(NurbsSurfaceEvaluator self, int i)

/**
  • Returns the value of the nth knot.

*/

get_v_knots()
get_v_order()

C++ Interface: get_v_order(NurbsSurfaceEvaluator self)

/**
  • Returns the order of the surface in the V direction as set by a previous

  • call to set_v_order().

*/

get_vertex()

C++ Interface: get_vertex(NurbsSurfaceEvaluator self, int ui, int vi) get_vertex(NurbsSurfaceEvaluator self, int ui, int vi, const NodePath rel_to)

/**
  • Returns the nth control vertex of the surface, relative to its indicated

  • coordinate space.

*/

/**
  • Returns the nth control vertex of the surface, relative to the given

  • coordinate space.

*/

get_vertex_space()

C++ Interface: get_vertex_space(NurbsSurfaceEvaluator self, int ui, int vi, const NodePath rel_to)

/**
  • Returns the coordinate space of the nth control vertex of the surface,

  • expressed as a NodePath.

*/

normalizeUKnots()

C++ Interface: normalize_u_knots(const NurbsSurfaceEvaluator self)

/**
  • Normalizes the knot sequence so that the parametric range of the surface in

  • the U direction is 0 .. 1.

*/

normalizeVKnots()

C++ Interface: normalize_v_knots(const NurbsSurfaceEvaluator self)

/**
  • Normalizes the knot sequence so that the parametric range of the surface in

  • the U direction is 0 .. 1.

*/

normalize_u_knots()

C++ Interface: normalize_u_knots(const NurbsSurfaceEvaluator self)

/**
  • Normalizes the knot sequence so that the parametric range of the surface in

  • the U direction is 0 .. 1.

*/

normalize_v_knots()

C++ Interface: normalize_v_knots(const NurbsSurfaceEvaluator self)

/**
  • Normalizes the knot sequence so that the parametric range of the surface in

  • the U direction is 0 .. 1.

*/

output()

C++ Interface: output(NurbsSurfaceEvaluator self, ostream out)

/**

*/

reset()

C++ Interface: reset(const NurbsSurfaceEvaluator self, int num_u_vertices, int num_v_vertices)

/**
  • Resets all the vertices and knots to their default values, and sets the

  • surface up with the indicated number of vertices. You must then call

  • set_vertex() repeatedly to fill in all of the vertex values appropriately.

*/

setExtendedVertex()

C++ Interface: set_extended_vertex(const NurbsSurfaceEvaluator self, int ui, int vi, int d, float value)

/**
  • Sets an n-dimensional vertex value. This allows definition of a NURBS

  • surface or surface in a sparse n-dimensional space, typically used for

  • associating additional properties (like color or joint membership) with

  • each vertex of a surface.

  • The value d is an arbitrary integer value and specifies the dimension of

  • question for this particular vertex. Any number of dimensions may be

  • specified, and they need not be consecutive. If a value for a given

  • dimension is not specified, is it implicitly 0.0.

  • The value is implicitly scaled by the homogenous weight value–that is, the

  • fourth component of the value passed to set_vertex(). This means the

  • ordinary vertex must be set first, before the extended vertices can be set.

*/

setExtendedVertices()

C++ Interface: set_extended_vertices(const NurbsSurfaceEvaluator self, int ui, int vi, int d, buffer values, int num_values)

/**
  • Simultaneously sets several extended values in the slots d through (d +

  • num_values - 1) from the num_values elements of the indicated array. This

  • is equivalent to calling set_extended_vertex() num_values times. See

  • set_extended_vertex().

*/

setUKnot()

C++ Interface: set_u_knot(const NurbsSurfaceEvaluator self, int i, float knot)

/**
  • Sets the value of the nth knot. Each knot value should be greater than or

  • equal to the preceding value. If no knot values are set, a default knot

  • vector is supplied.

*/

setUOrder()

C++ Interface: set_u_order(const NurbsSurfaceEvaluator self, int u_order)

/**
  • Sets the order of the surface in the U direction. This resets the knot

  • vector to the default knot vector for the number of vertices.

  • The order must be 1, 2, 3, or 4, and the value is one more than the degree

  • of the surface.

*/

setVKnot()

C++ Interface: set_v_knot(const NurbsSurfaceEvaluator self, int i, float knot)

/**
  • Sets the value of the nth knot. Each knot value should be greater than or

  • equal to the preceding value. If no knot values are set, a default knot

  • vector is supplied.

*/

setVOrder()

C++ Interface: set_v_order(const NurbsSurfaceEvaluator self, int v_order)

/**
  • Sets the order of the surface in the V direction. This resets the knot

  • vector to the default knot vector for the number of vertices.

  • The order must be 1, 2, 3, or 4, and the value is one more than the degree

  • of the surface.

*/

setVertex()

C++ Interface: set_vertex(const NurbsSurfaceEvaluator self, int ui, int vi, const LVecBase3f vertex, float weight) set_vertex(const NurbsSurfaceEvaluator self, int ui, int vi, const LVecBase4f vertex)

/**
  • Sets the nth control vertex of the surface, as a vertex in 4-d homogeneous

  • space. In this form, the first three components of the vertex should

  • already have been scaled by the fourth component, which is the homogeneous

  • weight.

*/

/**
  • Sets the nth control vertex of the surface. This flavor sets the vertex as

  • a 3-d coordinate and a weight; the 3-d coordinate values are implicitly

  • scaled up by the weight factor.

*/

setVertexSpace()

C++ Interface: set_vertex_space(const NurbsSurfaceEvaluator self, int ui, int vi, const NodePath space) set_vertex_space(const NurbsSurfaceEvaluator self, int ui, int vi, str space)

/**
  • Sets the coordinate space of the nth control vertex. If this is not

  • specified, or is set to an empty NodePath, the nth control vertex is deemed

  • to be in the coordinate space passed to evaluate().

  • This specifies the space as a fixed NodePath, which is always the same

  • NodePath. Also see setting the space as a path string, which can specify a

  • different NodePath for different instances of the surface.

*/

/**
  • Sets the coordinate space of the nth control vertex. If this is not

  • specified, or is set to an empty string, the nth control vertex is deemed

  • to be in the coordinate space passed to evaluate().

  • This specifies the space as a string, which describes the path to find the

  • node relative to the rel_to NodePath when the surface is evaluated.

*/

set_extended_vertex()

C++ Interface: set_extended_vertex(const NurbsSurfaceEvaluator self, int ui, int vi, int d, float value)

/**
  • Sets an n-dimensional vertex value. This allows definition of a NURBS

  • surface or surface in a sparse n-dimensional space, typically used for

  • associating additional properties (like color or joint membership) with

  • each vertex of a surface.

  • The value d is an arbitrary integer value and specifies the dimension of

  • question for this particular vertex. Any number of dimensions may be

  • specified, and they need not be consecutive. If a value for a given

  • dimension is not specified, is it implicitly 0.0.

  • The value is implicitly scaled by the homogenous weight value–that is, the

  • fourth component of the value passed to set_vertex(). This means the

  • ordinary vertex must be set first, before the extended vertices can be set.

*/

set_extended_vertices()

C++ Interface: set_extended_vertices(const NurbsSurfaceEvaluator self, int ui, int vi, int d, buffer values, int num_values)

/**
  • Simultaneously sets several extended values in the slots d through (d +

  • num_values - 1) from the num_values elements of the indicated array. This

  • is equivalent to calling set_extended_vertex() num_values times. See

  • set_extended_vertex().

*/

set_u_knot()

C++ Interface: set_u_knot(const NurbsSurfaceEvaluator self, int i, float knot)

/**
  • Sets the value of the nth knot. Each knot value should be greater than or

  • equal to the preceding value. If no knot values are set, a default knot

  • vector is supplied.

*/

set_u_order()

C++ Interface: set_u_order(const NurbsSurfaceEvaluator self, int u_order)

/**
  • Sets the order of the surface in the U direction. This resets the knot

  • vector to the default knot vector for the number of vertices.

  • The order must be 1, 2, 3, or 4, and the value is one more than the degree

  • of the surface.

*/

set_v_knot()

C++ Interface: set_v_knot(const NurbsSurfaceEvaluator self, int i, float knot)

/**
  • Sets the value of the nth knot. Each knot value should be greater than or

  • equal to the preceding value. If no knot values are set, a default knot

  • vector is supplied.

*/

set_v_order()

C++ Interface: set_v_order(const NurbsSurfaceEvaluator self, int v_order)

/**
  • Sets the order of the surface in the V direction. This resets the knot

  • vector to the default knot vector for the number of vertices.

  • The order must be 1, 2, 3, or 4, and the value is one more than the degree

  • of the surface.

*/

set_vertex()

C++ Interface: set_vertex(const NurbsSurfaceEvaluator self, int ui, int vi, const LVecBase3f vertex, float weight) set_vertex(const NurbsSurfaceEvaluator self, int ui, int vi, const LVecBase4f vertex)

/**
  • Sets the nth control vertex of the surface, as a vertex in 4-d homogeneous

  • space. In this form, the first three components of the vertex should

  • already have been scaled by the fourth component, which is the homogeneous

  • weight.

*/

/**
  • Sets the nth control vertex of the surface. This flavor sets the vertex as

  • a 3-d coordinate and a weight; the 3-d coordinate values are implicitly

  • scaled up by the weight factor.

*/

set_vertex_space()

C++ Interface: set_vertex_space(const NurbsSurfaceEvaluator self, int ui, int vi, const NodePath space) set_vertex_space(const NurbsSurfaceEvaluator self, int ui, int vi, str space)

/**
  • Sets the coordinate space of the nth control vertex. If this is not

  • specified, or is set to an empty NodePath, the nth control vertex is deemed

  • to be in the coordinate space passed to evaluate().

  • This specifies the space as a fixed NodePath, which is always the same

  • NodePath. Also see setting the space as a path string, which can specify a

  • different NodePath for different instances of the surface.

*/

/**
  • Sets the coordinate space of the nth control vertex. If this is not

  • specified, or is set to an empty string, the nth control vertex is deemed

  • to be in the coordinate space passed to evaluate().

  • This specifies the space as a string, which describes the path to find the

  • node relative to the rel_to NodePath when the surface is evaluated.

*/

u_knots
u_order
v_knots
v_order