pub struct Geometry {
pub base: Shape,
pub tex_coords: Vec<Point2<f32>>,
pub faces: Vec<[u32; 3]>,
pub joints: Joints,
pub shapes: Vec<Shape>,
}
Expand description
A collection of vertices, their normals, and faces that defines the shape of a polyhedral object.
Examples
Tetrahedron of unit height and base radius.
use std::f32::consts::PI;
let vertices = vec![
[0.0, 1.0, 0.0].into(),
[0.0, 0.0, 1.0].into(),
[(2.0 * PI / 3.0).sin(), 0.0, (2.0 * PI / 3.0).cos()].into(),
[(4.0 * PI / 3.0).sin(), 0.0, (4.0 * PI / 3.0).cos()].into(),
];
let faces = vec![
[0, 1, 2],
[0, 2, 3],
[0, 3, 1],
[1, 3, 2],
];
three::Geometry {
faces,
base: three::Shape {
vertices,
.. three::Shape::default()
},
.. three::Geometry::default()
}
Notes
- If any vertex normals, tangents, or texture co-ordinates are provided,
the number of entries in each array must match the number of entries
in
vertices
. - If joints are provided, the number of entries in
joints.indices
must match the number of entries injoints.weights
.
Fields
base: Shape
Idle shape of the geometry.
tex_coords: Vec<Point2<f32>>
Texture co-ordinates.
faces: Vec<[u32; 3]>
Face indices.
When omitted, the vertex order [[0, 1, 2], [3, 4, 5], ...]
is
assumed.
joints: Joints
Properties for vertex skinning.
shapes: Vec<Shape>
A list of blend shapes.
Implementations
sourceimpl Geometry
impl Geometry
sourcepub fn with_vertices(vertices: Vec<Point3<f32>>) -> Self
pub fn with_vertices(vertices: Vec<Point3<f32>>) -> Self
Create Geometry
from vector of vertices.
Examples
Triangle in the XY plane.
let vertices = vec![
[-0.5, -0.5, 0.0].into(),
[ 0.5, -0.5, 0.0].into(),
[ 0.5, -0.5, 0.0].into(),
];
let geometry = three::Geometry::with_vertices(vertices);
sourcepub fn plane(width: f32, height: f32) -> Self
pub fn plane(width: f32, height: f32) -> Self
Creates planar geometry in the XY plane.
The width
and height
parameters specify the total length of the
geometry along the X and Y axes respectively.
Examples
Unit square in the XY plane, centered at the origin.
fn make_square() -> three::Geometry {
three::Geometry::plane(1.0, 1.0)
}
sourcepub fn cuboid(width: f32, height: f32, depth: f32) -> Self
pub fn cuboid(width: f32, height: f32, depth: f32) -> Self
Creates cuboidal geometry.
The width
, height
, and depth
parameters specify the total length of
the geometry along the X, Y, and Z axes respectively.
Examples
Unit cube, centered at the origin.
fn make_cube() -> three::Geometry {
three::Geometry::cuboid(1.0, 1.0, 1.0)
}
sourcepub fn cylinder(
radius_top: f32,
radius_bottom: f32,
height: f32,
radius_segments: usize
) -> Self
pub fn cylinder(
radius_top: f32,
radius_bottom: f32,
height: f32,
radius_segments: usize
) -> Self
Creates cylindrial geometry.
Examples
Cylinder of unit height and radius, using 12 segments at each end.
fn make_cylinder() -> three::Geometry {
three::Geometry::cylinder(1.0, 1.0, 1.0, 12)
}
Cone of unit height and unit radius at the bottom.
fn make_cone() -> three::Geometry {
three::Geometry::cylinder(0.0, 1.0, 1.0, 12)
}
sourcepub fn uv_sphere(
radius: f32,
equatorial_segments: usize,
meridional_segments: usize
) -> Self
pub fn uv_sphere(
radius: f32,
equatorial_segments: usize,
meridional_segments: usize
) -> Self
Creates geometry for a sphere, using the UV method.
equatorial_divisions
specifies the number of segments about the sphere equator that lies in the XZ plane.meridional_segments
specifies the number of segments around the sphere meridian that lies in the YZ plane.
fn make_sphere() -> three::Geometry {
three::Geometry::uv_sphere(1.0, 12, 12)
}
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Geometry
impl Send for Geometry
impl Sync for Geometry
impl Unpin for Geometry
impl UnwindSafe for Geometry
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<T> Pointable for T
impl<T> Pointable for T
impl<T> SetParameter for T
impl<T> SetParameter for T
fn set<T>(&mut self, value: T) -> <T as Parameter<Self>>::Resultwhere
T: Parameter<Self>,
fn set<T>(&mut self, value: T) -> <T as Parameter<Self>>::Resultwhere
T: Parameter<Self>,
value
as a parameter of self
.