定义体积模型
体积模型是一种渲染复杂模型相对方便的方式。对体积模型应用纹理的方法与简单实心方块和长方体模型类似——每六面纹理会应用至模型子块的对应面,同时纹理缩放到完整方块面的大小。因此,纹理定义文件内的纹理定义与简单实心方块和长方体模型相同。
体积模型通过给定常量(即缩放比例)将方块的三轴进行分割,此常量一般为 2 的
模型由多行配置组成:首行为 block 设置,有如下属性:
id- 使用此模型的方块 ID。需要指定至少一个id属性,但数量不限——允许同一模型用在多个方块。见“方块 ID 数字”了解如何指定方块 ID 数字的详情。data- 对模型应用的方块增加匹配数据值的要求。默认值data=*表示匹配所有对应id属性下带有任何数据值的方块。否则,只匹配一或多个data=数字元数据的方块。scale- 模型三轴的划分数量。使得立方体划分为不同大小的子块,每个子块都是按比例缩小的子块。
例如,活塞延伸部分的体积模型可以将其划分为三轴上的八个部分:
block:id=34,data=0,data=8,scale=8在 block 设置之后,可以定义一或多层方块——从第零层(底层)到第 scale -1 层(顶层)。每层都有一个 layer 设置,表现为逗号分隔的数字列表,用于定义层数(若同一子块使用了相同样式,那么只需定义一次)。layer 之后的下一比例决定了子块的样式:每一行都表示 Z 轴(由低到高,顺序越靠后越高)上的一层方块,每一行都有 scale 设置(表示 X 轴上由低到高的子块)——用 * 表示被占据的部分,或 - 表示不被占据的部分。任何未指定的层数默认视作空白。
例如,对于面朝下伸出的活塞臂,完整定义配置如下:
block:id=34,data=0,data=8,scale=8
layer:2,3,4,5,6,7
--------
--------
--------
---**---
---**---
--------
--------
--------
layer:0,1
********
********
********
********
********
********
********
********在如上示例中,方块被切分为 8x8x8:8 层 8x8 的小方块。活塞头填充底部两层(第 0 和 1 层),而活塞柄部分则占据了中心的四分之一和剩下几层(第 2 至 7 层)。
体积模型旋转
除了手动定义额外的体积模型,也可以让现有的体积模型在 Y 轴上旋转 0、90、180 或 270 度形成新的模型。
若要通过旋转定义新模型,只需像正常方块那样定义 block(确保 scale 属性与源模型的匹配),然后接上 rotate。它的设置包含:
id- 原本体积模型的方块 ID(被旋转的模型名称)。见“方块 ID 数字”了解指定方块 ID 数字的详情。必填项。data- 原本体积模型的元数据值。必填项,且需要为数字。rot- 旋转度数,仅支持在 Y 轴上旋转。有效值为 0、90、180 或 270 度。必填项。
注意:纹理应用不受体积模型的旋转影响:对旋转前模型北面应用的纹理仍然会应用到旋转后的北面。
SnowCutieOwO