Repository navigation
build assembly zh
laurel Lin edited this page Aug 22, 2026
·
3 revisions
组装层:把 logic 层产出的 ShapeSpec[] 转成 Blockbench 真实的 Cube/Group。这是整个项目中唯一 import
Cube / Group 的模块(依赖 Blockbench 全局 API)。
把三个零件搬进新工作区,作为弯道渲染基础分组 segment_left / segment_right / tie(Create 曲线渲染
用这三个模型),分组内各含对应零件的全部元素(cube 体块 + mesh 组),挂到轨道大组 parent 下、与各方向
轨道形状并列。布局 = z_ortho 直轨「靠近 x 轴那半边」的轨道单元:
-
segment_left/segment_right:轨道模型自身中心(Java 为 xz(8,8)、其他格式为 (0,0))的 x 归零 (offset.x = -xMid),近 z 端靠在 xy 平面,底面抬升到 轨道高度 + 整体 Y 偏移;两条钢轨各自以自身 中心为轴(Create 的 segment_left/right.obj 同样以钢轨自身中心为 x=0,游戏渲染时摆到 ±轨距/2)。 -
tie:移到 z_ortho 靠近 x 轴的第一个枕木位置(z=4 = 枕木间距/2),横向居中于 x=0,底面仅加整体 Y 偏移(不抬升)。
export function buildBaseParts(
parent: Group,
parts: { left: PartModel; right: PartModel; tie: PartModel },
config: TrackConfig,
textureByKey?: Map<string, Texture>
): Group[];生成全部形状,挂到父 Group(名 = 当前工作区名,默认 'track')下。每个形状一个子 Group,内含其 cube
与零件的 mesh 组(specToMesh 走官方 new Mesh + addVertices + addFaces(new MeshFace) API;必须传
vertices:{},否则 Mesh 构造器会塞一个默认 2×2×2 方块)。输出工作区为 Java Block/Item 时,把整体几何
平移到 xz 平面 (8,8),保证关于画布中心对称(同导入时的归一化约定)。textureByKey 非空时把零件源纹理
应用到对应面。
export function buildAllShapes(shapes: ShapeSpec[], textureByKey?: Map<string, Texture>): Group;把 Blockbench 元素(Cube/Group/Mesh)转成 logic 层的 RawElement[],供零件解析(从当前项目提取零件时
使用)。Group 递归展开;mesh 用 getSaveCopy() 序列化(vertices/faces/origin/rotation),面纹理是
uuid(非下标)。
export function elementsToRaw(elements: (Cube | Group | Mesh)[]): RawElement[];← 返回中文接口文档