Vuo  1.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Classes | Typedefs | Enumerations | Functions

Description

Vertices representing a 3D object.

Classes

struct  VuoSubmesh
 One set of vertices, with associated normals and other per-vertex data, within a mesh. More...
 
struct  VuoSubmesh.glUpload
 References to mesh data uploaded to the GPU. More...
 
struct  _VuoMesh
 A 3D mesh that contains one or more submeshes (allowing each submesh to have a different element assembly method). More...
 

Typedefs

typedef struct _VuoMeshVuoMesh
 A 3D mesh that contains one or more submeshes (allowing each submesh to have a different element assembly method).
 

Enumerations

enum  VuoMesh_ElementAssemblyMethod {
  VuoMesh_IndividualTriangles, VuoMesh_TriangleStrip, VuoMesh_TriangleFan, VuoMesh_IndividualLines,
  VuoMesh_LineStrip, VuoMesh_Points
}
 The way in which an elements array should be interpreted during rasterization. More...
 

Functions

VuoMesh_ElementAssemblyMethod VuoMesh_elementAssemblyMethodFromCString (const char *elementAssemblyMethodString)
 Returns the VuoMesh_ElementAssemblyMethod corresponding with the string elementAssemblyMethodString.
 
VuoMesh VuoMesh_makeFromJson (json_object *js)
 Decodes the JSON object js to create a new value.
 
json_objectVuoMesh_getJson (const VuoMesh value)
 Encodes value as a JSON object.
 
char * VuoSubmesh_getSummary (const VuoSubmesh value)
 A brief summary of the contents of this submesh.
 
char * VuoMesh_getSummary (const VuoMesh value)
 A brief summary of the contents of this mesh, including a list of sub-meshes.
 
VuoSubmesh VuoSubmesh_make (unsigned int vertexCount, unsigned int elementCount)
 Allocates the vertex (position, normal, ...) and element arrays.
 
VuoSubmesh VuoSubmesh_makeGl (unsigned int vertexCount, unsigned int combinedBuffer, unsigned int combinedBufferSize, void *normalOffset, void *tangentOffset, void *bitangentOffset, void *textureCoordinateOffset, unsigned int elementCount, unsigned int elementBuffer, unsigned int elementBufferSize, VuoMesh_ElementAssemblyMethod elementAssemblyMethod)
 Creates a VuoSubmesh consisting of data that's already been uploaded to the GPU.
 
unsigned long VuoSubmesh_getGlMode (VuoSubmesh submesh)
 Returns the GL mode (e.g., GL_TRIANGLES) that submesh should be interpreted as.
 
unsigned long VuoSubmesh_getSplitPrimitiveCount (VuoSubmesh submesh)
 Returns the number of split primitives in submesh.
 
unsigned long VuoSubmesh_getSplitVertexCount (VuoSubmesh submesh)
 Returns the number of split vertices in submesh.
 
VuoMesh VuoMesh_make (unsigned int itemCount)
 Creates and registers a mesh with empty slots for the given number of sub-meshes.
 
void VuoMesh_upload (VuoMesh mesh)
 Uploads mesh to the GPU.
 
VuoMesh VuoMesh_makeFromSingleSubmesh (VuoSubmesh submesh)
 Creates and registers a mesh with space for one submesh, and sets it to the given submesh.
 
VuoMesh VuoMesh_makeQuad (void)
 Returns a quad with dimensions 1x1, on the XY plane, centered at the origin.
 
VuoMesh VuoMesh_makeQuadWithoutNormals (void)
 Returns a quad with dimensions 1x1, on the XY plane, centered at the origin.
 
VuoMesh VuoMesh_makeEquilateralTriangle (void)
 Returns an equilateral triangle with bottom edge length 1, pointing upward on the XY plane, centered at the origin.
 
VuoMesh VuoMesh_make_VuoPoint2d (VuoList_VuoPoint2d positions, VuoMesh_ElementAssemblyMethod elementAssemblyMethod, VuoReal primitiveSize)
 Returns a VuoMesh consisting of the given positions and element assembly method.
 
VuoMesh VuoMesh_make_VuoPoint3d (VuoList_VuoPoint3d positions, VuoMesh_ElementAssemblyMethod elementAssemblyMethod, VuoReal primitiveSize)
 Returns a VuoMesh consisting of the given positions and element assembly method.
 
VuoMesh VuoMesh_copy (const VuoMesh mesh)
 Makes a copy of the mesh and its submeshes.
 
const char * VuoMesh_cStringForElementAssemblyMethod (VuoMesh_ElementAssemblyMethod elementAssemblyMethod)
 Returns a string constant representing elementAssemblyMethod.
 
VuoBox VuoMesh_bounds (const VuoMesh mesh, float matrix[16])
 Iterates through mesh's vertices finding the center and extents.
 
