public class MeshPart extends Object
Mesh
, along with the primitive type. The vertices subset is
described by an offset and size. When the mesh is indexed (which is when Mesh.getNumIndices()
> 0), then the
offset
represents the offset in the indices array and size
represents the number of indices. When the mesh
isn't indexed, then the offset
member represents the offset in the vertices array and the size
member
represents the number of vertices.
In other words: Regardless whether the mesh is indexed or not, when primitiveType
is not a strip, then size
equals the number of primitives multiplied by the number of vertices per primitive. So if the MeshPart represents 4 triangles (
primitiveType
is GL_TRIANGLES), then the size
member is 12 (4 triangles * 3 vertices = 12 vertices total).
Likewise, if the part represents 12 lines (primitiveType
is GL_LINES), then the size is 24 (12 lines * 2 vertices = 24
vertices total).
Note that some classes might require the mesh (part) to be indexed.
The Mesh
referenced by the mesh
member must outlive the MeshPart. When the mesh is disposed, the MeshPart is
unusable.Modifier and Type | Field and Description |
---|---|
Vector3 |
center
The offset to the center of the bounding box of the shape, only valid after the call to
update() . |
Vector3 |
halfExtents
The location, relative to
center , of the corner of the axis aligned bounding box of the shape. |
String |
id
Unique id within model, may be null.
|
Mesh |
mesh
The Mesh the part references, also stored in
Model |
int |
offset
The offset in the
mesh to this part. |
int |
primitiveType
The primitive type, OpenGL constant e.g:
GL20.GL_TRIANGLES , GL20.GL_POINTS , GL20.GL_LINES ,
GL20.GL_LINE_STRIP , GL20.GL_TRIANGLE_STRIP |
float |
radius
The radius relative to
center of the bounding sphere of the shape, or negative if not calculated yet. |
int |
size
The size (in total number of vertices) of this part in the
mesh . |
Constructor and Description |
---|
MeshPart()
Construct a new MeshPart, with null values.
|
MeshPart(MeshPart copyFrom)
Construct a new MeshPart which is an exact copy of the provided MeshPart.
|
MeshPart(String id,
Mesh mesh,
int offset,
int size,
int type)
Construct a new MeshPart and set all its values.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(MeshPart other)
Compares this MeshPart to the specified MeshPart and returns true if they both reference the same
Mesh and the
offset , size and primitiveType members are equal. |
boolean |
equals(Object arg0) |
void |
render(ShaderProgram shader)
Renders the mesh part using the specified shader, must be called in between
ShaderProgram.begin() and
ShaderProgram.end() . |
void |
render(ShaderProgram shader,
boolean autoBind)
Renders the mesh part using the specified shader, must be called in between
ShaderProgram.begin() and
ShaderProgram.end() . |
MeshPart |
set(MeshPart other)
Set this MeshPart to be a copy of the other MeshPart
|
MeshPart |
set(String id,
Mesh mesh,
int offset,
int size,
int type)
Set this MeshPart to given values, does not
update() the bounding box values. |
void |
update()
|
public String id
equals(MeshPart)
public int primitiveType
GL20.GL_TRIANGLES
, GL20.GL_POINTS
, GL20.GL_LINES
,
GL20.GL_LINE_STRIP
, GL20.GL_TRIANGLE_STRIP
public int offset
mesh
to this part. If the mesh is indexed (Mesh.getNumIndices()
> 0), this is the offset
in the indices array, otherwise it is the offset in the vertices array.public int size
mesh
. When the mesh is indexed (
Mesh.getNumIndices()
> 0), this is the number of indices, otherwise it is the number of vertices.public final Vector3 center
update()
.public final Vector3 halfExtents
center
, of the corner of the axis aligned bounding box of the shape. Or, in other words:
half the dimensions of the bounding box of the shape, where Vector3.x
is half the width, Vector3.y
is half
the height and Vector3.z
is half the depth. Only valid after the call to update()
.public float radius
center
of the bounding sphere of the shape, or negative if not calculated yet. This is the
same as the length of the halfExtents
member. See update()
.public MeshPart()
public MeshPart(String id, Mesh mesh, int offset, int size, int type)
id
- The id of the new part, may be null.mesh
- The mesh which holds all vertices and (optional) indices of this part.offset
- The offset within the mesh to this part.size
- The size (in total number of vertices) of the part.type
- The primitive type of the part (e.g. GL_TRIANGLES, GL_LINE_STRIP, etc.).public MeshPart(MeshPart copyFrom)
copyFrom
- The MeshPart to copy.public MeshPart set(MeshPart other)
other
- The MeshPart from which to copy the valuespublic MeshPart set(String id, Mesh mesh, int offset, int size, int type)
update()
the bounding box values.public void update()
center
, halfExtents
and radius
values. This is considered a costly
operation and should not be called frequently. All vertices (points) of the shape are traversed to calculate the maximum and
minimum x, y and z coordinate of the shape. Note that MeshPart is not aware of any transformation that might be applied when
rendering. It calculates the untransformed (not moved, not scaled, not rotated) values.public boolean equals(MeshPart other)
Mesh
and the
offset
, size
and primitiveType
members are equal. The id
member is ignored.other
- The other MeshPart to compare this MeshPart to.id
member), false otherwise.public void render(ShaderProgram shader, boolean autoBind)
ShaderProgram.begin()
and
ShaderProgram.end()
.shader
- the shader to be usedautoBind
- overrides the autoBind member of the Meshpublic void render(ShaderProgram shader)
ShaderProgram.begin()
and
ShaderProgram.end()
.shader
- the shader to be usedCopyright © 2016. All rights reserved.