1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//! # 场景数据
//!
//! 定义从 glTF 文件提取的完整场景数据(网格 + 材质)。
use crateMeshData;
use crateMaterialData;
/// CPU 侧场景数据(单 submesh,向后兼容)
///
/// 包含网格几何数据和对应的材质信息。
///
/// # 示例
///
/// ```rust
/// use anvilkit_assets::scene::SceneData;
/// use anvilkit_assets::mesh::MeshData;
/// use anvilkit_assets::material::MaterialData;
/// use glam::{Vec2, Vec3};
///
/// let scene = SceneData {
/// mesh: MeshData {
/// positions: vec![Vec3::ZERO],
/// normals: vec![Vec3::Z],
/// texcoords: vec![Vec2::ZERO],
/// tangents: vec![[1.0, 0.0, 0.0, 1.0]],
/// indices: vec![0],
/// },
/// material: MaterialData::default(),
/// };
/// assert_eq!(scene.mesh.vertex_count(), 1);
/// ```
/// 单个子网格(mesh primitive + 对应材质)
/// 多子网格场景数据
///
/// 一个 glTF 模型可包含多个 primitive,每个 primitive 有独立的顶点数据和材质。
///
/// # 示例
///
/// ```rust
/// use anvilkit_assets::scene::MultiMeshScene;
///
/// let scene = MultiMeshScene { submeshes: vec![] };
/// assert_eq!(scene.submesh_count(), 0);
/// ```