【我的世界4D皮肤】第3课 模型的位置操作

废话不多说

本节课会讲解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]
另外,与上节课讲的sizeuv不同,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]
同样的思想,修复其他部位。

  • 左手左右位置没有问题,向后移半格(z+0.5)

"origin":[4.0,11.5,-2.0]"origin":[4.0,11.5,-1.5]

  • 左腿和右腿都需要向右移动半格(x+0.5),而前后由于厚度是4,与身体一致,不用管。

"origin":[-3.9,0.0,-2.0]"origin":[-3.5,0.0,-2.0]
"origin":[-0.1,0.0,-2.0]"origin":[ 0.5,0.0,-2.0]
修改对应的值后,我们看到Alex已经可以正常显示了

更加纤瘦的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添加新的模型

都是以前教过的东西,直接讲步骤

  1. 修改头顶的像素使其适配发卡


    头部的发卡
  2. 绘制发卡的材质,建议先绘制展开图再贴上材质,这里使用3x3x1的模型。


    展开图

    材质
  3. 将修改好的皮肤导入文件中
  4. 打开json编辑器,依次展开。root>geometry.humanoid>bones>#2>cubes
    (不知道展开哪一个编号?看一下编号下面的注释,找到有head的就行)
    注释会很有用的
  5. 点唯一一个#1右边的三个点,选择clone,再重复一次,创建两个#0,然后返回上一级再进去,复制的两个对象会自动编号为#2,#3


    复制后的cubes
  6. 打开#2,设置好size和uv,使其大小为3x3x1并定位到材质文件刚刚画好的发卡


    size&uv
  7. 计算位置坐标。头顶高度为32格发卡要向下沉一格,所以y轴是31格。参考点在左右方向向左偏移中心5格,所以x轴是-5,参考点在前后方向向前偏移一格,所以z轴是-1


    右发卡的坐标
  8. 同样的方法设置#3,注意参考点永远都在模型的前左下角,所以左耳的x轴只偏移了两格(还有3格是耳朵本身的宽度)


    #3
  9. 保存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}]}}
        难以阅读
  1. 然后导入json,3d浏览,完美


    鼠耳Alex

从上面的案例里我们了解了以下知识
. 一个材质可以使用多次
. cubes里的模型不止可以放一个
同样的道理,bones里也可以放更多的方块组,而不止头身体四肢,只不过方块组不能运动而已。


写 在 最 后

到了现在,4D皮肤的基础教程已经全部完成了,原本我想再随后制作进阶教程,但考虑到学业因素还是往后放放吧,高考后会考虑更新进阶教程?
这些教程足以用来制作类似于网易的4d皮肤了,可以多多尝试添加cubes来组合成你想要的模型。
好的就是这些了,另外,用minecraft设计一个皮肤也是一个好主意。


正在设计中的新版4d卡比

头部使用了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
        }]
    }
}

(还是Alex的,卡比的还在设计中)

json在线格式化与查错

点我回到上一节|下一节准备中......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353