#[non_exhaustive]pub struct PolylineItem {Show 17 fields
pub positions: Vec<[f32; 3]>,
pub scalars: Vec<f32>,
pub strip_lengths: Vec<u32>,
pub scalar_range: Option<(f32, f32)>,
pub colourmap_id: Option<ColourmapId>,
pub default_colour: [f32; 4],
pub line_width: f32,
pub id: u64,
pub node_colours: Vec<[f32; 4]>,
pub edge_scalars: Vec<f32>,
pub edge_colours: Vec<[f32; 4]>,
pub node_radii: Vec<f32>,
pub node_vectors: Vec<[f32; 3]>,
pub edge_vectors: Vec<[f32; 3]>,
pub vector_scale: f32,
pub appearance: AppearanceSettings,
pub selected: bool,
}Expand description
A polyline (stream tracer) item to render in the viewport.
All streamlines for one source are concatenated into a single vertex buffer.
strip_lengths records how many vertices belong to each individual streamline.
§Curve network quantities
In addition to the existing per-node scalar path (scalars/colourmap_id), this
item supports several curve-network quantities:
- Per-edge scalars (
edge_scalars): one value per segment; rendered as a flat constant colour per edge (both endpoints share the same LUT value). - Per-node colours (
node_colours): direct RGBA per node; takes priority over scalar-driven colouring. - Per-edge colours (
edge_colours): direct RGBA per segment; takes priority over edge scalars. - Per-node radius (
node_radii): per-node line width in pixels; overrides the globalline_width. - Node vectors (
node_vectors): world-space 3-D arrows at each node, rendered automatically asGlyphItemarrows. - Edge vectors (
edge_vectors): world-space 3-D arrows at each segment midpoint, also rendered asGlyphItemarrows.
Colour priority per segment: node_colours/edge_colours (direct) > edge_scalars >
scalars (per-node) > default_colour.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.positions: Vec<[f32; 3]>World-space positions for all streamlines, concatenated.
scalars: Vec<f32>Per-node scalar values (same length as positions). Empty = no scalar colouring.
strip_lengths: Vec<u32>Number of vertices per individual streamline strip.
scalar_range: Option<(f32, f32)>Scalar range for LUT mapping. None = auto from min/max of scalars or edge_scalars.
colourmap_id: Option<ColourmapId>Colourmap for scalar colouring. None = viridis.
default_colour: [f32; 4]Fallback colour when no scalar or direct-colour data is provided.
line_width: f32Global line width in pixels. Used when node_radii is empty.
id: u64Unique ID for identification. 0 = not pickable.
node_colours: Vec<[f32; 4]>Per-node direct RGBA colours. Length must match positions. Empty = not used.
Takes priority over scalar-driven colouring when non-empty.
edge_scalars: Vec<f32>Per-edge scalar values. Length = total segment count across all strips (sum of
strip_lengths[i] - 1). Used when scalars is empty; both endpoints of each
segment share the same LUT value (flat constant colour per edge).
edge_colours: Vec<[f32; 4]>Per-edge direct RGBA colours. Length = total segment count. Takes priority over
edge_scalars when non-empty.
node_radii: Vec<f32>Per-node line width in pixels. Length must match positions. When non-empty,
overrides the global line_width; adjacent endpoints are linearly interpolated
along each segment.
node_vectors: Vec<[f32; 3]>Per-node world-space vectors. Length must match positions. When non-empty the
renderer automatically generates a GlyphItem (arrows at node positions).
edge_vectors: Vec<[f32; 3]>Per-edge world-space vectors. Length = total segment count. When non-empty the
renderer automatically generates a GlyphItem (arrows at segment midpoints).
vector_scale: f32Scale applied to generated arrow glyphs from node_vectors/edge_vectors.
appearance: AppearanceSettingsPer-item appearance overrides (hidden, unlit, opacity, wireframe).
selected: boolWhether this polyline set is selected at object level. When true and
InteractionFrame::outline_selected is set, the renderer draws a smooth
outline ring around the node positions. Default: false.
Trait Implementations§
Source§impl Clone for PolylineItem
impl Clone for PolylineItem
Source§fn clone(&self) -> PolylineItem
fn clone(&self) -> PolylineItem
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for PolylineItem
impl RefUnwindSafe for PolylineItem
impl Send for PolylineItem
impl Sync for PolylineItem
impl Unpin for PolylineItem
impl UnsafeUnpin for PolylineItem
impl UnwindSafe for PolylineItem
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for 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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.