Inherits DD::Image::PolygonPrimitive.
Public Member Functions | |
const char * | Class () const |
Mesh (int columns, int rows, bool wrapU=false, bool wrapV=false, MeshSubdivisionMethod subd=QUADS) | |
Mesh (const Mesh &) | |
Primitive * | duplicate () const |
int | columns () const |
int | rows () const |
bool | wrapU () const |
bool | wrapV () const |
MeshSubdivisionMethod | subd_method () const |
void | subd_method (MeshSubdivisionMethod v) |
int | vertex_index (int x, int y) const |
unsigned | point_index (int x, int y) const |
int | add_points (PointList *, int plane=PLANE_ZX) |
void | remap_points (PointList *, int plane=PLANE_ZX, float sx=1.0f, float sy=1.0f) const |
void | create_point_uvs (Attribute *, float scaleU=1.0f, float scaleV=1.0f) const |
void | create_point_uvs (Attribute *attrib, float minU, float minV, float maxU, float maxV) const |
void | create_point_normals (Attribute *, const Vector3 &N) const |
bool | IntersectsRay (const Ray &ray, int n, const PointList *pointList, CollisionResult *result) const |
Test for the intersection of this primitive with a given ray. More... | |
void | validate (PrimitiveContext *) |
Vector3 | vertex_normal (unsigned v, const PointList *) const |
Vector3 | get_face_normal (int n, const PointList *points) const |
void | tessellateFace (int faceIndex, Scene *scene, PrimitiveContext *ptx, VertexContext *vtx) const |
void | tessellate (Scene *scene, PrimitiveContext *ptx) const |
unsigned | faces () const |
Vector3 | face_average_center (int n, const PointList *) const |
unsigned | face_vertices (int n) const |
void | get_face_vertices (int n, unsigned *array) const |
void | draw_wireframe (ViewerContext *, PrimitiveContext *, Primitive *prev_prim=nullptr) const |
void | draw_solid (ViewerContext *, PrimitiveContext *, Primitive *prev_prim=nullptr) const |
void | draw_solid_face (int n, ViewerContext *, PrimitiveContext *) const |
void | draw_primitive_normal (ViewerContext *, PrimitiveContext *) const |
Draw poly's normal. | |
void | print_info () const |
PrimitiveType | getPrimitiveType () const |
Public Member Functions inherited from DD::Image::PolygonPrimitive | |
PolygonPrimitive (unsigned vertices=0) | |
Public Member Functions inherited from DD::Image::Primitive | |
virtual void | vertex_shader (int v, Scene *, PrimitiveContext *, VArray &out, const Vector3 *normal=nullptr) const |
virtual void | vertex_shader (int v, Scene *, PrimitiveContext *, VertexContext &, VArray &out, const Vector3 *normal=nullptr) const |
Primitive (unsigned vertices=0) | |
Primitive (const Primitive &) | |
virtual | ~Primitive () |
void | getDataArray (int n, ViewerContext *ctx, PrimitiveContext *ptx, std::vector< Vector3 > &pntArray, std::vector< Vector3 > &normalArray, std::vector< Vector4 > &uvOrColArray, bool &validUV) const |
const unsigned & | vertex (unsigned v) const |
unsigned & | vertex (unsigned v) |
unsigned | vertices () const |
void | offset_point_indices (int offset) |
unsigned | vertex_offset () const |
void | build_index_array (unsigned *indices, unsigned primitive, unsigned vertex) const |
unsigned | add_vertex (unsigned point_index) |
unsigned | add_vertices (unsigned num) |
virtual Vector3 | average_center (const PointList *) const |
Returns the xyz center average of the primitive. More... | |
virtual Vector3 | average_center_and_bounds (int f, const PointList *points, Vector3 &min, Vector3 &max) const |
virtual Box3 | get_bbox (const GeoInfo *info) const |
virtual Vector3 | get_geometric_normal (int v, const PointList *points) const |
virtual int | get_vertex_faces (int v, std::vector< int > &faces) const |
virtual bool | faceUsesVertex (unsigned int faceIdx, unsigned int vertIdx) const |
Iop * | material () const |
Iop * | renderingShader (const GeoInfo *info) const |
const Vector3 & | normal () const |
virtual void | draw_primitive_num (ViewerContext *, PrimitiveContext *) const |
virtual void | draw_vertex_num (ViewerContext *, PrimitiveContext *) const |
virtual void | draw_vertex_normals (ViewerContext *, PrimitiveContext *) const |
virtual void | draw_vertex_uvs (ViewerContext *, PrimitiveContext *) const |
void * | operator new (size_t size) |
void | operator delete (void *mem) |
void * | operator new[] (size_t size) |
void | operator delete[] (void *mem) |
Static Public Member Functions | |
static int | mesh_index (int x, int y, int w) |
Static Public Member Functions inherited from DD::Image::Primitive | |
static void | draw_normal (const Vector3 &p, const Vector3 &n, ViewerContext *, PrimitiveContext *) |
Protected Member Functions | |
void | copy (const Mesh *) |
Protected Member Functions inherited from DD::Image::Primitive | |
void | draw_wireframe_vertex (int v, ViewerContext *, PrimitiveContext *) const |
void | draw_solid_vertex (int v, ViewerContext *, PrimitiveContext *) const |
void | copy (const Primitive *) |
bool | PolyIntersectsRay (const Ray &ray, int n, const PointList *pointList, CollisionResult *result) const |
Protected Attributes | |
int | columns_ |
int | rows_ |
Number of rows and columns. | |
bool | wrapU_ |
bool | wrapV_ |
Whether mesh wraps around - only one can be true. | |
MeshSubdivisionMethod | subd_method_ |
What method to subdivide the mesh. | |
Protected Attributes inherited from DD::Image::Primitive | |
std::vector< unsigned, STL3DAllocator< unsigned > > | vertex_ |
Point indices. | |
unsigned | vertex_offset_ |
Vertex attribute starting index. | |
Vector3 | normal_ |
Normal determined from vertex positions. | |
Iop * | material_ |
Material assignment. | |
A 2-dimensional mesh of m*n vertices.
|
protected |
Destructive copy.
References DD::Image::Primitive::copy(), rows_, subd_method_, and wrapV_.
|
virtual |
Copy this Mesh into a new one, and return a pointer to it. Vertex data is duplicated, point indices are unchanged.
Implements DD::Image::Primitive.
int Mesh::add_points | ( | PointList * | points, |
int | plane = PLANE_ZX |
||
) |
Add the points for the mesh to the GeoInfo's PointList. This is a convenience function.
References rows_, and DD::Image::Primitive::vertex_.
void Mesh::create_point_uvs | ( | Attribute * | attrib, |
float | scaleU = 1.0f , |
||
float | scaleV = 1.0f |
||
) | const |
Add uvs to the points. U/V will map 0->1. This is a convenience function.
References DD::Image::Attribute::resize(), rows_, DD::Image::Vector4::set(), and DD::Image::VECTOR4_ATTRIB.
void Mesh::create_point_uvs | ( | Attribute * | attrib, |
float | minU, | ||
float | minV, | ||
float | maxU, | ||
float | maxV | ||
) | const |
Add uvs to the points. U/V will map (minU, minV) -> (maxU, maxV). This is a convenience function.
References DD::Image::Attribute::resize(), rows_, DD::Image::Vector4::set(), and DD::Image::VECTOR4_ATTRIB.
Add normal N to each point. This is a convenience function.
References DD::Image::NORMAL_ATTRIB, DD::Image::Attribute::resize(), and rows_.
|
inlinevirtual |
Test for the intersection of this primitive with a given ray.
If a collision is detected, information is returned in the collision result
Reimplemented from DD::Image::Primitive.
References DD::Image::Primitive::PolyIntersectsRay().
|
virtual |
If Normal attribute doesn't exist, create it from the constituent faces.
Reimplemented from DD::Image::Primitive.
References DD::Image::Vector3::fast_normalize(), DD::Image::Primitive::normal_, rows_, DD::Image::Vector3::set(), subd_method_, and DD::Image::Primitive::validate().
|
virtual |
Return a normal that best represents the normal at point's location on the mesh surface.
Reimplemented from DD::Image::Primitive.
References DD::Image::Vector3::normalize(), rows_, and subd_method_.
|
virtual |
Returns the normal for face.
Reimplemented from DD::Image::Primitive.
References get_face_vertices(), and DD::Image::Vector3::normalize().
|
virtual |
Subdivide a single face of the mesh into triangles and add them to the rendering pipeline.
Reimplemented from DD::Image::PolygonPrimitive.
References DD::Image::Scene::add_render_primitive(), DD::Image::PrimitiveContext::face_vertices_, get_face_vertices(), and DD::Image::Primitive::vertex_shader().
|
virtual |
Return the subface's average local-space center.
Reimplemented from DD::Image::Primitive.
References get_face_vertices().
|
virtual |
Fill the pre-allocated array with vertices constituting the sub face.
Reimplemented from DD::Image::Primitive.
Referenced by face_average_center(), get_face_normal(), and tessellateFace().
|
virtual |
Draw the specified face as a filled quad.
Reimplemented from DD::Image::Primitive.
©2021 The Foundry Visionmongers, Ltd. All Rights Reserved. |