bool VuoMesh_isPopulated (const VuoMesh mesh)
 Returns true if the mesh has at least one submesh with a non-zero vertex count.
 
static
VuoMesh_ElementAssemblyMethod 
VuoMesh_getExpandedPrimitiveMode (const VuoMesh_ElementAssemblyMethod inputMode)
 For a given element assembly method, returns the equivalent assembly method for individual elements (i.e., after they've been expanded from strips/fans).
 
VuoMesh VuoMesh_makeFromString (const char *str)
 Automatically generated function.
 
char * VuoMesh_getString (const VuoMesh value)
 Automatically generated function.
 
void VuoMesh_retain (const VuoMesh v)
 Automatically generated function.
 
void VuoMesh_release (const VuoMesh v)
 Automatically generated function.
 

Class Documentation

struct VuoSubmesh
Class Members
VuoPoint4d * bitangents Vertex bitangents. May be NULL.
VuoMesh_ElementAssemblyMethod elementAssemblyMethod The way in which the elements array should be interpreted during rasterization.
unsigned int elementCount Number of elements in elements.
unsigned int * elements An array of size elementCount of integer elements (triangle indices) which are indexes into positions.

(Requires conversion to i16 for OpenGL ES unless GL_OES_element_index_uint.)

unsigned int faceCullingMode GL_BACK (default), GL_NONE, or GL_FRONT.
struct VuoSubmesh glUpload
VuoPoint4d * normals Vertex normals. May be NULL.
VuoPoint4d * positions XYZW vertex positions.
Todo:
Change to VuoDictionary_VuoPoint4D vertexAttributes; once dictionaries exist: a string-keyed list of equal-size arrays of points (vertex attributes). Typically contains at least 'positions', 'normals', and 'textureCoordinates'.
VuoReal primitiveSize For lines, the width (in scene units).

For points, the width and height (in scene units).

VuoPoint4d * tangents Vertex tangents. May be NULL.
VuoPoint4d * textureCoordinates STRQ texture coordinates. May be NULL.
unsigned int vertexCount Number of vertices in positions, normals, tangents, bitangents, and textureCoordinates.
struct VuoSubmesh.glUpload
Class Members
void * bitangentOffset
unsigned int combinedBuffer
unsigned int combinedBufferSize
unsigned int elementBuffer
unsigned int elementBufferSize
void * normalOffset
void * tangentOffset
void * textureCoordinateOffset
struct _VuoMesh
Class Members
unsigned int submeshCount Number of items in submeshes.
VuoSubmesh * submeshes The submeshes that together define the shape of the mesh. All VuoSubmeshes are assumed to have the same primitive type (points, lines, triangles), but the assembly can vary (e.g., a single mesh can contain submeshes with VuoMesh_IndividualLines and VuoMesh_LineStrip).

Typedef Documentation

typedef struct _VuoMesh * VuoMesh

A 3D mesh that contains one or more submeshes (allowing each submesh to have a different element assembly method).

Enumeration Type Documentation

The way in which an elements array should be interpreted during rasterization.

Enumerator
VuoMesh_IndividualTriangles 

GL_TRIANGLES, requires elementCount % 3 == 0.

VuoMesh_TriangleStrip 

GL_TRIANGLE_STRIP, requires elementCount >= 3.

VuoMesh_TriangleFan 

GL_TRIANGLE_FAN, requires elementCount >= 3.

VuoMesh_IndividualLines 

GL_LINES, requires elementCount % 2 == 0.

VuoMesh_LineStrip 

GL_LINE_STRIP, requires elementCount >= 2.

VuoMesh_Points 

GL_POINTS.

Function Documentation

VuoBox VuoMesh_bounds ( const VuoMesh  v,
float  matrix[16] 
)

Iterates through mesh's vertices finding the center and extents.

Returns the axis aligned bounding box taking into account the passed transform.

VuoMesh VuoMesh_copy ( const VuoMesh  mesh)

Makes a copy of the mesh and its submeshes.

CPU mesh data is duplicated.

const char* VuoMesh_cStringForElementAssemblyMethod ( VuoMesh_ElementAssemblyMethod  elementAssemblyMethod)

Returns a string constant representing elementAssemblyMethod.

Do not free the value returned from this function.

VuoMesh_ElementAssemblyMethod VuoMesh_elementAssemblyMethodFromCString ( const char *  elementAssemblyMethodString)

Returns the VuoMesh_ElementAssemblyMethod corresponding with the string elementAssemblyMethodString.

If none matches, returns VuoMesh_IndividualTriangles.

static VuoMesh_ElementAssemblyMethod VuoMesh_getExpandedPrimitiveMode ( const VuoMesh_ElementAssemblyMethod  inputMode)
inlinestatic

For a given element assembly method, returns the equivalent assembly method for individual elements (i.e., after they've been expanded from strips/fans).

struct json_object * VuoMesh_getJson ( const VuoMesh  value)
read

Encodes value as a JSON object.

char* VuoMesh_getString ( const VuoMesh  value)

Automatically generated function.

char * VuoMesh_getSummary ( const VuoMesh  value)

A brief summary of the contents of this mesh, including a list of sub-meshes.

bool VuoMesh_isPopulated ( const VuoMesh  mesh)

Returns true if the mesh has at least one submesh with a non-zero vertex count.

VuoMesh VuoMesh_make ( unsigned int  submeshCount)

Creates and registers a mesh with empty slots for the given number of sub-meshes.

After you've populated the sub-meshes, call VuoMesh_upload().

VuoMesh VuoMesh_make_VuoPoint2d ( VuoList_VuoPoint2d  positions,
VuoMesh_ElementAssemblyMethod  elementAssemblyMethod,
VuoReal  primitiveSize 
)

Returns a VuoMesh consisting of the given positions and element assembly method.

Its normals, tangents, bitangents, and texture coordinates are all null.

VuoMesh VuoMesh_make_VuoPoint3d ( VuoList_VuoPoint3d  positions,
VuoMesh_ElementAssemblyMethod  elementAssemblyMethod,
VuoReal  primitiveSize 
)

Returns a VuoMesh consisting of the given positions and element assembly method.

Its normals, tangents, bitangents, and texture coordinates are all null.

VuoMesh VuoMesh_makeEquilateralTriangle ( void  )

Returns an equilateral triangle with bottom edge length 1, pointing upward on the XY plane, centered at the origin.

This mesh is shared. Don't modify its contents.

VuoMesh VuoMesh_makeFromJson ( json_object js)

Decodes the JSON object js to create a new value.

Parameters
jsA JSON array of elements of the format parsed by VuoSubmesh_makeFromJson().
VuoMesh VuoMesh_makeFromSingleSubmesh ( VuoSubmesh  submesh)

Creates and registers a mesh with space for one submesh, and sets it to the given submesh.

Uploads the submesh to the GPU.

VuoMesh VuoMesh_makeFromString ( const char *  str)

Automatically generated function.

VuoMesh VuoMesh_makeQuad ( void  )

Returns a quad with dimensions 1x1, on the XY plane, centered at the origin.

This mesh is shared. Don't modify its contents.

VuoMesh VuoMesh_makeQuadWithoutNormals ( void  )

Returns a quad with dimensions 1x1, on the XY plane, centered at the origin.

The quad consists of only positions and texture coordinates (without normals, tangents, or bitangents).

This mesh is shared. Don't modify its contents.

void VuoMesh_release ( const VuoMesh  v)

Automatically generated function.

void VuoMesh_retain ( const VuoMesh  v)

Automatically generated function.

void VuoMesh_upload ( VuoMesh  mesh)
unsigned long VuoSubmesh_getGlMode ( VuoSubmesh  submesh)

Returns the GL mode (e.g., GL_TRIANGLES) that submesh should be interpreted as.

unsigned long VuoSubmesh_getSplitPrimitiveCount ( VuoSubmesh  submesh)

Returns the number of split primitives in submesh.

For example:

  • If the submesh is VuoMesh_IndividualTriangles and has elementCount=6, it would render 2 triangles, so this function returns 2.
  • If the submesh is VuoMesh_TriangleStrip and has elementCount=6, it would render 4 triangles, so this function returns 4.
unsigned long VuoSubmesh_getSplitVertexCount ( VuoSubmesh  submesh)

Returns the number of split vertices in submesh.

For example:

  • If the submesh is VuoMesh_IndividualTriangles and has elementCount=6, it would render 2 triangles, each of which has 3 vertices, so this function returns 6.
  • If the submesh is VuoMesh_TriangleStrip and has elementCount=6, it would render 4 triangles, each of which has 3 vertices, so this function returns 12.
char* VuoSubmesh_getSummary ( const VuoSubmesh  value)

A brief summary of the contents of this submesh.

Example:
4 vertices in a fan of 2 triangles
with first position (0,0,0,0)
Example:
8 vertices, 12 triangles
with first position (-0.5,-0.5,-0.5,0)
Todo:
Report if value.elementCount isn't a multiple of 3.
VuoSubmesh VuoSubmesh_make ( unsigned int  vertexCount,
unsigned int  elementCount 
)

Allocates the vertex (position, normal, ...) and element arrays.

VuoSubmesh VuoSubmesh_makeGl ( unsigned int  vertexCount,
unsigned int  combinedBuffer,
unsigned int  combinedBufferSize,
void *  normalOffset,
void *  tangentOffset,
void *  bitangentOffset,
void *  textureCoordinateOffset,
unsigned int  elementCount,
unsigned int  elementBuffer,
unsigned int  elementBufferSize,
VuoMesh_ElementAssemblyMethod  elementAssemblyMethod 
)

Creates a VuoSubmesh consisting of data that's already been uploaded to the GPU.