这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第二十二章------创建生物(上)实体外观与动画设计。如果生物的外观和动画已经制作完毕,想要直接开始在模组项目中添加生物的各位请参考我的世界Java版1.21.4的Fabric模组开发教程(二十三)创建生物(下)实体在游戏中的实现(1)。想要阅读其他内容,请查看或订阅上面的专栏。
生物(Mob) 指的是游戏中有生命的且可自主移动的一类实体,相当广泛地存在于游戏各维度,是游戏玩法的重要组成部分之一。
在Fabric模组开发中,我们可以创建自己的生物,为自己的生物设计外观和动画、定义行为并设置相关属性。创建生物有着本教程迄今为止最复杂的操作步骤,对模组开发者的能力要求非常高。此外,在真实的生产环境下,生物的外观与动画设计远超出模组开发者的能力范围,也是对开发者团队合作水平的一次严峻考验。
考虑到大多数模组开发者没有平面设计的专业基础,在本章我们将创建一个与玩家外观和动画相似的生物------测试生物(test_entity) ,身体各部位完全由纯色方块构成,大小与玩家类似。在游戏中召唤后,只会漫无目的的行走和观望,没有其他行为。
本章需要用到一款像素三维建模软件Blockbench来完成生物立体模型的创建。创建实体模型及其动画,请按照以下步骤推进:
- Blockbench入门;
- 设计并建造实体;
- 导出实体;
- 设计动画;
- 导出实体动画;
- 将实体平面展开图导入项目;
言简意赅的说,创建生物就是使用Blockbench设计生物形象和动画,然后将其在游戏中注册的过程。
Blockbench入门
Blockbench是一款由Jannis Petersen开发且免费开源的低多边形三维模型编辑器,是模组开发中最常用的3D建模工具。考虑到Blockbench在Minecraft领域的优良生态环境,无论是我的世界Java版还是基岩版,绝大多数模组开发者都会使用Blockbench来创建自己生物形象、方块外观以及人物皮肤等内容。
想要开始使用Blockbench,可以访问Blockbench官网,下载Blockbench并安装到你的电脑上;

也可以使用Blockbench网页版(可能为英文),无需下载与安装;

本章不会提供完整的Blockbench教程,可以在本站或其他平台寻找教程资源。当然,也可以访问微软基岩版技术文档中的Blockbench教程文章Getting Started with Blockbench。
设计并建造实体
如果你的Blockbench已经就绪,就可以开始创建实体的模型了。依据前文所述,测试生物(test_entity)的身体各部位完全由纯色方块构成,且与玩家大小相同,即需要为其创建头部、身体和四肢,并设置与玩家相同的大小。
1.启动Blockbench,选择"模组版实体",点击"创建新模型";

如果启动后发现语言是英文,可以依次在菜单上选择"文件(File)→首选项(Preferences)→设置(Settings...)",在常规页选择语言为"中文(Chinese)";
2.在弹出的"项目"窗口中输入信息;

- 文件名:项目名称,可以为中文;
- 模型标识符:该实体在游戏中的标识符,必须为英文;
- 导出版本:选择"Fabric 1.17+(Yarn)";
其他设置无需修改,完成后点击"确定";
部分旧版本的Blockbench可能没有"Fabric 1.17+(Yarn)"的导出版本选项,这时需要安装插件"Fabric Modded
Entity",在菜单上依次点击"文件→插件...",搜索并安装插件
3.现在,为生物添加头部、身体和四肢。点击右侧"大纲"窗格中的加号(+)按钮,在空间中添加一个块,作为头部;

在工作区中默认使用移动工具,在空间中点击一个块,按住并拖动箭头可以移动一个块的位置;

4.在工作区上面的工具栏中选择"调整大小"工具;

按住并拖动块周围的矩形可以修改一个块的大小;

5.选择一个块,在右侧的"变换(TRANSFORM)"窗格中可以修改尺寸和位置;

头部标准的数值应当为:
| 头部 | X | Y | Z |
|---|---|---|---|
| 位置 | -4 | 24 | -4 |
| 尺寸 | 8 | 8 | 8 |
完成后,头部的位置和大小应当如下:

6.然后在"大纲"窗格中添加分组;

将头部所属的方块加入到分组当中,后续需要为每个部位创建一个分组,每个分组中只加入这个部位本身,分组名与部位名相同,方便导出后使用;

6.然后依次添加身体和四肢所对应的块,并设置好尺寸和位置;
所有部位的尺寸和位置如下表:
| 各部位 | X | Y | Z |
|---|---|---|---|
| 头部位置 | -4 | 24 | -4 |
| 头部尺寸 | 8 | 8 | 8 |
| 身体位置 | -4 | 12 | -2 |
| 身体尺寸 | 8 | 12 | 4 |
| 左臂位置 | -8 | 12 | -2 |
| 左臂尺寸 | 4 | 12 | 4 |
| 右臂位置 | 4 | 12 | -2 |
| 右臂尺寸 | 4 | 12 | 4 |
| 左腿位置 | -4 | 0 | -2 |
| 左腿尺寸 | 4 | 12 | 4 |
| 右腿位置 | 0 | 0 | -2 |
| 右腿尺寸 | 4 | 12 | 4 |
数据仅供参考,具体数值以实际情况为准。创建完毕后,各部位应当有自己的分组;

