主要组成以mesh为一个组成单元
bash
"mesh": [
{
"aid": [],
"jid": "",
"uid": "12131533353694159/0",
"xyz": [
-2.1253,
0,
1.3118,
-4.1093,
0,
3.1478,
-4.1093,
0,
1.3118,
-4.1093,
0,
3.1478,
-2.1253,
0,
1.3118,
-2.1253,
0,
3.1478
],
"normal": [
-4.1093,
1,
1.3118,
-4.1093,
1,
1.3118,
-4.1093,
1,
1.3118,
-4.1093,
1,
1.3118,
-4.1093,
1,
1.3118,
-4.1093,
1,
1.3118
],
"uv": [
0.01131,
0.01667,
0.29205,
-0.43018,
0.01131,
-0.43018,
0.29205,
-0.43018,
0.01131,
0.01667,
0.29205,
0.01667
],
"faces": [
0,
2,
1,
3,
5,
4
],
"material": "sge/23ce4eae-862c-4e22-b703-9f566d400e44/220",
"type": "Floor"
},
核心几何字段
bash
xyz - 顶点坐标
含义:存储所有顶点的3D坐标
格式:[x1, y1, z1, x2, y2, z2, ...]
作用:定义mesh的几何形状,用于生成点云
faces - 面索引
含义:定义如何连接顶点形成三角面片
格式:[v1, v2, v3, v4, v5, v6, ...](每3个索引一个三角形)
作用:与xyz配合定义完整的3D网格,用于点云采样
normal - 法线向量
含义:每个顶点的法线方向
作用:用于光照计算和渲染
uv - UV纹理坐标
含义:纹理映射坐标
作用:定义纹理如何贴到mesh表面,与material配合使用
标识和引用字段
bash
uid - 唯一标识符
含义:在整个场景中唯一标识这个mesh
作用:被scene.room[].children[].ref引用,用于查找和存储
material - 材质引用
含义:指向material数组中某个材质的uid
作用:关联mesh与材质信息(纹理、UV变换等)
对应关系:mesh.material → material[].uid
jid - 资源ID
含义:资源标识符
作用:在mesh中较少使用;在furniture中用于查找3D-FUTURE模型文件
对应关系:furniture.jid → model_info.json中的model_id → OBJ文件路径
aid - 附件ID
含义:附件ID数组
作用:当前代码中较少使用,主要用于数据完整性
分类和组织字段
bash
type - 网格类型
含义:标识mesh的类别
可能值:"Wall", "Floor", "Ceil", "Others"
作用:用于语义分类和点云标签分配
语义映射:wall→1, floor→2, ceil→3, others→4
constructid - 构造ID
含义:标识属于同一构造单元的mesh
作用:将相关mesh分组(如同一面墙的不同部分)
instanceid - 实例ID
含义:标识mesh在场景中的具体实例
作用:区分同一构造单元中的不同实例
字段关系
bash
mesh.material → material.uid → 获取材质信息(texture, UVTransform)
mesh.uid ← scene.room[].children[].ref → 房间引用mesh
mesh.type → 语义标签 → 点云生成时的标签分配
mesh.xyz + mesh.faces → 构建3D网格 → 采样点云
与其他文件的对应
bash
与Material的关系:
mesh.material(字符串)→ material[].uid → 获取material.texture和material.UVTransform
与Room的关系:
scene.room[].children[].ref → mesh.uid → 将mesh关联到房间
与3D-FUTURE的关系:
注意:mesh的jid通常不直接对应3D-FUTURE模型
只有furniture.jid才对应3D-FUTURE模型文件