Struct three_d::core::CPUMesh [−][src]
pub struct CPUMesh {
pub name: String,
pub material_name: Option<String>,
pub positions: Vec<f32>,
pub indices: Option<Indices>,
pub normals: Option<Vec<f32>>,
pub tangents: Option<Vec<f32>>,
pub uvs: Option<Vec<f32>>,
pub colors: Option<Vec<u8>>,
}
Expand description
A CPU-side version of a triangle mesh. Can be constructed manually or loaded via io or via the utility functions for generating simple triangle meshes.
Fields
name: String
Name.
material_name: Option<String>
Name of the associated material, use this to match with CPUMaterial::name.
positions: Vec<f32>
The positions of the vertices. Three contiguous floats defines a 3D position (x, y, z)
, therefore the length must be divisable by 3.
If there is no indices associated with this mesh, three contiguous positions defines a triangle, in that case, the length must also be divisable by 9.
indices: Option<Indices>
The indices into the positions, normals, uvs and colors arrays which defines the three vertices of a triangle. Three contiguous indices defines a triangle, therefore the length must be divisable by 3.
normals: Option<Vec<f32>>
The normals of the vertices. Three contiguous floats defines a normal (x, y, z)
, therefore the length must be divisable by 3.
tangents: Option<Vec<f32>>
The tangents of the vertices, orthogonal direction to the normal.
Three contiguous floats defines a tangent (x, y, z)
and a value that specifies the handedness (either -1.0 or 1.0), therefore the length must be divisable by 4.
uvs: Option<Vec<f32>>
The uv coordinates of the vertices. Two contiguous floats defines a coordinate (u, v)
, therefore the length must be divisable by 2.
colors: Option<Vec<u8>>
The colors of the vertices. Four contiguous bytes defines a color (r, g, b, a)
, therefore the length must be divisable by 4.
The colors are assumed to be in linear space.
Implementations
Returns the material for this mesh in the given list of materials. Returns None
if no suitable material can be found.
Returns a square mesh spanning the xy-plane with positions in the range [-1..1]
in the x and y axes.
Returns a circle mesh spanning the xy-plane with radius 1 and center in (0, 0, 0)
.
Returns a sphere mesh with radius 1 and center in (0, 0, 0)
.
Returns an axis aligned unconnected cube mesh with positions in the range [-1..1]
in all axes.
Returns a cylinder mesh around the x-axis in the range [0..1]
and with radius 1.
Returns a cone mesh around the x-axis in the range [0..1]
and with radius 1 at -1.0.
Returns an arrow mesh around the x-axis in the range [0..1]
and with radius 1.
The tail length and radius should be in the range ]0..1[
.
Computes the per vertex normals and updates the normals of the mesh. It will override the current normals if they already exist.
Computes the per vertex tangents and updates the tangents of the mesh. It will override the current tangents if they already exist.
Iterates over all vertices in this mesh and calls the callback function with the index for each vertex.
Iterates over all triangles in this mesh and calls the callback function with the three indices, one for each vertex in the triangle.
Returns the position of the vertex with the given index.
Returns the normal of the vertex with the given index.
Returns the uv coordinates of the vertex with the given index.
Computes the axis aligned bounding box of the mesh.
Returns an error if the mesh is not valid.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for CPUMesh
impl UnwindSafe for CPUMesh
Blanket Implementations
Mutably borrows from an owned value. Read more
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more