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§
Source§impl 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 Freeze for Geometry
impl RefUnwindSafe for Geometry
impl Send for Geometry
impl Sync for Geometry
impl Unpin for Geometry
impl UnwindSafe for Geometry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more