在预备课中我们已经了解了4D皮肤的运作原理,在这一课中我们将会着重讲述编辑前的转换工作和json的文件结构
准备工作
-
从多玩我的世界盒子下载任意一个皮肤,如下图,不要点使用!
- Alex的材质文件,如下图,请右键保存,并重命名为alex.png
- alex.json
{
"geometry.humanoid": {
"bones": [{
"name": "body",
"pivot": [0.0, 24.0, 0.0],
"cubes": [{
"origin": [-4.0, 12.0, -2.0],
"size": [8, 12, 4],
"uv": [16, 16]
}]
},
{
"name": "head",
"pivot": [0.0, 24.0, 0.0],
"cubes": [{
"origin": [-4.0, 24.0, -4.0],
"size": [8, 8, 8],
"uv": [0, 0]
}]
},
{
"name": "leftArm",
"reset": true,
"mirror": false,
"pivot": [5.0, 21.5, 0.0],
"cubes": [{
"origin": [4.0, 11.5, -2.0],
"size": [3, 12, 4],
"uv": [32, 48]
}]
},
{
"name": "rightArm",
"reset": true,
"pivot": [-5.0, 21.5, 0.0],
"cubes": [{
"origin": [-7.0, 11.5, -2.0],
"size": [3, 12, 4],
"uv": [40, 16]
}]
},
{
"pivot": [-6, 14.5, 1],
"neverRender": true,
"name": "rightItem",
"parent": "rightArm"
},
{
"name": "rightLeg",
"pivot": [-1.9, 12.0, 0.0],
"cubes": [{
"origin": [-3.9, 0.0, -2.0],
"size": [4, 12, 4],
"uv": [0, 16]
}]
},
{
"name": "leftLeg",
"reset": true,
"mirror": false,
"pivot": [1.9, 12.0, 0.0],
"cubes": [{
"origin": [-0.1, 0.0, -2.0],
"size": [4, 12, 4],
"uv": [16, 48]
}]
}
]
}
}
操作方法
- 在mt管理器左栏依次打开/mctools/skin,然后将其设为首页(右上角的菜单里有)以方便以后操作,在右栏里找到alex.png(就是刚刚下载的皮肤,需要重命名),长按选择移动,然后alex.png就到了左栏里。
- 激活左栏,点击最下方的加号,输入alex.json,然后选择左下角的“文件”
- 打开刚建立的alex.json,将上方提供的代码全部粘贴到里面,点击右上角的菜单,选“保存”,然后返回,此时文件夹会出现alex.json.bak,删掉即可。
这些工作完成后,应该会有alex.json,alex.png,和刚刚下载的皮肤,一般是一串数字.png。 - 记住你刚刚下载的皮肤的那串数字,然后将你刚刚下载的皮肤删掉。
- 将alex.png和alex.json选中,长按压缩,压缩包名字为刚刚下载的皮肤的那串数字,格式为zip。
在mt管理器中向右拖动文件可进入多选模式,此时一个文件会被选中,点击其他文件可以选定,类似于ctrl的作用,如果再拖其他文件可以将中间的所有文件全部选中,类似于Shift键的作用。
-
打开“多玩我的世界盒子”,然后选择“我”>本地资源>皮肤,找到刚刚下载的皮肤,点击皮肤(不是启用皮肤)选择3D预览,如果刚刚的步骤没有错误,你就可以看到Alex被载入了。
- 如果你只看到了黑色背景,没有任何模型,请检查Json复制是否完整或者Json是否在压缩包内
- 如果连黑色背景都没有出现,请检查压缩包名字是否正确。
Json的文件结构
-
geometry.humanoid:是一个对象,在导入时需要考虑其名字以免发生冲突,这个以后再讲;
-
bones:储存了全部的模型信息,其子类为方块组,方块组允许有多个,比如头,身体,左手,右手,左腿,右腿是其中的6个方块组
- name :方块组的名字,特定的名字可以决定方块组的运动方式,比如head可以使方块组跟随鼠标旋转,而leftLeg/rightLeg在走动是会使方块组前后摆动。
- pivot:方块组的转动轴,转动方式与name有关系。
- mirror:可选参数,使用布尔值来使模型左右翻转。
-
cubes:方块组中含有的方块,一个方块组可以有多个方块,默认的皮肤一个方块组只有一个方块。
-
origin:方块在空间的相对位置,其表示的是左下面向我们的那个点的坐标(如图)
- size:方块的绝对大小,注意这里的大小必须要与材质上的大小一致(比如材质中的头是8x8x8,如果你想要更大的头(如10x10x10)你需要把材质中的头也改成10x10x10,否则贴图会错位
- uv:方块对应材质文件的位置,单位为像素
- inflate:可选参数,方块的相对大小,与材质的尺寸无关,输入负值为缩小,正值为扩大,其计算方式是“绝对尺寸的边长+2 x [inflate值]”,因为是以边长而不是以比例计算,所以在缩放是要注意尺寸以免变形,此属于高级修改,将会在以后讲述
-
origin:方块在空间的相对位置,其表示的是左下面向我们的那个点的坐标(如图)
-
bones:储存了全部的模型信息,其子类为方块组,方块组允许有多个,比如头,身体,左手,右手,左腿,右腿是其中的6个方块组
建议各位萌新们结合上节课介绍的两种json编辑器来熟悉json的结构,如果感兴趣,可以尝试修改上面的数值,来查看皮肤的变化。