其展开图应当如下:

现在,实体模型的制作基本完毕,其尺寸和外观与玩家类似。

导出实体
实体模型制作完毕后,我们需要将模型导出为Java文件作为备用。
在Blockbench的菜单中依次点击"文件→导出→导出为Java版实体",将文件妥善保存到固定位置;

文件名没有要求,其中的部分代码将在注册实体时使用。
设计动画
实体的动画设计是创建实体的关键一环,为实体添加动画可以让生物更加鲜活生动。这里我们只为其添加一个行走的动画,即为实体提供走路时摆臂和抬腿的动作。
1.在Blockbench中点击右上角的"动画模式",切换当前工作区模式;

2.在"动画"窗格中右键,选择"添加动画";

3.在弹出的窗口中填写信息;

- 名称:动画的名称,只能是英文;
- 循环:选择"循环播放";
其他设置无需修改,完成后点击"确定";
4.动画制作的过程,就是在时间线上为实体各部位添加关键帧,使动画播放到关键帧处时,完成关键帧上特定的动作。
我们可以拆解走路的动画,即原状→迈出右腿+抬起左臂(左腿和右臂向相反方向运动)→迈出左腿+抬起右臂(右腿和左臂向相反方向运动)→恢复原状的过程,具体可以参考下图:

每张图都代表动画中的一个关键帧。我们约定,每个关键帧间隔为0.5秒。这里我们以右腿的动画为例子,a、b、c、d代表操作步骤。
a.点击右腿方块,再点击时间线中右腿旋转动画右侧的加号,添加一个关键帧;

第一个关键帧代表动画的开始,但此关键帧不需要任何动画,即前文提到的原状。
b.将时间线拖动到0.5秒处,再次点击旋转动画右侧的加号,添加第二个关键帧;

点击右腿方块,找到工作区上的工具栏中的"旋转"按钮;

按住并向上拖动红色旋转轴,使右腿方块沿X轴顺时针旋转20个偏移量,即实现了抬起右腿的动画;

迈步的动画已经完成,即前文提到的迈出右腿+...(...)。现在需要继续添加迈起左腿时右腿向相反方向移动的动画;
c.将时间线拖动到1秒处,再次点击旋转动画右侧的加号,添加第三个关键帧;

点击右腿方块,找到工作区上的工具栏中的"旋转"按钮,按住并向下拖动红色旋转轴,使右腿方块沿X轴逆时针旋转40个偏移量,此时X轴的偏移量应当为-20;

右脚的走路动画已经结束,即实现了前文提到的 ...+...(右腿...向相反方向运动)。现在,需要将右脚恢复到动画开始前的状态;
d.点击右腿方块,再点击时间线中右腿旋转动画右侧的加号,添加最后一个关键帧;

点击右腿方块,找到工作区上的工具栏中的"旋转"按钮,按住并向上拖动红色旋转轴,使右腿方块沿X轴逆时针旋转20个偏移量,此时X轴的偏移量应当为0;

此关键帧与第一个关键帧的实体状态是相同的,即恢复原状。这是动画的最后一个关键帧,代表着右腿的所有动画正式结束。另外,"关键帧间隔0.5秒"以及"旋转位移20"与原版游戏中标准动画的数值不同,只要动画播放时灵活而自然,数值不一定要与上面提到的完全相同。
5.现在,按照上一个步骤的动画制作方法,依次完成双臂和左腿的动画,使其与已经完成的右腿动画相配合。大致步骤相同,每个部位都将按照"选择一个部位的块→添加关键帧→旋转→添加下一个关键帧→旋转→..."的步骤重复。
完成后,在四肢上添加的关键帧应当如下:

点击"时间线"窗格上面的播放按钮,可以看到动画效果:

动画实际比动态图中的要更加流畅。至此,实体动画的制作正式完成。
导出实体动画
完成实体动画的制作后,我们需要将实体动画导出为Java文件作为备用。
在Blockbench的菜单中依次点击"文件→导出→导出模组实体动画",将文件妥善保存到固定位置;

也可以在"动画"窗格中点击咖啡杯图标,导出模组实体动画。
将实体平面展开图导入项目
实体的平面展开图是一张提供模型像素颜色信息的纹理图像,也称为UV。我们需要将其导出并添加到模组项目中作为备用。
1.如果工作区模式不是编辑模式,需要先切换到编辑模式;

2.在"UV"窗格中可以看到展开图预览,在"纹理"窗格中右键展开图,选择"另存为";

3.将文件复制到服务器模块的textures/entity目录中;

在项目中创建实体后便会使用此展开图上的纹理。
本章小结
本章详细阐述了通过Blockbench来设计生物外观并为其添加动画的步骤,可供初学者学习使用。此外,本文也是本教程中唯一一篇没有涉及代码编写与程序设计的文章,是相当业余的3D建模与动画设计教程,想要制作更加精美的实体模型,应当参考其他平台中专业的平面设计教程。在下一章节中,本章中创建的内容将被用于在模组开发中创建生物并为其添加动画。本文篇幅长,难度适中,但不需要模组开发的任何基础,对于初学者较为友好。感谢各位的阅读,有兴趣可以订阅此专栏!