Blockbench:建模、贴图与动画制作
Blockbench是一款免费软件,专为Minecraft的建模、贴图和动画制作而设计。它支持移动端浏览器、Windows 10和macOS平台。请前往blockbench.net下载安装。
建模入门
让我们开始吧。
打开Blockbench
选择_文件>新建>基岩版模型_(注意:Minecraft基岩版无法读取Java版模型)
此时会出现如下界面:

"文件名:"即输出文件名(示例将生成"skele_yaklin.geo.json")"模型标识符:"用于定义模型ID(无需命名空间),后续会设置简短名称- 必须勾选
"Box UV"以实现贴图的自动UV编辑与展开 "贴图高度"和"贴图宽度"决定模型纹理的分辨率
点击确认后进入工作区:

- ️工具栏包含移动、缩放、旋转等功能
- 右下角菜单可添加骨骼和立方体(立方体可独立旋转,骨骼会带动其下所有元素)
现在可以开始建模了!如需深入学习,推荐观看下方Everbloom Studio的教学视频:
贴图制作
完成模型后,让我们制作贴图!
在左下面板点击"创建贴图"
在"名称:"栏输入图片文件名(示例将输出为
ghost.png) 勾选"模板:"可生成带参考线的贴图模板
确认参数,分辨率需与建模时设置的值一致

点击右上角"绘画"工具开始绘制纹理
动画制作
模型和贴图完成后,进入右上角"动画"模式。
建议先调整工具栏,添加"导出动画"和"导入动画"按钮: 
点击"添加动画"(右上角+号),命名为
animation.{实体名称}.move在时间轴0帧处摆出行走动画的第一姿势
在0.5帧处创建第二关键帧

将时间轴移至1.0帧,复制第一帧(Ctrl+C/V)作为循环终点
右键动画选择"循环"使动作持续播放

保存作品
完成模型、贴图和行走动画后,通过_文件>保存模型_或_文件>导出基岩版几何体_保存。模型存于RP/models/entity,贴图存于RP/textures/entity/,动画存于RP/animations。恭喜你完成了首个实体的视觉创作!下方是完整文件示例。
不妨趁热打铁,为你独特的实体升级视觉效果或创作新角色?
查看代码
RP/models/entity/ghost.geo.json
json
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.ghost",
"texture_width": 64,
"texture_height": 64,
"visible_bounds_width": 3,
"visible_bounds_height": 3.5,
"visible_bounds_offset": [0, 1.25, 0]
},
"bones": [
{ "name": "root", "pivot": [0, 3, 0] },
{
"name": "body",
"parent": "root",
"pivot": [0, 4.625, 0],
"cubes": [
{
"origin": [-4, 3, -4],
"size": [8, 13, 8],
"uv": [0, 20]
}
]
},
{
"name": "leftArm",
"parent": "body",
"pivot": [4.6, 15.5, 0.5],
"cubes": [
{
"origin": [4.1, 7, -1],
"size": [3, 9, 3],
"uv": [32, 32]
}
]
},
{
"name": "rightArm",
"parent": "body",
"pivot": [-4.5, 15.5, 0.5],
"cubes": [
{
"origin": [-7.1, 7, -1],
"size": [3, 9, 3],
"uv": [32, 20]
}
]
},
{
"name": "head",
"parent": "body",
"pivot": [0, 16, 0],
"cubes": [
{
"origin": [-5, 16, -5],
"size": [10, 10, 10],
"uv": [0, 0]
}
]
}
]
}
]
}RP/animations/ghost.a.animations.json
json
{
"format_version": "1.8.0",
"animations": {
"animation.ghost.idle": {
"loop": true,
"animation_length": 3,
"bones": {
"body": {
"rotation": { "0.0": [10, 0, 0], "3.0": [10, 0, 0] },
"position": {
"0.0": [0, 0, 0],
"1.5": [0, 1, 0],
"3.0": [0, 0, 0]
}
},
"leftArm": {
"rotation": {
"0.0": [-10, 0, 0],
"1.5": [-5, 0, 0],
"3.0": [-10, 0, 0]
}
},
"rightArm": {
"rotation": {
"0.0": [-10, 0, 0],
"1.5": [-5, 0, 0],
"3.0": [-10, 0, 0]
}
},
"head": {
"rotation": {
"0.0": [-7.5, 0, 0],
"1.5": [-2.5, 0, 0],
"3.0": [-7.5, 0, 0]
}
}
}
},
"animation.ghost.attack": {
"animation_length": 0.75,
"bones": {
"body": {
"rotation": {
"0.0": [10, 0, 0],
"0.2917": [10, 15, 0],
"0.5": [22.5, -12.5, 0],
"0.75": [10, 0, 0]
},
"position": {
"0.0": [0, 0, 0],
"0.2917": [0, 0, 3],
"0.5": [0, 0, -3],
"0.75": [0, 0, 0]
}
},
"leftArm": {
"rotation": { "0.0": [-10, 0, 0], "0.75": [-10, 0, 0] }
},
"rightArm": {
"rotation": {
"0.0": [-10, 0, 0],
"0.2083": [-10, 0, 0],
"0.2917": [-10, 62.5, 117.5],
"0.5": [-80, -17.5, 22.5],
"0.75": [-10, 0, 0]
}
},
"head": {
"rotation": { "0.0": [-7.5, 0, 0], "0.75": [-7.5, 0, 0] }
}
}
},
"animation.ghost.move": {
"loop": true,
"animation_length": 1,
"bones": {
"body": {
"rotation": {
"0.0": [15, 0, 0],
"0.25": [15, -2.5, 0],
"0.5": [15, 0, 0],
"0.75": [15, 2.5, 0],
"1.0": [15, 0, 0]
},
"position": [0, 0, 0]
},
"leftArm": {
"rotation": {
"0.0": [15, 0, 0],
"0.5": [20, 0, 0],
"1.0": [15, 0, 0]
}
},
"rightArm": {
"rotation": {
"0.0": [15, 0, 0],
"0.5": [20, 0, 0],
"1.0": [15, 0, 0]
}
},
"head": {
"rotation": {
"0.0": [-12.5, 0, 0],
"0.5": [-15, 0, 0],
"1.0": [-12.5, 0, 0]
}
}
}
}
}
}










