pub struct RenderScene {
pub instances: Vec<Instance>,
pub meshes: Vec<MeshBuffer>,
pub lines: Vec<LineBuffer>,
pub points: Vec<PointBuffer>,
pub materials: Vec<Material>,
pub bounds: Option<Bounds>,
pub origin: Vec3,
pub warnings: Vec<SceneWarning>,
}Expand description
A flat render scene; see the module docs.
Fields§
§instances: Vec<Instance>Drawn geometry, parents before children.
meshes: Vec<MeshBuffer>§lines: Vec<LineBuffer>§points: Vec<PointBuffer>§materials: Vec<Material>§bounds: Option<Bounds>World bounds of every instance, None for an empty scene.
origin: Vec3World coordinates of the render origin; instance matrices map to world coordinates minus this point.
warnings: Vec<SceneWarning>Implementations§
Source§impl RenderScene
impl RenderScene
Sourcepub fn from_composition(
composition: &Composition,
options: &SceneOptions,
) -> Self
pub fn from_composition( composition: &Composition, options: &SceneOptions, ) -> Self
Builds the scene of a composition under its artificial root
([Composition::root]).
use openbim_ifcx::{compose, flatten, IfcxNode};
use openbim_ifcx_geometry::scene::{GeometryRef, RenderScene, SceneOptions};
let nodes: Vec<IfcxNode> = serde_json::from_str(r#"[
{"path": "panel", "attributes": {"usd::usdgeom::mesh": {
"points": [[0, 0, 0], [1, 0, 0], [0, 1, 0]], "faceVertexIndices": [0, 1, 2]}}},
{"path": "a", "inherits": {"type": "panel"}},
{"path": "b", "inherits": {"type": "panel"}, "attributes": {"usd::xformop":
{"transform": [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [5, 0, 0, 1]]}}}
]"#)?;
let composition = compose(&flatten(&nodes))?;
let scene = RenderScene::from_composition(&composition, &SceneOptions::default());
assert_eq!(scene.meshes.len(), 1, "stored once");
let paths: Vec<_> = scene.instances.iter().map(|i| i.path.as_str()).collect();
assert_eq!(paths, ["a", "b"]);
assert_eq!(scene.instances[1].geometry, GeometryRef::Mesh(0));
let bounds = scene.bounds.unwrap();
assert_eq!((bounds.min, bounds.max), ([0.0; 3], [6.0, 1.0, 0.0]));
assert_eq!(scene.origin, [3.0, 0.5, 0.0]);Sourcepub fn from_root(root: &ComposedNode, options: &SceneOptions) -> Self
pub fn from_root(root: &ComposedNode, options: &SceneOptions) -> Self
Builds the scene of root and everything below it. Instance paths
are relative to root, which itself has path ""; its own
attributes, including a transform, apply like those of any node.
Sourcepub fn triangle_count(&self) -> usize
pub fn triangle_count(&self) -> usize
Number of triangles drawn, counting every instance.
Sourcepub fn segment_count(&self) -> usize
pub fn segment_count(&self) -> usize
Number of line segments drawn, counting every instance.
Sourcepub fn point_count(&self) -> usize
pub fn point_count(&self) -> usize
Number of points drawn, counting every instance.
Sourcepub fn instances_at(&self, path: &str) -> &[Instance]
pub fn instances_at(&self, path: &str) -> &[Instance]
The instances drawn for the node at path, at most one per
geometry kind. They are adjacent because instances are listed in
walk order. Linear in the number of instances.
Trait Implementations§
Source§impl Clone for RenderScene
impl Clone for RenderScene
Source§fn clone(&self) -> RenderScene
fn clone(&self) -> RenderScene
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more