Skip to main content

VolumeGrid

Struct VolumeGrid 

Source
pub struct VolumeGrid { /* private fields */ }
Expand description

A regular 3D grid structure.

VolumeGrid represents a regular axis-aligned 3D grid defined by:

  • Grid dimensions (number of nodes in X, Y, Z)
  • Bounding box (min and max corners in world space)

Node values are at grid vertices, cell values are at grid cell centers.

Implementations§

Source§

impl VolumeGrid

Source

pub fn new( name: impl Into<String>, node_dim: UVec3, bound_min: Vec3, bound_max: Vec3, ) -> Self

Creates a new volume grid.

§Arguments
  • name - The name of the grid
  • node_dim - Number of nodes in each dimension (X, Y, Z)
  • bound_min - Minimum corner of the grid bounding box
  • bound_max - Maximum corner of the grid bounding box
Source

pub fn new_uniform( name: impl Into<String>, dim: u32, bound_min: Vec3, bound_max: Vec3, ) -> Self

Creates a volume grid with uniform dimensions.

Source

pub fn node_dim(&self) -> UVec3

Returns the number of nodes in each dimension.

Source

pub fn cell_dim(&self) -> UVec3

Returns the number of cells in each dimension.

Source

pub fn num_nodes(&self) -> u64

Returns the total number of nodes.

Source

pub fn num_cells(&self) -> u64

Returns the total number of cells.

Source

pub fn bound_min(&self) -> Vec3

Returns the minimum bound.

Source

pub fn bound_max(&self) -> Vec3

Returns the maximum bound.

Source

pub fn grid_spacing(&self) -> Vec3

Returns the grid spacing (distance between adjacent nodes).

Source

pub fn flatten_node_index(&self, i: u32, j: u32, k: u32) -> u64

Flattens a 3D node index to a linear index.

Source

pub fn unflatten_node_index(&self, idx: u64) -> UVec3

Unflattens a linear node index to a 3D index.

Source

pub fn position_of_node(&self, i: u32, j: u32, k: u32) -> Vec3

Returns the world position of a node at the given 3D index.

Source

pub fn color(&self) -> Vec4

Gets the grid color.

Source

pub fn set_color(&mut self, color: Vec3) -> &mut Self

Sets the grid color.

Source

pub fn edge_color(&self) -> Vec4

Gets the edge color.

Source

pub fn set_edge_color(&mut self, color: Vec3) -> &mut Self

Sets the edge color.

Source

pub fn edge_width(&self) -> f32

Gets the edge width.

Source

pub fn set_edge_width(&mut self, width: f32) -> &mut Self

Sets the edge width.

Source

pub fn cube_size_factor(&self) -> f32

Gets the cube size factor.

Source

pub fn set_cube_size_factor(&mut self, factor: f32) -> &mut Self

Sets the cube size factor (0 = no cubes, 1 = full size).

Source

pub fn quantities_mut(&mut self) -> &mut [Box<dyn Quantity>]

Returns a mutable reference to the quantities list.

Source

pub fn init_render_data( &mut self, device: &Device, bind_group_layout: &BindGroupLayout, camera_buffer: &Buffer, queue: &Queue, )

Initializes GPU render data.

Source

pub fn render_data(&self) -> Option<&CurveNetworkRenderData>

Returns the render data if available.

Source

pub fn update_gpu_buffers(&self, queue: &Queue)

Updates GPU buffers per-frame (wireframe uniforms: edge color, edge width).

Source

pub fn add_node_scalar_quantity( &mut self, name: impl Into<String>, values: Vec<f32>, ) -> &mut Self

Adds a node scalar quantity to the grid.

Source

pub fn add_cell_scalar_quantity( &mut self, name: impl Into<String>, values: Vec<f32>, ) -> &mut Self

Adds a cell scalar quantity to the grid.

Source

pub fn build_egui_ui(&mut self, ui: &mut Ui, colormap_names: &[&str])

Builds the egui UI for this volume grid.

§Arguments
  • colormap_names - Available colormap names for quantity visualization. If empty, defaults to built-in names.

Trait Implementations§

Source§

impl HasQuantities for VolumeGrid

Source§

fn add_quantity(&mut self, quantity: Box<dyn Quantity>)

Adds a quantity to this structure.
Source§

fn get_quantity(&self, name: &str) -> Option<&dyn Quantity>

Gets a quantity by name.
Source§

fn get_quantity_mut(&mut self, name: &str) -> Option<&mut Box<dyn Quantity>>

Gets a mutable quantity by name.
Source§

fn remove_quantity(&mut self, name: &str) -> Option<Box<dyn Quantity>>

Removes a quantity by name.
Source§

fn quantities(&self) -> &[Box<dyn Quantity>]

Returns all quantities attached to this structure.
Source§

fn num_quantities(&self) -> usize

Returns the number of quantities attached.
Source§

impl Structure for VolumeGrid

Source§

fn as_any(&self) -> &dyn Any

Returns a reference to self as Any for downcasting.
Source§

fn as_any_mut(&mut self) -> &mut dyn Any

Returns a mutable reference to self as Any for downcasting.
Source§

fn name(&self) -> &str

Returns the unique name of this structure.
Source§

fn type_name(&self) -> &'static str

Returns the type name of this structure (e.g., “PointCloud”, “SurfaceMesh”).
Source§

fn bounding_box(&self) -> Option<(Vec3, Vec3)>

Returns the axis-aligned bounding box in world coordinates. Read more
Source§

fn length_scale(&self) -> f32

Returns a characteristic length scale for this structure.
Source§

fn transform(&self) -> Mat4

Returns the current model transform matrix.
Source§

fn set_transform(&mut self, transform: Mat4)

Sets the model transform matrix.
Source§

fn is_enabled(&self) -> bool

Returns whether this structure is currently visible.
Source§

fn set_enabled(&mut self, enabled: bool)

Sets the visibility of this structure.
Source§

fn draw(&self, _ctx: &mut dyn RenderContext)

Draws this structure to the scene. Read more
Source§

fn draw_pick(&self, _ctx: &mut dyn RenderContext)

Draws this structure for picking/selection. Read more
Source§

fn build_ui(&mut self, _ui: &dyn Any)

Builds the ImGui UI for this structure.
Source§

fn build_pick_ui(&self, _ui: &dyn Any, _pick: &PickResult)

Builds the ImGui UI for a picked element.
Source§

fn clear_gpu_resources(&mut self)

Clears all GPU resources (render data, pick buffers, etc.). Read more
Source§

fn refresh(&mut self)

Refreshes GPU resources after data changes.
Source§

fn center_bounding_box(&mut self)

Centers the camera on this structure’s bounding box.
Source§

fn reset_transform(&mut self)

Resets the transform to identity.
Source§

fn material(&self) -> &str

Returns the material name for this structure (e.g., “clay”, “wax”).
Source§

fn set_material(&mut self, _material: &str)

Sets the material for this structure by name.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,