【我的世界4D皮肤】第2课 材质及模型尺寸操作

上一节课我们成功将Alex转码成4D格式,为了让萌新们更好的熟悉Json文件各个语法的意义,在接下来的两节课中我们将着手修改alex.json,使其四肢更细并戴有发卡最终效果如下图所示


本节课你将会了解到材质文件的格式以及sizeuv的用法。

下节课会讲解origin的用法和添加新模型的方法


熟悉材质文件与size的用法

我的世界的所有模型均为立方体构成,我们熟知立方体有6个面,而这六个面在材质文件中有体现。

alex.png

为了节省材质文件的空间,在材质文件的展开图呈现丄字形而不是十字型,但是道理依然是一样的。
示例展开图

你可以想象成长方形展开图下面的那个面剪了下来拼到了上面,其中展开图构成的立方体朝向一定是固定的,上面两个面一定代表着上面和下面,下面的四个面一定代表着左前右后,其中“前”是指面朝我们的那个面(很重要,以免某些人把“前”的位置弄错而贴错材质)
有了这个意识后,我们也可以推出这个立方体的大小,以前面那个面为基准

  • 左右的宽度为8
  • 上下的高度为4
  • 前后的厚度为6

但有人可能想问了,这个展开图已经把每个面分色标注了,但是如果没有标注,该怎么看尺寸呢?
前面已经说过了,这个展开图为了节省空间将下面移到了上面,但是其他的5个面没有变动,因此,测一下左边缺口的长度即对应前后的厚度,测最左边短边的长度即对应上下的高度,测一下最上面短边的长度,除以2,就是左右的宽度
而立方体的大小由json决定,比如上面的立方体用json表示出来如下。
"size": [8, 4, 6]
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,改法随意,下面有一张已经改好的图,供参考。


alex.png

但是决定尺寸的是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]
            }]
        }]
    }
}

在多玩盒子里浏览,的确发现四肢变得更细了一些
修改后的Alex

但是,改到了这里,又出现了一些新的问题。

  • 四肢的位置是歪的
  • 手臂的模型没有闭合(如图)
    未闭合的手臂

    歪斜的问题与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管理器修改rightArmleftArm里的UV值。

在正确的size和uv设置下,立方体显示正常了


好的,这节课就到这里了,感兴趣的朋友可以多加尝试修改Json,以观察模型的变化。

因为我也没有任何资料,所有教程都是我自己修改Json自己总结的,总之自己学会感悟会更深的。

json在线格式化与查错

点我回到上一节|点我进入下一节

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

推荐阅读更多精彩内容