本帖子大部分内容是从该网站搬运而来,原作者是小狸卡
如果喜欢可以去看他的原帖子
在提到4D皮肤之前,先谈谈我个人是如何了解到4D皮肤的
我这人会闲的没事接一些皮肤单子,和客户聊聊天
"你好,请问你这里定制皮肤吗"
"可以的,请问您想定制怎么样的皮肤"
"请问可以定制4D皮肤吗?"
"ん?"
"4D皮肤是什么,Minecraft里没有这个名词"
"就是背后加个翅膀啊?可以定制吗?"
"ん???"
然后我就得和客户解释原版没有4D皮肤,全是腐竹加的模组什么什么的...
这种情况已经不止一次了,所以这次我想调查清楚
4D皮肤的真正叫法是"自定义json模型皮肤,"本质上还是传统的3D皮肤
只不过为了炒作而在后面又多加了个D,和钢化膜行业有得一拼
2017年官方就出过几个"4D"皮肤
但才一年多就因为中国版的崛起而没落
但现在网易官方又在开始鼓弄"4D皮肤"了,所以还是有必要出这个帖子让大家了解下
首先了解一下Minecraft里的一般皮肤格式:
双层皮肤:64X64
单层皮肤:64X32
每个格式还细分为Steve模式和Alex模式(对应网易的粗壮和纤细)
Alex模式的皮肤只支持1.8及以后的版本
其中64X32的单层皮肤因为技术落后,已经被抛弃了
现在新出的皮肤基本都是64X64的双层皮肤
现在的"4D皮肤"主要有以下几种实现方式:
基岩版:可以通过修改json的方式实现
也可以使用Blockbench
Java版:官方不支持,只能使用模组才能实现
教程
这里再次感谢原作者小狸卡的原帖
了解4D皮肤
4D皮肤,正确的名字叫“自定义json模型皮肤”,本质上还是3D,只不过为了炒作加了一个D,不过既然网易我的世界都已经开始卖“4D皮肤”了,所以后面我们还是用“4D”来称呼这个玩意吧 实际上,4D皮肤并不是多玩首创,mojang官方发布的皮肤包有很多就是4D皮肤,但的确是多玩把4D给发扬光大的。 然而从2017年6月4日官方的龙骑兵4D的发布,到2018年7月停止服务,仅仅经过了1年,随着中国版的兴起,4D皮肤就逐渐没落了(因为中国版不能打模组,而4D皮肤必须要依靠模组的支撑)。如今网易也看到了曾经4D皮肤的价值,就连带发布了“唐三藏”“齐天大圣”“阴阳师神乐”“阴阳师安倍晴明”作为可购买内容提供给玩家,然而官方的皮肤远不及当时4D皮肤民间制作团队那么丰富多彩 没有对比就没有伤害 是拿Alex的模型加了几个立方体和材质...... 好的,介绍完这个大背景,开始这个教程有些QQ群会教做4D皮肤,请务必学会鉴别,谨防受骗,为什么要说这句话, 基础知识 我的世界的皮肤尺寸必须是64x32或64x64,否则可能需要模组的协助才能导入游戏。 我的世界皮肤格式的非官方分类无外乎以下几种 单层:材质格式64x32,由头,帽子,身体,一只手和一只脚组成,另一只手和另一只脚使用了镜像翻转。 双层:材质格式64x64,由头,身体,四肢和各个部位的外层构成,现在通用的皮肤均为双层,有4格手臂和3格手臂两种子类 伪4D:实质是双层皮肤,通过删除模型或者添加大量透明像素做出类似4D的效果,比如草方块是将四肢和身体全删掉再往头上贴草方块材质,鲁班七号是将腿的下半部分涂成透明来做出短腿效果。再如这个星之卡比 4D:正式名称是“自定义JSON模型皮肤,除了要修改材质外,你还需要修改对应的JSON来改变原本的模型,这就是为什么不支持模组的中国版用不了4D皮肤的原因,不过后期会有导入教程,网上也有很多导入教程,不用担心。 高清皮肤:有两种类别,一种是非标准尺寸(如640x640)的高清皮肤,这种皮肤只能通过模组载入,另一种是64x64的皮肤,实质是4D皮肤,目前也有两种制作工艺,一种是通过堆积大量立方体实现(比如盒子官方制作的小埋),一种是牺牲其他材质的清晰度为主体部分清晰度让道,前者效果好,但只中看不中用,非常卡,后者效果略差一些但不会过于影响游戏体验。 但4D皮肤和双层究竟有啥区别呢? 4D皮肤是个压缩包,而伪4D就是一张贴图,为什么要用压缩包呢,我们再打开这个压缩包 里面有3个文件,第一个是.blur,初步判断为JSON的解密密匙,第二个是JSON文件,被加密了,但实际上并不影响我们的制作,这也是一个防盗版的措施 你只需要理解这是修改模型的文件就行,如果没有这个文件贴图会一团糟。 第三个就是贴图文件与常规的双层很像,但还是有区别 伪4D可以完美的贴合双层皮肤模板 4D皮肤几乎无法叠图 所以,一定是JSON文件导致了贴图布局的变化,那个密匙文件只有数百字节可能性不大。 温馨提示:修改JSON需要极大的耐心,如果没有精力请离开这篇文章。但是面对加密过的JSON,我该怎么修改呢? 据我推测,在载入4d皮肤时会先载入模组,模组读取压缩包的密匙并解密JSON,然后覆盖掉steve的模型和材质。但JSON本身没有被加密,加密是多玩的防盗版措施 简言之,4D皮肤包括png材质文件和json模型文件,密匙不是必须的,因为没有加密的皮肤也可以正常载入。 4D皮肤还需要涉及到JSON的修改,所以软件比较多,而且现在的**已经不再支持导入4D皮肤,所以我们还需要一些工具,通过改包强制导入 需要的工具 制作贴图的工具,以下的任意一款 本教程将以medibang为例绘制贴图 编辑JSON的工具,以下两款的任意一款 请大家根据自己的编程习惯合理选择,本教程将使用常量池式编辑方式。 APK修改工具,以下的任意一款 本教程将以mt管理器作为修改工具 浏览工具 请务必下载2.8.2版本,过低版本不支持4D,较低版本(2.6)旋转轴和多层渲染有问题,高版本(2.9)会与中国版冲突,建议制作时将中国版放到冷冻室里。 然后最后就是 国际版或中国版的安装包中任意一个 因为多玩已不支持4D,网易不支持自定义的4D,所以我们只能通过改包解决了。 |
将Alex转换成4D格式
在预备课中我们已经了解了4D皮肤的运作原理,在这一课中我们将会着重讲述编辑前的转换工作和json的文件结构 准备工作 从**下载任意一个皮肤,如下图,不要点使用! Alex的材质文件,如下图,请右键保存,并重命名为alex.png alex.json [code=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] }] } ] } } [/code] 操作方法 1.在mt管理器左栏依次打开/mctools/skin,然后将其设为首页(右上角的菜单里有)以方便以后操作,在右栏里找到alex.png(就是刚刚下载的皮肤,需要重命名),长按选择移动,然后alex.png就到了左栏里。 2.激活左栏,点击最下方的加号,输入alex.json,然后选择左下角的“文件” 3.打开刚建立的alex.json,将上方提供的代码全部粘贴到里面,点击右上角的菜单,选“保存”,然后返回,此时文件夹会出现alex.json.bak,删掉即可。 这些工作完成后,应该会有alex.json,alex.png,和刚刚下载的皮肤,一般是一串数字.png。 4.记住你刚刚下载的皮肤的那串数字,然后将你刚刚下载的皮肤删掉。 5.将alex.png和alex.json选中,长按压缩,压缩包名字为刚刚下载的皮肤的那串数字,格式为zip。 在mt管理器中向右拖动文件可进入多选模式,此时一个文件会被选中,点击其他文件可以选定,类似于ctrl的作用,如果再拖其他文件可以将中间的所有文件全部选中,类似于Shift键的作用。 6.打开“**”,然后选择“我”>本地资源>皮肤,找到刚刚下载的皮肤,点击皮肤(不是启用皮肤)选择3D预览,如果刚刚的步骤没有错误,你就可以看到Alex被载入了。 看着很正常的Alex其实已经被转换成了4D格式 如果你只看到了黑色背景,没有任何模型,请检查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值]”,因为是以边长而不是以比例计算,所以在缩放是要注意尺寸以免变形,此属于高级修改,将会在以后讲述 建议各位萌新们结合上节课介绍的两种json编辑器来熟悉json的结构,如果感兴趣,可以尝试修改上面的数值,来查看皮肤的变化。 |
材质及模型尺寸操作
材质及模型尺寸操作 上一节课我们成功将Alex转码成4D格式,为了让萌新们更好的熟悉Json文件各个语法的意义,在接下来的两节课中我们将着手修改alex.json,使其四肢更细并戴有发卡最终效果如下图所示 本节课你将会了解到材质文件的格式以及size,uv的用法。下节课会讲解origin的用法和添加新模型的方法熟悉材质文件与size的用法 我的世界的所有模型均为立方体构成,我们熟知立方体有6个面,而这六个面在材质文件中有体现。 为了节省材质文件的空间,在材质文件的展开图呈现丄字形而不是十字型,但是道理依然是一样的。 示例展开图 你可以想象成长方形展开图下面的那个面剪了下来拼到了上面,其中展开图构成的立方体朝向一定是固定的,上面两个面一定代表着上面和下面,下面的四个面一定代表着左前右后,其中“前”是指面朝我们的那个面(很重要,以免某些人把“前”的位置弄错而贴错材质)。 有了这个意识后,我们也可以推出这个立方体的大小,以前面那个面为基准 左右的宽度为8 上下的高度为4 前后的厚度为6 但有人可能想问了,这个展开图已经把每个面分色标注了,但是如果没有标注,该怎么看尺寸呢? 前面已经说过了,这个展开图为了节省空间将下面移到了上面,但是其他的5个面没有变动,因此,测一下左边缺口的长度即对应前后的厚度,测最左边短边的长度即对应上下的高度,测一下最上面短边的长度,除以2,就是左右的宽度 。 而立方体的大小由json决定,比如上面的立方体用json表示出来如下。 [size=13.3333px]"size": [8, 4, 6] [size=13.3333px] 在size数组里,第一个数表示左右宽度,第二个数表示上下高度,第三个数表示前后厚度。 由此,在我们了解了展开图怎么看之后,我们就可以知道alex的所有部件的尺寸了,请根据下面的伪代码,理解一下展开图,Json和实际模型的相关关系 { "geometry.humanoid": { "bones": [{ "name": "head", "cubes": [{ "size": [8, 8, 8] }] }, { "name": "body", "cubes": [{ "size": [8, 12, 4] }] }, { "name": "leftArm", "cubes": [{ "size": [3, 12, 4] }] }, { "name": "rightArm", "cubes": [{ "size": [3, 12, 4] }] }, { "name": "leftLeg", "cubes": [{ "size": [4, 12, 4] }] }, { "name": "rightleg", "cubes": [{ "size": [4, 12, 4] }] } ] } } 这个代码不完整,请勿粘贴到Json中 文件覆盖操作:在mt管理器左栏打开压缩包,在右栏找到用来覆盖的文件,重命名为相同的名字,长按,选择”添加”,稍等片刻,即可完成压缩包内文件的覆盖。 现在,我们开始改alex.png,使其手臂尺寸为2x12x3,腿部尺寸为3x12x4,改法随意,下面有一张已经改好的图,供参考。 但是决定尺寸的是Json文件,所以我们也对应把Json的尺寸改掉,很简单,用mt管理器自带的文本编辑器改size行的数据即可,或者使用Json编辑器找到size数据并修改,在这里以右手为例做一个简单的示例。 文本编辑方式 首先找到右手的代码块 { "name": "rightArm", "reset": true, "pivot": [-5.0, 21.5, 0.0], "cubes": [{ "origin": [-6.0, 11.5, -1.5], "size": [4, 12, 4], "uv": [40, 16] }] } 改一下size行的数字,保存即可 { "name":"rightArm", "reset":true, "pivot":[-5.0,21.5,0.0], "cubes":[{ "origin":[-6.0,11.5,-1.5], "size":[2,12,3], "uv":[40,16] }] } Json编辑器编辑方式 依次展开 Root/geometry.humanoid/bones/#4/cubes/#1/size 然后会看到3行数据,对应数组的3个数字,依次修改,保存即可。 其他的部件也如上述操作,最终代码如下: { "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": [2, 12, 3], "uv": [32, 48] }, { "name": "rightArm", "reset": true, "pivot": [-5.0, 21.5, 0.0], "cubes": [{ "origin": [-7.0, 11.5, -2.0], "size": [2, 12, 3], "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": [3, 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": [3, 12, 4], "uv": [16, 48] } } 在**里浏览,的确发现四肢变得更细了一些 但是,改到了这里,又出现了一些新的问题。 四肢的位置是歪的 手臂的模型没有闭合(如图) 未闭合的手臂 歪斜的问题与origin有关,这个将会在下节课讲。 立方体尺寸是正确的,为什么没有闭合呢?如果存在这个问题,多半是uv设置不正确造成的。 UV的用法 熟悉材质文件后废话少说,直接说正事。UV决定的是展开图在材质中的位置,之所以立方体没有闭合,是因为json定义的展开图位置不正确造成的 红色部分为json定义的展开图,黄点表示实际材质的左上角 UV记录的是展开图的左上角的坐标,如果展开图的左上角没有与UV记录的值对齐,就会出现立方体不闭合的情况 因为我们在做手臂时把前后厚度缩小了1格,对应材质文件要把上边抹掉一个像素,导致没有对齐,要解决这个问题有两种方法。 移动展开图,使其与正确的坐标对齐 弊端很明显,因为我们不知道坐标的实际值,只能慢慢摸索 修改json文件,使json定义的展开图在正确的位置上。 首先找到错误的模型对应的展开图,找到左上角的坐标(如上图黄点标注),然后从画布的最左上角开始数,先数横向位置,再数竖向位置,可以把背景色关掉,得到的透明色棋盘的大小正好为8x8,这样数更方便。根据数出的结果,我们得到右手的坐标为(41,18),左手的坐标为(33,50),双腿的坐标是正确的,所以这里不再举例。 然后我们将其换算成uv值,换算成uv值时坐标要减1,即 "uv": [40, 17] "uv": [32, 49] 由于修改的地方很少,这里不再发代码,若需要修改请用Json编辑器或mt管理器修改rightArm与leftArm里的UV值。 在正确的size和uv设置下,立方体显示正常了 |
模型的位置操作
本节课会讲解origin的用法和添加新模型的方法 反物理手和歪腿 接着上一节课,Alex手和腿的位置是错误的,这是因为立方体的宽度被我们缩小了,但位置信息依然是3格宽的手和4格宽的腿要解决这个问题,我们只需要对应将其位置调成适应两格宽的手和3格宽的脚就可以,这个位置值由"origin": [x, y, z]控制,为了把这个值调对,我们需要了解空间直角坐标系这个概念。 首先惯例上图 Minecraft中的空间直角坐标系 考虑到一些人只知道平面直角坐标系,这里简单类比一下就可以理解: 平面是一张纸,你在上面作了一个平面直角坐标系,可以用来表示所有在这张纸里的点,但如果你想表示在纸外面的点,怎么弄呢?你垂直向纸面打一束光,纸上会留下纸外点的影子,你把纸内的影子用平面直角坐标系表示出来(x, y),然后测量纸外点距纸面的距离,即纸外点与影子的距离,这个值记作z,这样的话,纸外任何点的位置都可以用纸内点+距离的方式表述,将其写成坐标即为(x, y, z) 在找坐标之前,我们必须要在每个立方体上找个参照点,因为坐标系只能表示点,而不能直接表示立体图形的位置。我在第1课已经提到过一嘴,即模型左下靠前的位置,这对所有模型都适用。 复习一下 现在开始谈坐标系,从第一张图看出,原点在Alex的脚底正中,从侧面看绿线所在位置距离(z)为0(因为绿线是“纸面”的位置。 另外距离(z)也是有正方向的,如果偏向身后就是正值,偏向身前就是负值。 我们以头部的坐标为例来寻找坐标。 首先从正视图来看,参照点的坐标为(-4, 24) 然后从侧视图找到距离(z),得到参考点距离“纸面”为4,但由于是反方向,还需要加个负号,即z = -4 用空间坐标表示出来即为(-4, 24, -4),在Json上为"origin": [-4, 24, -4] 另外,与上节课讲的size和uv不同,origin可以接受小数,比如右手臂的默认坐标为"origin": [-7.0, 11.5, -2.0],可以观察一下三视图,手臂错开身体半格。 了解坐标系后,接下来修复错误!首先是右手, 右手默认坐标是"origin": [-7.0, 11.5, -2.0] 身体默认坐标是"origin": [-4.0, 12.0, -2.0] 首先,左右的位置与x轴有关,x轴是7,向左偏了一格,为了让手臂靠紧身体,我们需要向右移动,对应x方向+1,为-6。 另外,从侧面看,与正中位置相比,手臂向前偏了0.5格,为了修复错误我们需要将z方向加0.5格,为1.5。 最后的结果就是 "origin":[-7.0,11.5,-2.0]→"origin":[-6.0,11.5,-1.5] 同样的思想,修复其他部位。
"origin":[-0.1,0.0,-2.0]→"origin":[ 0.5,0.0,-2.0] 修改对应的值后,我们看到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, -1.5], "size": [2, 12, 3], "uv": [32, 49] }] }, { "name": "rightArm", "reset": true, "pivot": [-5.0, 21.5, 0.0], "cubes": [{ "origin": [-6.0, 11.5, -1.5], "size": [2, 12, 3], "uv": [40, 17] }] }, { "pivot": [-6, 14.5, 1], "neverRender": true, "name": "rightItem", "parent": "rightArm" }, { "name": "rightLeg", "pivot": [-1.9, 12.0, 0.0], "cubes": [{ "origin": [-3.5, 0.0, -2.0], "size": [3, 12, 4], "uv": [0, 16] }] }, { "name": "leftLeg", "reset": true, "mirror": false, "pivot": [1.9, 12.0, 0.0], "cubes": [{ "origin": [0.5, 0.0, -2.0], "size": [3, 12, 4], "uv": [16, 49] }] } ] } } 为Alex添加新的模型都是以前教过的东西,直接讲步骤 修改头顶的像素使其适配发卡 头部的发卡 绘制发卡的材质,建议先绘制展开图再贴上材质,这里使用3x3x1的模型。 展开图 材质 将修改好的皮肤导入文件中 打开json编辑器,依次展开。root>geometry.humanoid>bones>#2>cubes (不知道展开哪一个编号?看一下编号下面的注释,找到有head的就行) 注释会很有用的 点唯一一个#1右边的三个点,选择clone,再重复一次,创建两个#0,然后返回上一级再进去,复制的两个对象会自动编号为#2,#3 打开#2,设置好size和uv,使其大小为3x3x1并定位到材质文件刚刚画好的发卡 size&uv 计算位置坐标。头顶高度为32格发卡要向下沉一格,所以y轴是31格。参考点在左右方向向左偏移中心5格,所以x轴是-5,参考点在前后方向向前偏移一格,所以z轴是-1 右发卡的坐标 同样的方法设置#3,注意参考点永远都在模型的前左下角,所以左耳的x轴只偏移了两格(还有3格是耳朵本身的宽度) 保存json并 格式化json编辑器自带格式化(indent)功能,只不过效率不太高就是了。 indent就是格式化 如果不格式化,则代码会变成这样: {"geometry.humanoid":{"bones":[{"cubes":[{"origin":[-4,12,-2],"size":[8,12,4],"uv":[16,16]}],"name":"body","pivot":[0,24,0]},{"cubes":[{"origin":[-4,24,-4],"size":[8,8,8],"uv":[0,0]},{"origin":[-5,31,-1],"size":[3,3,1],"uv":[32,0]},{"origin":[2,31,-1],"size":[3,3,1],"uv":[32,0]}],"name":"head","pivot":[0,24,0]},{"cubes":[{"origin":[4,11.5,-1.5],"size":[2,12,3],"uv":[32,49]}],"mirror":false,"name":"leftArm","pivot":[5,21.5,0],"reset":true},{"cubes":[{"origin":[-6,11.5,-1.5],"size":[2,12,3],"uv":[40,17]}],"name":"rightArm","pivot":[-5,21.5,0],"reset":true},{"name":"rightItem","neverRender":true,"parent":"rightArm","pivot":[-6,14.5,1]},{"cubes":[{"origin":[-3.5,0,-2],"size":[3,12,4],"uv":[0,16]}],"name":"rightLeg","pivot":[-1.9,12,0]},{"cubes":[{"origin":[0.5,0,-2],"size":[3,12,4],"uv":[16,49]}],"mirror":false,"name":"leftLeg","pivot":[1.9,12,0],"reset":true}]}} 难以阅读 然后导入json,3d浏览,完美 鼠耳Alex 从上面的案例里我们了解了以下知识 一个材质可以使用多次 cubes里的模型不止可以放一个 同样的道理,bones里也可以放更多的方块组,而不止头身体四肢,只不过方块组不能运动而已。 写 在 最 后 到了现在,4D皮肤的基础教程已经全部完成了,原本我想再随后制作进阶教程,但考虑到学业因素还是往后放放吧,高考后会考虑更新进阶教程? 这些教程足以用来制作类似于网易的4d皮肤了,可以多多尝试添加cubes来组合成你想要的模型。 好的就是这些了,另外,用minecraft设计一个皮肤也是一个好主意。 头部使用了4个cubes来创建一个近圆形,通过cubes的累加,你可以创造出任何你想要的模型! 【哦对了,忘记json了】 { "geometry.humanoid": { "bones": [{ "cubes": [{ "origin": [-4, 12, -2], "size": [8, 12, 4], "uv": [16, 16] }], "name": "body", "pivot": [0, 24, 0] }, { "cubes": [{ "origin": [-4, 24, -4], "size": [8, 8, 8], "uv": [0, 0] }, { "origin": [-5, 31, -1], "size": [3, 3, 1], "uv": [32, 0] }, { "origin": [2, 31, -1], "size": [3, 3, 1], "uv": [32, 0] }], "name": "head", "pivot": [0, 24, 0] }, { "cubes": [{ "origin": [4, 11.5, -1.5], "size": [2, 12, 3], "uv": [32, 49] }], "mirror": false, "name": "leftArm", "pivot": [5, 21.5, 0], "reset": true }, { "cubes": [{ "origin": [-6, 11.5, -1.5], "size": [2, 12, 3], "uv": [40, 17] }], "name": "rightArm", "pivot": [-5, 21.5, 0], "reset": true }, { "name": "rightItem", "neverRender": true, "parent": "rightArm", "pivot": [-6, 14.5, 1] }, { "cubes": [{ "origin": [-3.5, 0, -2], "size": [3, 12, 4], "uv": [0, 16] }], "name": "rightLeg", "pivot": [-1.9, 12, 0] }, { "cubes": [{ "origin": [0.5, 0, -2], "size": [3, 12, 4], "uv": [16, 49] }], "mirror": false, "name": "leftLeg", "pivot": [1.9, 12, 0], "reset": true } } 在线JSON校验格式化工具 |
感谢原作者提供的帖子,他还是很厉害的
希望对大家有所帮助
终