pub struct MeshVertexIntrinsicVectorQuantity { /* private fields */ }Expand description
A vertex intrinsic vector quantity on a surface mesh.
Stores 2D tangent-space vectors along with a per-vertex tangent basis. These are projected to 3D world space for rendering.
Implementations§
Source§impl MeshVertexIntrinsicVectorQuantity
impl MeshVertexIntrinsicVectorQuantity
Sourcepub fn new(
name: impl Into<String>,
structure_name: impl Into<String>,
vectors: Vec<Vec2>,
basis_x: Vec<Vec3>,
basis_y: Vec<Vec3>,
) -> Self
pub fn new( name: impl Into<String>, structure_name: impl Into<String>, vectors: Vec<Vec2>, basis_x: Vec<Vec3>, basis_y: Vec<Vec3>, ) -> Self
Creates a new vertex intrinsic vector quantity.
Sourcepub fn set_n_sym(&mut self, n: u32) -> &mut Self
pub fn set_n_sym(&mut self, n: u32) -> &mut Self
Sets the symmetry order (1=vector, 2=line, 4=cross).
Sourcepub fn length_scale(&self) -> f32
pub fn length_scale(&self) -> f32
Gets the length scale.
Sourcepub fn set_length_scale(&mut self, scale: f32) -> &mut Self
pub fn set_length_scale(&mut self, scale: f32) -> &mut Self
Sets the length scale.
Sourcepub fn set_radius(&mut self, r: f32) -> &mut Self
pub fn set_radius(&mut self, r: f32) -> &mut Self
Sets the radius.
Sourcepub fn compute_world_vectors(&self) -> Vec<Vec3>
pub fn compute_world_vectors(&self) -> Vec<Vec3>
Project 2D tangent-space vectors to 3D world space.
Sourcepub fn compute_symmetric_world_vectors(&self) -> Vec<(usize, Vec3)>
pub fn compute_symmetric_world_vectors(&self) -> Vec<(usize, Vec3)>
Generate symmetry-rotated copies of the world vectors.
For n_sym = 1, returns the original vectors.
For n_sym = 2, returns each vector and its negation (line field).
For n_sym = 4, returns each vector rotated by 0, 90, 180, 270 degrees in the tangent plane.
Sourcepub fn auto_scale(&mut self, structure_length_scale: f32)
pub fn auto_scale(&mut self, structure_length_scale: f32)
Auto-scales length and radius based on the structure’s bounding box diagonal.
Sourcepub fn init_gpu_resources(
&mut self,
device: &Device,
bind_group_layout: &BindGroupLayout,
camera_buffer: &Buffer,
base_positions: &[Vec3],
)
pub fn init_gpu_resources( &mut self, device: &Device, bind_group_layout: &BindGroupLayout, camera_buffer: &Buffer, base_positions: &[Vec3], )
Initializes GPU resources for this vector quantity.
Projects 2D tangent-space vectors to 3D world space (with symmetry) and creates GPU buffers for rendering as arrows.
Sourcepub fn render_data(&self) -> Option<&VectorRenderData>
pub fn render_data(&self) -> Option<&VectorRenderData>
Returns the render data if initialized.
Sourcepub fn update_uniforms(&self, queue: &Queue, model: &Mat4)
pub fn update_uniforms(&self, queue: &Queue, model: &Mat4)
Updates GPU uniforms with the given model transform.
Sourcepub fn build_egui_ui(&mut self, ui: &mut Ui) -> bool
pub fn build_egui_ui(&mut self, ui: &mut Ui) -> bool
Builds the egui UI for this quantity.
Trait Implementations§
Source§impl Quantity for MeshVertexIntrinsicVectorQuantity
impl Quantity for MeshVertexIntrinsicVectorQuantity
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Any for downcasting.Source§fn structure_name(&self) -> &str
fn structure_name(&self) -> &str
Source§fn kind(&self) -> QuantityKind
fn kind(&self) -> QuantityKind
Source§fn is_enabled(&self) -> bool
fn is_enabled(&self) -> bool
Source§fn set_enabled(&mut self, enabled: bool)
fn set_enabled(&mut self, enabled: bool)
Source§fn clear_gpu_resources(&mut self)
fn clear_gpu_resources(&mut self)
impl VertexQuantity for MeshVertexIntrinsicVectorQuantity
Auto Trait Implementations§
impl Freeze for MeshVertexIntrinsicVectorQuantity
impl !RefUnwindSafe for MeshVertexIntrinsicVectorQuantity
impl Send for MeshVertexIntrinsicVectorQuantity
impl Sync for MeshVertexIntrinsicVectorQuantity
impl Unpin for MeshVertexIntrinsicVectorQuantity
impl UnsafeUnpin for MeshVertexIntrinsicVectorQuantity
impl !UnwindSafe for MeshVertexIntrinsicVectorQuantity
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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