模型¶
Minecraft基岩版中支持多种格式的模型(Model)。这些模型可以用于定义手持物品、方块、实体等的外观。模型通常由多个元素组成,每个元素由多个面组成,每个面由多个顶点组成。每个顶点可以定义其坐标、法向量、纹理坐标等信息。
硬编码模型¶
极少部分实体、大部分原版方块和所有方块实体目前仍然使用硬编码模型。硬编码模型是指模型的定义直接写在游戏代码中,无法通过资源包进行修改。这些模型通常逻辑较为复杂,数据驱动尚未实现,因此无法使用资源包进行修改。
方块形状¶
硬编码模型的方块使用名为方块形状(Block Shape)的方式定义。每种方块形状是一个预先设定好的方块模型,同一种方块形状可以被多个方块使用。目前,方块形状与方块的挂接关系也可以通过数据驱动修改,但是在国际版中,只有原版方块可以使用数据驱动修改其方块形状。在中国版中,所有自定义方块皆可以设置方块形状。方块形状本身不可以通过附加包自定义。
方块实体渲染器¶
方块实体使用名为方块实体渲染器(Block Entity Renderer)的方式定义。方块实体渲染器定义了方块实体的模型、纹理、渲染方式等信息。方块实体渲染器不可以通过附加包自定义。在中国版中,自定义的方块实体可以使用数据驱动挂接几何体模型,而非渲染器。
几何体模型¶
几何体模型(Geometry Model)是基岩版中最为广泛使用的一种模型,简称为几何体(Geometry)。在中国版的一些文档中,也被称为原版模型(Vanilla Model)。几何体模型使用JSON格式定义,可以通过附加包进行修改。每个几何体模型由多个骨骼(Bone)组成,每个骨骼由多个立方体(Cube)组成。立方体定义了一个立方体的位置、大小、旋转、纹理坐标等信息。几何体模型可以定义多个动画(Animation),每个动画由多个关键帧(Keyframe)组成,每个关键帧定义了一个动画的状态。在附加包中,几何体模型和其动画是分别在不同的文件中定义的。几何体的动画由动画控制器(Animation Controller)控制。目前,只有实体可以挂接动画和动画控制器。
几乎所有原版实体的模型都已经使用几何体模型进行定义。几何体模型的优势在于可以通过附加包进行修改,可以实现更多的自定义效果。通过附加包,其他人也可以修改原版实体的模型。自定义实体也可以挂接几何体模型和动画。
自定义方块目前也可以挂接几何体模型。虽然不能通过动画实现位移等效果,但是可以在几何体模型中定义不同场景下的物品显示变换,实现在GUI、第一人称和第三人称手持、放置等场景下的不同显示效果。
在中国版中,自定义方块实体可以通过挂接一个客户端实体的方式间接挂接几何体模型及其动画,从而使用几何体模型定义其外观。
附着物是一种特殊的客户端实体,可以挂接几何体模型,并附着在其他实体上。附着物可以用于实现一些特殊的效果,例如挂接在实体头部的气泡、挂接在实体手部的物品等。
几何体模型可以使用Blockbench等模型编辑器进行制作。
骨架模型¶
骨架模型(Skeleton Model)是中国版中独有的模型种类,在中国版官方文档中也被称为骨骼模型(英文同上)。骨架模型使用JSON格式定义,可以通过附加包进行修改,但一般而言,更倾向于使用工具直接生成。骨架模型能够支持挂接中国版特效、挂接中国版序列帧动画并在纸娃娃状态下播放动画,但不支持作为方块模型和附着物模型。
在定义时,骨架模型除了定义了骨架(Skeleton)信息外,还一并定义了动画(Animation)和网格(Mesh)信息。额外的,还可以一并定义该模型使用的材质(Material)信息,同时定义通过该材质传递给着色器允许使用的纹理(Texture)贴图。此外,还可以一并定义该模型使用的特效(Effect)和序列帧动画(Frame Animation)信息。
骨架模型可以使用3D Max、CINEMA 4D、Autodesk Maya、Blender等多种3D建模软件进行制作。
中国版方块几何体模型¶
在中国版中,可以额外选择使用中国版特殊的方块几何体模型(Block Geometry Model)格式来定义方块的模型。方块几何体使用JSON格式定义,可以通过附加包进行修改,但往往使用MCStudio的编辑器的导入功能根据Blockbench项目直接转换生成。要想成功转换导入,原本的几何体模型的Blockbench项目必须使用“通用模型”格式。
中国版的方块几何体可以直接在模型内实现一些特殊的Molang控制效果,例如条件显示某些骨骼。除此之外也有一些特殊的优化。中国版方块几何体不支持模型膨胀。