lib3mf_core/model/
volumetric.rs

1use crate::model::ResourceId;
2use serde::{Deserialize, Serialize};
3
4/// Represents a stack of volumetric layers, defining a 3D volume via slices.
5/// Similar to SliceStack but typically implies raster/voxel data or implicit fields.
6#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct VolumetricStack {
8    pub id: ResourceId,
9    pub version: String, // e.g. "1.0"
10    pub layers: Vec<VolumetricLayer>,
11    pub refs: Vec<VolumetricRef>,
12}
13
14#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct VolumetricLayer {
16    pub z_height: f32, // The Z-height of this layer
17    // Content can be an image path, or raw data reference.
18    // Spec usually uses image stack approach or field.
19    // We will use a flexible 'path' to resource (e.g. texture path).
20    pub content_path: String,
21}
22
23#[derive(Debug, Clone, Default, Serialize, Deserialize)]
24pub struct VolumetricRef {
25    pub stack_id: ResourceId,
26    pub path: String, // Path to the other model file
27}