Minecraft(我的世界)中文论坛

标题: 【教程】【1.9Snap+】资源包模型教程及1.9新特性研究

作者: 719_Lokii    时间: 2015-9-3 15:47
标题: 【教程】【1.9Snap+】资源包模型教程及1.9新特性研究
本帖最后由 719220502 于 2017-7-15 21:07 编辑


↑直接点击对应文字可翻页击论坛顶部“切换到宽版”浏览,效果更佳


资源包模型教程-1.9新特性研究
      方块模型规定游戏中所有的方块的外观,特征,形状,材质等;
      物品模型规定物品在不同位置的不同形态:戴在头上时、拿在手上时、丢在地上时、是否拉弓、工具损坏程度等。
      多变的模型组合可以在游戏的背后,刻画出一个崭新的世界。准备好了吗?


优秀代表作品:3D原版材质包
推荐使用模型编辑器,可以大大节省编写时间和减少错误:
opl's Model Creater       (免费,感谢flashtt的提供和719823597的汉化)
BDcraft Cubik LITE       (普通版下载,专业版请去官网购买)



本教程所指的目录均为minecraft.jar中的目录,而非游戏目录
转载不需经过本人同意,但需要遵守 CC-BY-NC-SA 3.0 协议,贴上本帖地址以及WIKI地址



一、状态文件
      某些方块会有几个特殊的状态,每个方块都会有与其他方块不同的状态。这些状态都储存在assets/minecraft/blockstates中。
      状态文件和模型文件不是同一个概念,它们是分开储存的,但是是密不可分的。
      自1.9开始,方块多种状态的状态文件将合并在一个文件之中
      状态文件的合并不会对方块的外观,行为方式,NBT,状态等有任何的影响

方块状态文件如下:(括号内为值的数据类型)
点击论坛顶部“切换到宽版”浏览,效果更佳
(The root tag)
 └ variants:包含着多个状态。(Compound)
 │ ├ (A variant):储存方块的状态(状态的名称及其值)。(Compound)
 │ │  └ (A model):储存方块的状态,A variant下的每一个对象。(Compound)
 │ │    ├ model:在 assets/minecraft/models/blocks 下寻找指定的模型文件。(String)
 │ │    ├ x:将模型在x轴上旋转指定的角度,值为90的整数倍。(Int)
 │ │    ├ y:将模型在y轴上旋转指定的角度,值为90的整数倍。(Int)
 │ │    ├ uvlock:是否锁定模型的旋转。当值为false时,模型才可以旋转,默认为false。(Byte)*
 │ │    └ weight:该模型被随机到的概率,默认为1(100%)。(Int)
 │ ├ model:在 assets/minecraft/models/blocks 下寻找指定的模型文件。(String)
 │ ├ x:将模型在x轴上旋转指定的角度,值为90的倍数。(Int)
 │ ├ y:将模型在y轴上旋转指定的角度,值为90的倍数。(Int)
 │ └ uvlock:是否锁定模型材质的旋转。当值为false时,模型材质才可以旋转,默认为false。(Byte)*
  └ multipart:用于结合多种方块状态。(List)
    └ (A case):确定一个方块状态和此状态下应使用的方块模型。(Compound)
       ├ when:相当于逻辑与门,如果集对象内的方块状态全部满足其值或返回true,那么使用 apply 集合下的模型,如果不满足任何一项或返回false,则跳过 apply 及其子项。如果未设置此集合, apply 集合将永远启用。(Compound)
       │   ├ OR:相当于逻辑或门,只要满足值中的任意对象,返回true。反之,如果不满足值中的任何对象,返回false。(List)
       │   │  └ (A condition):相当于逻辑与门,对象中所有的方块状态符合其值时,返回true。(Compound)
       │   │     └ (A case):A condition对象中的单个数据的数据,多个值之间用“|”隔开。 (String)
       │   └ (A case):when对象中的单个数据的数据,多个值之间用“|”隔开,注意,这是when的子项,而不是OR的子项(A condition的数据),不可混淆。 (String)
       └ apply:在when返回值为true时执行。储存方块的状态。(Compound)
        ├ (A model):方块的状态数据(名称及其值)。(String)
        │    ├ model:在 assets/minecraft/models/blocks 下寻找指定的模型文件。(String)
        │    ├ x:将模型在x轴上旋转指定的角度,值为90的整数倍。(Int)
        │    ├ y:将模型在y轴上旋转指定的角度,值为90的整数倍。(Int)
        │    ├ uvlock:是否锁定模型材质的旋转。当值为false时,模型材质才可以旋转,默认为false。(Byte)*
        │    └ weight:该模型被随机到的概率,默认为1(100%)。(Int)
          ├ model:在 assets/minecraft/models/blocks 下寻找指定的模型文件。(String)
          ├ x:将模型在x轴上旋转指定的角度,值为90的倍数。(Int)
        ├ y:将模型在y轴上旋转指定的角度,值为90的倍数。(Int)
        └ uvlock:是否锁定模型材质的旋转。当值为false时,模型材质才可以旋转,默认为false。(Byte)*

提示:
1.如果该方块没有任何状态,那么状态名称即以“normal”命名。
查看方块有什么状态的方法如下:
2.如果在A variant下有很多个对象且没有设置出现几率(weight),那么它们就会以同等的几率出现(有四个,每个就是1/4几率)

注释:
1.uvlock

2.名称带括号的条目

3.数据类型


  • 例子:
    1.torch.json
    {
        "variants": {                     
            "facing=up": {  "model": "normal_torch" },            
            "facing=east": {  "model": "normal_torch_wall" },
            "facing=south": {  "model": "normal_torch_wall", "y": 90 },
            "facing=west": {  "model": "normal_torch_wall", "y": 180 },
            "facing=north": {  "model": "normal_torch_wall", "y": 270 }      
        }
    }
    variants表示花括号内包含多个(五个)方块状态
    variants下的五个子项表示五种不同的方块状态(朝上,朝东南西北,也就是直立在地上和在墙上)
    使用normal_torch和normal_torch_wall两种模型(直立在地上的模型和在墙上的模型),都存于assets/minecraft/models/blocks中
    用"y"来确定模型的旋转角度,以保证可以正确的放在一面墙上(朝向正确)
    (下面的举例就不染得这么杀马特了233)

    2.grass.json
    {
        "variants": {
            "snowy=false": [
                { "model":  "grass_normal" },
                { "model":  "grass_normal", "y": 90 },
                { "model":  "grass_normal", "y": 180 },
                { "model":  "grass_normal", "y": 270 }
            ],   
            "snowy=true":  { "model":  "grass_snowed" }
        }
    }
    snowy=false(A variant)值应该是一个对象,用方括号的原因是因为有很多个对象,所以当做一个数组集合起来
    不难发现snowy=false下有四个对象,且没有分配出现几率(weight),那么每个情况出现的几率为1/4

    3.fence.json
    {
        "multipart": [
            {    "apply": { "model": "oak_fence_post" }},
            {    "when": { "north": "true" },
                "apply": {  "model": "oak_fence_side", "uvlock": true }
            },
            {    "when": { "east": "true" },
                "apply": {  "model": "oak_fence_side", "y": 90,  "uvlock": true }
            },
            {    "when": { "south": "true" },
                "apply": {  "model": "oak_fence_side", "y": 180,  "uvlock": true }
            },
            {    "when": { "west": "true" },
                "apply": {  "model": "oak_fence_side", "y": 270,  "uvlock": true }
            }
        ]
    }
    切记,multipart是一个数组,使用方括号而不是花括号
    apply没有设置when,所以总是执行(木桩柱总是存在)
    下面四个when和apply的组合就是不同面的木桩围栏,注意,尽管有"y",但是因为uvlock的开启使材质不会旋转,旋转的仅仅是方块模型
    这个模型在1.9Snap以前被写成:


    4.redstone_wires.json
    {
        "multipart": [
            {    "when": { "OR": [
                    {"north":  "none", "east": "none", "south":  "none", "west": "none"},
                    {"north":  "side|up", "east": "side|up" },
                    {"east":  "side|up", "south": "side|up" },
                    {"south":  "side|up", "west": "side|up"},
                    {"west":  "side|up", "north": "side|up"}
                ]},
                "apply": {  "model": "redstone_dot" }   //红石线的中间一点,总是启用的
            },
          
    }
    注意此处有三个逻辑门相套,分别是when, OR,(A condition),计算是从内到外的
    1.(A condition):OR数组下一个的一个对象,如果这个对象内的数据全部满足其值,返回true给OR数组

    2.OR:只有当OR数组下的任意一个对象((A condition))返回true时才向when返回true
    3.当when下的所有子项都返回true时,返回true
    4.对于(A case),两个值之间用|隔开
    下面都是普通的when和apply的组合



    5.soul_sand.json
    {
         "variants": {
             "normal": { "model": "soul_sand" }
         }
    }
    可以看到,灵魂沙没有任何方块状态,所以使用"normal"作为(A variant)的名称,模型则使用灵魂沙



    ————状态文件部分结束————


  • 二、方块模型
    所有的方块模型文件都储存在assets/minecraft/models/block目录下,这些文件的文件名可以更改,但必须与状态文件中的指定文件名吻合(不建议这么做)
    方块模型文件如下:(括号中为数据类型)
    击论坛顶部“切换到宽版”浏览,效果更佳
    (The root tag)
      ├ parent:从 assets/minecraft/models 中加载方块模型作为父类。(String)*
      ├ ambientocclusion:是否使用环境光遮蔽,默认为true。(Byte)*
      ├ display:显示物品模型的不同地方。(对象)
      │  └ thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, fixed:分别指:第三人称视角右手的物品,第三人称视角左手的物品,第一人称视角右手的物品,第一人称视角左手的物品,GUI内的物品,头上戴的物品,在地面上的物品,和物品的帧数(物品展示框的旋转角度等)。(Compound)
      │     ├ rotation:在x,y,z轴上确定模型旋转的角度。格式为[x, y, z]。(List)
      │     ├ translation:在x,y,z轴上确定模型平移的距离,单位为像素,值在-24至24之间。格式为[x, y, z]。(List)
      │     └ scale:在x,y,z轴上确定模型在x, y, z轴上缩放的倍数,值在0至4之间。格式为[x, y, z]。(List)
      ├ textures:从 assets/minecraft/textures 中载入材质作为模型的材质,也可以使用材质变量。(Compound)
      │  ├ particle:决定模型被破坏时的粒子材质。(String)
      │  └ (A texture variable):定义一个材质变量,从 assets/minecraft/textures 中载入材质。(String)*
      └ elements:该模型的所有组成元素,这些元素都应为方块形式。(List)
        └ (An element):单个元素,多个元素组成一个方块。(Compound)*
          ├ from:选择区域的起点坐标,值在-16~32之间。格式为[x, y, z]。(List)*
          ├ to选择区域的终点坐标,值在-16~32之间。格式为[x, y, z]。(List)*
          ├ rotation:定义一个元素的旋转属性。(Compound)
          │  ├ origin:设置旋转的中心,格式为[x, y, z],默认值为[8, 8, 8]。(List)
          │  ├ axis:定义旋转方向,值为"x"或"y"或"z"。(String)
          │  ├ angle:定义旋转的角度,值在-45至45之间,必须为22.5的倍数。默认为0。(Int)
          │    └ rescale:规定每个旋转后面是否会缩放到单个面的大小,默认为false。(Byte)
          ├ shade:是否渲染阴影,默认为true。(Byte)
          └ faces:规定方块六个面的材质,如果有一个面没有规定材质,那么它将会显示错误方块(紫黑方块)。(Compound)
            └ down, up, north, south, west, east:保存方块六个面的数据。(Compound)
               ├ uv:使用规定的材质的某个区域作为方块模型某个部分的材质。格式为[x1,y1,x2,y2]。(List)*
               ├ texture:规定指定面使用的材质,在材质变量前面前缀"#"以使用材质变量。(String)
               ├ cullface:值为down, up, north, south, west, east,这一面接触其他元素时,不渲染(String)
               ├ rotation:旋转材质的角度,值为90的倍数。(Int)
               └ tintindex:是否将材质使用colormap文件夹内的色谱进行着色。按照文件名排序从0开始索引,-1则为不着色(Int)

    注释:
    1.parent

    2.ambientocclusion

    3.(A texture variable)

    4.(An element)

    5.from, to

    6.uv

    例子:
    1.torch.json(关于父子模型部分,材质变量部分详见注释)
    {
        "ambientocclusion": false,
        "textures": {
            "particle":  "#torch"
        },
        "elements": [
            {    "from": [ 7, 0, 7 ],
                "to": [ 9, 10, 9 ],
                "shade": false,
                "faces": {
                    "down": {  "uv": [ 7, 13, 9, 15 ], "texture": "#torch" },
                    "up":   { "uv": [ 7,  6, 9,   8 ], "texture": "#torch" }
                }
            },
            {    "from": [ 7, 0, 0 ],
                "to": [ 9, 16, 16 ],
                "shade": false,
                "faces": {
                    "west": {  "uv": [ 0, 0, 16, 16 ], "texture": "#torch" },
                    "east": {  "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }
                }
            },
            {    "from": [ 0, 0, 7 ],
                "to": [ 16, 16, 9 ],
                "shade": false,
                "faces": {
                    "north": {  "uv": [ 0, 0, 16, 16 ], "texture": "#torch" },
                    "south": {  "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }
                }
            }
        ]
    }
    注意到uv的值为[ 0, 0, 16, 16 ],这将会选取整个方块,包括透明部分,这和直接选取中心的火把部分效果是一样的
    down和up两面没有特定的材质,于是就从火把材质中截取一部分来用(可参考注释6理解)

    2.cube.json
    {
        "elements": [
            {    "from": [ 0, 0, 0 ],
                "to": [ 16, 16, 16 ],
                "faces": {
                    "down":  { "texture": "#down",  "cullface": "down" },
                    "up":    { "texture": "#up",  "cullface": "up" },
                    "north": {  "texture": "#north", "cullface":  "north" },
                    "south": {  "texture": "#south", "cullface":  "south" },
                    "west":  { "texture": "#west",  "cullface": "west" },
                    "east":  { "texture": "#east",  "cullface": "east" }
                }
            }
        ]
    }
    没什么好讲的,一个六面方块的父模型,所有的变量都在子模型中规定
    cullface很好理解,在down下的cullface值为down表示如果底面朝下底面就不渲染(节省内存),其它面同理

    3.cross.json
    这是一个为需要交叉渲染的方块准备的父模型(如树苗,小麦,草等呈十字的方块)
    {
        "ambientocclusion": false,
        "textures": {
            "particle":  "#cross"
        },
        "elements": [
            {    "from": [ 0.8, 0, 8 ],
                "to": [ 15.2, 16, 8 ],
                "rotation": {  "origin": [ 8, 8, 8 ], "axis": "y",  "angle": 45, "rescale": true },
                "shade": false,
                "faces": {
                    "north": {  "uv": [ 0, 0, 16, 16 ], "texture": "#cross" },
                    "south": {  "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }
                }
            },
            {    "from": [ 8, 0, 0.8 ],
                "to": [ 8, 16, 15.2 ],
                "rotation": {  "origin": [ 8, 8, 8 ], "axis": "y",  "angle": 45, "rescale": true },
                "shade": false,
                "faces": {
                    "west": {  "uv": [ 0, 0, 16, 16 ], "texture": "#cross" },
                    "east": {  "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }
                }
            }
        ]
    }
    小数的存在表示数组内(Int数据类型)可以储存小数,这将可以更为灵活地应用模型和制造出很多的细节
    沿着y轴旋转45度,中心为[8, 8, 8](origin的默认值),且在旋转后缩放
    缩放的原因:

    ————方块模型部分结束————
    回首页

    [/td][/tr]
    [/table]

    三、物品模型
    物品模型没有不同的状态,因此不需要状态文件。模型文件存储在assets/minecraft/models/item中。这些模型文件的名称为硬编码,不可修改。

    击论坛顶部“切换到宽版”浏览,效果更佳
    (The root tag)
      ├ parent:从 assets/minecraft/models 中加载方块模型作为父类。(String)*
      ├ textures:从 assets/minecraft/textures 中载入材质作为模型的材质,也可以使用材质变量。(Compound)
      │  ├ layer#:从 assets/minecraft/models 中加载物品在物品栏中显示的图标,#为一个数字,表示第几层图标,从0起始。有些模型不止有一层(如刷怪蛋)。模型的层数是由硬编码规定的,不可增加。只可以当"parent"的值为"builtin/generated"时使用(String)
      │  ├ particle:决定物品的粒子材质,默认为"layer0"的值。(String)
      │  └ (A texture variable):定义一个材质变量,从 assets/minecraft/textures 中载入材质。(String)
      ├ elements:该模型的所有组成元素,这些元素都应为方块形式。(List)*
      │  └ (An element):单个元素,多个元素组成一个物品。(Compound)
      │    ├ from:选择区域的起点坐标,值在-16~32之间。格式为[x, y, z]。(List)
      │    ├ to:选择区域的终点坐标,值在-16~32之间。格式为[x, y, z]。(List)
      │    ├ rotation:定义一个元素的旋转属性。(Compound)
      │    │  ├ origin:设置旋转的中心,格式为[x, y, z],默认值为[8, 8, 8]。(List)
      │    │  ├ axis:定义旋转方向,值为"x"或"y"或"z"。(String)
      │    │  └ angle:定义旋转的角度,值在-45至45之间,必须为22.5的倍数。默认为0。(Int)
      │    └ faces:规定物品六个面的材质,如果有一个面没有规定材质,那么它不会被渲染。(Compound)
      │      └ down, up, north, south, west, east:保存物品六个面的数据。(Compound)
      │         ├ uv:使用规定的材质的某个区域作为物品模型某个部分的材质。格式为[x1,y1,x2,y2]。(List)
      │         ├ texture:规定指定面使用的材质,在材质变量前面前缀"#"以使用材质变量。(String)
      │         ├ cull:是否渲染不可见的元素。(Byte)
      │         ├ rotation:旋转材质的角度,值为90的倍数。(Int)
      │         └ tintindex:是否将材质使用硬编码进行着色。(Int)
      ├ display:规定模型在不同地方的不同显示状态。(Compound)
      │   └ thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, fixed:分别指:第三人称视角右手的物品,第三人称视角左手的物品,第一人称视角右手的物品,第一人称视角左手的物品,GUI内的物品,头上戴的物品,在地面上的物品,和锁定物品的帧数(使用第几帧的物品)。(Compound)
      │      ├ rotation:在x,y,z轴上确定模型旋转的角度。格式为[x, y, z]。(List)
      │      ├ translation:在x,y,z轴上确定模型平移的距离,单位为像素,值在-24至24之间。格式为[x, y, z]。(List)
      │      └ scale:在x,y,z轴上确定模型在x, y, z轴上缩放的倍数,值在0至4之间。格式为[x, y, z]。(List)
      └ overrides:使用物品标签确定不同状态下物品的模型及材质。(List)
        ├ (a case):单个标签。(Compound)
        │  └ predicate:储存多个物品标签。(Compound)
        │     └ (a case):单个物品标签,详见注释。(String)*
        └ model:从 assets/minecraft/models/ 中调用模型的路径。(String)

    注释:
    1.parent

    2.(a case)-String(物品标签):物品标签有如下几种,表示物品在特定情况下的状态:
    • "angle":指南针的不同角度
    • "blocking":确定盾是否处于格挡状态,如果是,值为1
    • "broken":确定鞘翅是否损坏,如果损坏,值为1
    • "cast":确定鱼竿是否投出钓线,如果投出,值为1
    • "cooldown":确定末影珍珠和紫颂果的剩余冷却时间,值在0到1之间
    • "damage":物品的耐久度,值为 1 - 当前耐久/总耐久,值在0到1之间
    • "damaged":确定物品是否被损坏,如果损坏,值为1
    • "lefthanded":确定左手持物品的模型
    • "pull":弓的蓄力程度,值小于1
    • "pulling":是否正在拉弓,如果是,值为1
    • "time":钟的不同时间,值小于1

    单个标签使用不同值时,值从小到大排列,例:

    单个模型匹配多个标签时,使用逗号分隔,例


    例子:
    1.torch.json
    {
         "parent": "item/generated",
         "textures": {
             "layer0": "blocks/torch_on"
         }
    }
    parent的值为builtin/generated,由程序生成一个2D的火把模型

    材质通过layer0决定,为火把材质

    2.fishing_rod.json
    {
        "parent":  "item/handheld_rod",
        "textures": {
            "layer0":  "items/fishing_rod_uncast"
        },
        "overrides": [
            {
                "predicate": {
                    "cast": 1
                },
                "model":  "item/fishing_rod_cast"
            }
        ]
    }
    使用了predicate,所以包括了物品标签,标签为cast,即是否扔出钓线,当扔出钓线的时候(cast的的值为1),使用物品模型fishing_rod_cast.json,否则即使用fishing_rod_uncast.json作为钓竿材质(因为扔出钓线前后钓竿的倾斜角度不同,所以要分开规定模型)

    ————物品模型部分结束————
    回首页

    [/td][/tr]
    [/table]

    四、更新历史
         本页用作引用WIKI的“history”部分,如果需要亲自编写模型,请务必仔细阅读本页,确定所编写版本是否拥有某标签,以免发生意料外的错误,本页仅做PC的更新
         由于方块模型的快速更新且MINECRAFT不作兼容处理,所以编译或使用带有方块模型的材质请仔细对应版本
         虽然兼容性大大降低,但是MINECRAFT不会因为方块模型的编译错误而导致崩溃,请编译完一套的方块模型之后仔细地查看有无错误的方块,也要注意检查在物品栏内不显示的方块

    划线的为影响兼容性的更新
    1.9(15w31a
    • 方块/物品模型有了不同的损害值/物品标签(物品标签系统加入)
    • 同一模型的多种属性可以放在一个模型里,比如栅栏
    • JSON模型现在更为严格,注释将不被允许
    • display标签改变,由原来的"thirdperson"和"firstperson"改为"thirdperson_righthand","thirdperson_lefthand"和"firstperson_righthand","firstperson_lefthand"
    • "parent"标签和"elements"标签现在可以在同一级,这在1.9以前不被允许
    • 删除显示设置中的“是否使用替选模型”项
    1.8.2(per5
    • translation标签的值改为-24至24
    • scale标签的值改为小于4
    1.8(14w30b
    • 物品模型parent标签的值可以为builtin/entity"了
    1.8(14w27b
    • 方块模型允许使用随机模型了
    1.8(14w27a
    • 将(程序内部处理的以)方块的数据值(命名的方块状态)替换为方块名称,但尚未全部替换完毕,这略微提高方块模型对将来版本的兼容性
            !以下版本过旧,不建议在以下版本中编辑方块模型,这会导致兼容度大大降低以至完全不可使用!
    1.8(14w25a
    • 删除uv标签下的"textureFacing"数据,并且用"texture"替换
    • 将useAmbientOcclusion更名为ambientocclusion
    • 将rotateVariantTextures更名为uvlock
    • 方块模型下的cull(而不是物品模型的cull)改名为cullface
    • 精简rotation及其子项的代码
    • 模型的储存位置从models/blocks/meshes改为models/block
    • 加入blockstates(方块状态)
    • 支持自定义物品模型
    1.8(14w17a
    • 可以更改更多方块的方块模型了
    • 添加rotateVariantTextures,用于固定模型材质的旋转(在14w25a改名为uvlock)
    1.8(14w11b
    • 模型的定义更加清晰明确,加入了许多可编辑的模型
    1.8(14w11a
    • 修复发光物体照明的一些BUG
    1.8(14w07a
    • 更改模型格式,旋转的方向被固定
    1.8(14w06a
    • 允许自定义方块模型
    1.7.2(13w36a
    • 花的模型更改,在此版本中不可自定义方块模型

    ————更新历史部分结束————
    回首页

    [/td][/tr]
    [/table]



    恭喜发现彩蛋~

    记得加分哦








    作者: 1XWJ    时间: 2015-9-3 15:51
    怎么翻页?
    作者: 719_Lokii    时间: 2015-9-3 15:51
    1XWJ 发表于 2015-9-3 15:51
    怎么翻页?

    点那几个字啊= =
    作者: 524399hjn    时间: 2015-9-3 15:52
    逼精华,赞{ps:大触你哪找到的}
    作者: gggbbb    时间: 2015-9-3 15:54
    人气亮了
    作者: flash0tt    时间: 2015-9-5 00:21
    试了一下,怎么感觉方块模型和物品模型的display的fixed、ground好像没效果呢……难道是我1.8的版本太低?等下试试1.8.8看看……
    话说fixed是不是也包括了放在物品展示框时的状态?
    作者: 719_Lokii    时间: 2015-9-5 15:31
    flash0tt 发表于 2015-9-5 00:21
    试了一下,怎么感觉方块模型和物品模型的display的fixed、ground好像没效果呢……难道是我1.8的版本太低? ...

    display及其子项是1.9快照才更新的~
    作者: flash0tt    时间: 2015-9-5 16:13
    719220502 发表于 2015-9-5 15:31
    display及其子项是1.9快照才更新的~

    display这个半年前还是1.8版本我看的时候就有了~但是我不太记得当时子项是不是有这么多……

    顺便这块是不是区分一下1.8和1.9,1.8版本是没有后面区分左右手的后缀的~
    作者: sabo970    时间: 2015-9-6 05:08
    看都看不不懂。。。。
    作者: flash0tt    时间: 2015-9-6 21:55
    对了 有些不是具体某个方块的父模型可以拿出来列个表讲一下~例如cube、cube_all、cube_column等等~
    作者: MCMADAO    时间: 2015-9-7 13:32
    好高端,看不懂
    作者: 719_Lokii    时间: 2015-9-7 19:02
    flash0tt 发表于 2015-9-6 21:55
    对了 有些不是具体某个方块的父模型可以拿出来列个表讲一下~例如cube、cube_all、cube_column等等~ ...

    这些感觉格式都比较简单,蛮好理解的
    找时间写一下,毕竟这几天要上学
    感谢支持~
    作者: UAC_MagicK    时间: 2015-9-8 21:30
    好厉害 高手  大触    膝盖归你了{:10_514:}
    作者: 沐苽    时间: 2015-9-9 00:03
    额 小白完全不懂
    作者: 1爽yy    时间: 2015-9-10 09:03
    谢谢分享!
    作者: hukk    时间: 2015-9-11 15:41
    719220502 发表于 2015-9-7 19:02
    这些感觉格式都比较简单,蛮好理解的
    找时间写一下,毕竟这几天要上学
    感谢支持~ ...

    恩,总体结构较1.8没什么特别大的变化.
    状态文件增加了更多可定制参数.....
    另外翻译的很棒,浅显易懂


    作者: skyrim24    时间: 2015-9-12 13:45
    赞一个!!!!!!!!!
    作者: flash0tt    时间: 2015-9-13 00:55
    试了一下,display=fixed确实包括了方块/物品在物品展示框里面显示所用的模型。但是1.8里面要在1.8.8版本才能正常显示,之前的版本是不行的。
    作者: 格林    时间: 2015-9-13 21:29
    那是不是以后制作材质包方式要改变?
    作者: 1814209846    时间: 2015-9-15 18:39
    719人生第1精GET√
    1814人生第1精ING……
    作者: 719_Lokii    时间: 2015-9-16 19:54
    格林 发表于 2015-9-13 21:29
    那是不是以后制作材质包方式要改变?

    不用
    作者: wscyh123    时间: 2015-9-16 22:54

    lz辛苦了 点个赞 祝你作品越来越棒
    作者: 哈鱼    时间: 2015-9-18 12:51
    完全不懂。。资源包为啥需要程序?
    作者: 719_Lokii    时间: 2015-9-18 20:01
    哈鱼 发表于 2015-9-18 12:51
    完全不懂。。资源包为啥需要程序?

    如果只是改外观的话,不需要用模型文件的= =
    作者: zhjjhz    时间: 2015-9-18 21:58
    719220502 发表于 2015-9-3 15:51
    点那几个字啊= =

    这是如何做到的好神奇啊
    学习学习一下撒!
    教教我
    作者: Guardier    时间: 2015-9-19 00:32
    Guardier 发表于 2015-9-19 00:34
    感觉并不是很好,,大部分人几乎都看不懂。。。。希望弄个如何制作方块模型的软件....并发出教程!!!{:10 ...

    对了!1.9可以自定义生物模型
    作者: Guardier    时间: 2015-9-19 00:34
    感觉并不是很好,,大部分人几乎都看不懂。。。。希望弄个如何制作方块模型的软件....并发出教程!!!{:10_492:}
    作者: 719_Lokii    时间: 2015-9-19 10:10
    Guardier 发表于 2015-9-19 00:32
    对了!1.9可以自定义生物模型

    文件里面没有找到,维基也没有看到,你从哪里听说?
    作者: 719_Lokii    时间: 2015-9-19 10:13
    zhjjhz 发表于 2015-9-18 21:58
    这是如何做到的好神奇啊
    学习学习一下撒!
    教教我

    目录功能,发帖的菜单栏里面有
    作者: 龙隐尘L    时间: 2015-9-19 11:22
    哇塞,不明觉历啊
    作者: Guardier    时间: 2015-9-19 12:04
    719220502 发表于 2015-9-19 10:10
    文件里面没有找到,维基也没有看到,你从哪里听说?

    籽岷做过视频  Wiki:方块模型
    作者: zhjjhz    时间: 2015-9-19 12:33
    719220502 发表于 2015-9-19 10:13
    目录功能,发帖的菜单栏里面有

    第几个什么颜色,第几排。截个图可以么

    作者: 719_Lokii    时间: 2015-9-19 13:44
    Guardier 发表于 2015-9-19 12:04
    籽岷做过视频  Wiki:方块模型

    我的这篇教程就是从model搬来的,如果有可否给个地址?
    作者: 20020607    时间: 2015-9-19 21:00
    提示: 作者被禁止或删除 内容自动屏蔽
    作者: s994154391    时间: 2015-9-20 08:44
    大神留名
    作者: laoyeQAQ    时间: 2015-9-20 13:41
    支持楼主
    作者: Guardier    时间: 2015-9-20 18:28
    719220502 发表于 2015-9-19 13:44
    我的这篇教程就是从model搬来的,如果有可否给个地址?

    http://minecraft-zh.gamepedia.com/1.9   
    作者: 719_Lokii    时间: 2015-9-20 21:55
    Guardier 发表于 2015-9-20 18:28
    http://minecraft-zh.gamepedia.com/1.9

    以英文维基为准没有找到
    可能是先前计划然后删除
    作者: gundamMC    时间: 2015-9-21 13:19
    在模型里面应用了藤蔓的材质游戏里面不会上色肿么办QAQ _(:зゝ∠)_
    作者: WangJiarun2004    时间: 2015-9-21 18:02
    但我觉得还是不错
    作者: WangJiarun2004    时间: 2015-9-21 18:04
    沐苽 发表于 2015-9-9 00:03
    额 小白完全不懂

    呵呵,升下级,水一下
    作者: WangJiarun2004    时间: 2015-9-21 18:05
    表示不懂
    作者: WangJiarun2004    时间: 2015-9-21 18:08
    还是水一下            
    作者: 小寒2015    时间: 2015-9-21 18:59
    小白表示完全看不懂
    作者: 逆达    时间: 2015-9-21 19:49
    太棒了!大触!
    作者: MsYqgzt    时间: 2015-9-21 19:57
    http://www.mcbbs.net/thread-479128-1-1.html
    楼主能讲讲这个么?
    作者: 719_Lokii    时间: 2015-9-21 20:43
    MsYqgzt 发表于 2015-9-21 19:57
    http://www.mcbbs.net/thread-479128-1-1.html
    楼主能讲讲这个么?

    不是相同的么?
    物品模型里面有写
    作者: Guardier    时间: 2015-9-22 12:38
    719220502 发表于 2015-9-20 21:55
    以英文维基为准没有找到
    可能是先前计划然后删除

    也许吧!
    作者: telunsu    时间: 2015-9-22 19:37
    感觉完全看不懂啊{:10_527:}
    作者: 末地烛    时间: 2015-9-22 20:14
    提示: 作者被禁止或删除 内容自动屏蔽
    作者: wscyh123    时间: 2015-9-22 22:01
    点个赞 祝你作品越来越棒 这头像有点6。。
    作者: _Duang_    时间: 2015-9-23 14:13
    这个么厉害的东西,不明觉厉
    作者: 岚_夙愿    时间: 2015-9-24 13:25
    虽然自己没有做材质的打算但还是支持~~
    作者: JACKOL    时间: 2015-9-25 21:21
    lz棒棒哒....
    作者: 走吧gogo    时间: 2015-9-27 10:06
    沐苽 发表于 2015-9-9 00:03
    额 小白完全不懂

    me too0.0.0.0..0.00.
    作者: chen小哥    时间: 2015-9-27 16:16
    表示看不懂...
    作者: Machine_Gun    时间: 2015-9-27 18:49
    表示看起来好diao 完全不知道讲的是什么{:10_557:}
    作者: WAR科技    时间: 2015-9-29 21:36
    这么6666?谢谢楼主
    作者: 104277777    时间: 2015-10-1 12:41
    最喜欢这种技术帖子,希望更新的多一些,请教如何精简客户端里面不必要的文件{:10_522:}现在的客户端越来越大了。。
    作者: zjr_516635864    时间: 2015-10-2 08:27
    719你长大了啊

    终于写出一般人看不懂的东西了



    作者: XK_Wengo    时间: 2015-10-2 10:41
    果断收藏 以后慢慢理解 我是渣渣哎
    作者: x_xing_ren    时间: 2015-10-2 16:55
    但是迟迟下载不到1.9啊=-=哪里有?
    作者: x_xing_ren    时间: 2015-10-2 17:00
    524399hjn 发表于 2015-9-3 15:52
    逼精华,赞{ps:大触你哪找到的}

    额这,怎么获得的?????
    作者: 小寒2015    时间: 2015-10-2 17:32
    楼主你太帅了
    作者: yy54008    时间: 2015-10-4 22:17
    后排围观!!!!
    作者: flash0tt    时间: 2015-10-29 02:00
    本帖最后由 flash0tt 于 2015-11-5 22:22 编辑


    展示下成果。我用的是1.8.8+optifine,加上光影。

    居然被置顶了w(?Д?)w 11月5日更新图片(图多所以折叠一下)


    2个都是物品模型(item Model),利用display中的“fixed”属性(fixed固定,但实际上就是挂到墙上的尺寸),放大到正常的方块尺寸,然后利用物品展示框(物品展示框的材质弄成透明)+屏障方块(barrier),这样就可以自由的放置模型了。
    不过,这个只能在1.8.8之后的版本使用,在此之前的1.8版本在这点上有bug,不会正常的显示。

    总结一下,个人感觉,物品模型的潜力要比方块模型大的多,因为数量很多,不影响日常方块的摆放。
    利用“物品展示框+屏障方块”的方法,而且有方向性,4个方向可以自由摆放,甚至可以沿着x轴线和z轴进行旋转(还记得么?物品展示框的特性,右键点击物品会旋转)。
    更何况,物品模型还可以用盔甲架来放置……自由度其实也很大~


    作者: flash0tt    时间: 2015-11-8 21:53
    有个错误更正一下。
    元素的坐标范围是-16到32,也就是3*3方块范围内,你写成-16到48了……
    作者: flash0tt    时间: 2015-11-15 00:57
    继续提交错误……物品模型,textures-layer#那一行,应该是“只用于加载物品在物品栏中显示的图标”,没有前面那段从 assets/minecraft/models 中,看了半天没看明白~
    后面应该还有:
    “可以有多于一层材质(例如怪物蛋),每个物品可加载的层数为游戏硬编码。只用于与‘builtin/generated’组合使用。”


    PS:要不以后有发现错误我就在这提,不新回复帖子了?

    作者: 719_Lokii    时间: 2015-11-15 14:12
    本帖最后由 719220502 于 2015-11-15 14:13 编辑
    flash0tt 发表于 2015-11-15 00:57
    继续提交错误……物品模型,textures-layer#那一行,应该是“只用于加载物品在物品栏中显示的图标”,没有 ...

    改了
    btw,从 assets/minecraft/models 中寻找是有的,"layer0": "items/bed"表示 "assets/minecraft/models/items/bed.png"
    作者: Danger_S.M    时间: 2015-11-27 19:32
    大触的东西好难理解,我们这种凡人还是好好吃土吧
    作者: lrf8643    时间: 2015-12-28 21:27
    让我发现了一个语病,uv那一块自相矛盾了。
    图上是[5,6][7,8]。你下面也写了[5,6][7,8]。得出代码却是[5,7,6,8]
    注意里也写了uv的格式是[x1,y1,x2,y2],而不是[x1,x2,y1,y2]。
    作者: 过妻的火把    时间: 2015-12-28 21:30
    然并卵{:10_492:}
    作者: 719_Lokii    时间: 2015-12-30 20:07
    lrf8643 发表于 2015-12-28 21:27
    让我发现了一个语病,uv那一块自相矛盾了。
    图上是[5,6][7,8]。你下面也写了[5,6][7,8]。得出代码却是[5,7, ...

    没问题啊不就是[5[sub](x1)[/sub],7[sub](y1)[/sub],6[sub](x2)[/sub],8[sub](y2)[/sub]]么
    作者: lrf8643    时间: 2015-12-30 20:12
    719220502 发表于 2015-12-30 20:07
    没问题啊不就是[5,7,6,8]么

    额。你看图啊。第一个点[x5,y6],第二个点[x7,y8].
    作者: flash0tt    时间: 2016-4-17 18:30
    物品模型,最后overrides——predicate那里,物品标签里面究竟有没有stack_size属性啊?详细研究的链接里面有,你这又没写
    作者: zjx864597452    时间: 2016-4-19 12:55
    mcbbs没你不精彩
    作者: 719_Lokii    时间: 2016-4-20 20:25
    flash0tt 发表于 2016-4-17 18:30
    物品模型,最后overrides——predicate那里,物品标签里面究竟有没有stack_size属性啊?详细研究的链接里面 ...

    没找到哪个方块里面有这个,维基也没写,估计是内部编码什么的。应该是没有了
    作者: 随便玩玩MC    时间: 2016-4-30 08:34
    这个材质我挺喜欢的,感谢LZ的分享
    作者: chyx    时间: 2016-5-1 22:39
    您好 我认为这段的描述略有误

    玻璃的父模型指向cube_all 可是cube_all的父模型是cube啊

    1. {
    2.     "parent": "block/block",
    3.     "elements": [
    4.         {   "from": [ 0, 0, 0 ],
    5.             "to": [ 16, 16, 16 ],
    6.             "faces": {
    7.                 "down":  { "texture": "#down", "cullface": "down" },
    8.                 "up":    { "texture": "#up", "cullface": "up" },
    9.                 "north": { "texture": "#north", "cullface": "north" },
    10.                 "south": { "texture": "#south", "cullface": "south" },
    11.                 "west":  { "texture": "#west", "cullface": "west" },
    12.                 "east":  { "texture": "#east", "cullface": "east" }
    13.             }
    14.         }
    15.     ]
    16. }
    复制代码


    这里也有cullface



    我感觉这在作用上只是用于标记这个面属于方块的哪个面 比如回字砖的回字的侧面也是属于方块的那个面的
    当然 cullface是计算机图形学的专用术语 不是这么简单 所以我只是说“在作用上”。
    而且 会不会不渲染也要看方块id
    比如玻璃和玻璃挨着两个相对的面不渲染 同色染色玻璃挨着两个相对的面不渲染 但玻璃和石头挨着两个相对的面就渲染
    作者: chyx    时间: 2016-5-1 22:47
    btw
    我买了一份bdcraft这是证书
    license.txt (308 Bytes, 下载次数: 6)

    需要者自取

    作者: flash0tt    时间: 2016-6-28 17:07
    实验了半天,overrides里面的lefthanded非常迷……

    实验的版本是1.9.4……

    对一个普通的物品写"lefthanded"=1是完全没有效果的……然后如果"lefthanded"=0的话不管是放左手还是右手都会变成overrides加载的模型……

    然后如果是改过模型的文件,lefthanded完全没有任何效果……
    作者: 719_Lokii    时间: 2016-7-3 21:48
    flash0tt 发表于 2016-6-28 17:07
    实验了半天,overrides里面的lefthanded非常迷……

    实验的版本是1.9.4……

    测试了锄头,钓竿,箱子,加上lefthanded就是紫黑
    其他物品待测试
    作者: flash0tt    时间: 2016-7-6 10:26
    719220502 发表于 2016-7-3 21:48
    测试了锄头,钓竿,箱子,加上lefthanded就是紫黑
    其他物品待测试

    应该是所有物品都可以加上lefthanded吧
    mojang现在怎么这样……功能没弄好疯狂刷版本
    作者: xieyanze    时间: 2016-8-9 07:20
    在方块模型文件中使用uv时,如果所引用的材质文件分辨率为64??64,那么选定x1y1x2y2的范围是否也跟着增大?
    作者: 719_Lokii    时间: 2016-8-9 09:37
    xieyanze 发表于 2016-8-9 07:20
    在方块模型文件中使用uv时,如果所引用的材质文件分辨率为64??64,那么选定x1y1x2y2的范围是否也跟着增大? ...

    不要,上限依然用16,按比例缩小就好了
    比如在64*64里面是[16,20,20,31],就写成[4,5,5,7.75]
    希望有帮助
    作者: chuanqi    时间: 2016-8-27 21:46
    楼主太帅了
    作者: Xiao2    时间: 2016-8-31 12:56
    @719220502
    {
        "parent": "block/torch",
        "textures": {
            "torch": "blocks/torch_on"
        }
    }

    不是block
    作者: 17702099838    时间: 2016-8-31 15:11
    23333333333333333333
    作者: chyx    时间: 2016-9-27 00:39
    本帖最后由 chyx 于 2016-9-27 00:57 编辑

    我试验了一下
    发现一个方块的某个面隐不隐藏跟和他相邻的方块是否有cullface无关

    {
      "parent": "block/block",
      "textures": {
       "particle": "blocks/bedrock",
       "down": "blocks/bedrock",
       "up": "blocks/bedrock",
       "north": "blocks/bedrock",
       "east": "blocks/bedrock",
       "south": "blocks/bedrock",
       "west": "blocks/bedrock"
    },
       "elements": [
           {   "from": [ 3, 3, 3 ],
                "to": [ 13, 13, 13 ],
             "faces": {
                "down": {
                  "texture": "#down",
                  "cullface": "down"
                },
                "east": {
                  "texture": "#east",
                  "cullface": "down"
                },
                "north": {
                  "texture": "#north",
                  "cullface": "down"
                },
                "south": {
                  "texture": "#south",
                  "cullface": "down"
                },
                "up": {
                  "texture": "#up",
                  "cullface": "down"
                },
                "west": {
                  "texture": "#west",
                  "cullface": "down"
                }
             }
           }
       ]
    }




    把这个设成基岩的模型 (六个面都是down 稍微改小了一点方便观察)
    然后把两个基岩摞在一起
    (注 如果只改方块模型 只有1/2用到这个 因为基岩有随机的反射/旋转 建议测试的时候把方块模型里的模型只留下这一个)
    虽然下面的基岩完全没有up的cullface
    但上面的基岩每个面都隐形了可见 游戏没有检查是不是cullface相对
    只是看了相邻的方块的id(可能还有数据值)是不是应该隐藏这一组面来隐藏这一组面
    "cullface": "down"就是告诉游戏 这个面是下面的一部分


    比如石头和石头 石头和基岩 玻璃和玻璃之间的面要隐藏
    石头和玻璃 红玻璃和绿玻璃之间的面就不隐藏
    是写死在代码里的










    此外 我注意到
    将其中的
    "down": {
                  "texture": "#down",
                  "cullface": "down"
                },


    改为
    "down": {
                  "texture": "#down"
                },

    或者
    "down": {
                  "texture": "#down",
                  "cullface": "chyx"
                },
    或者
    "down": {
                  "texture": "#down",
                  "cullface": "up"
                },
    不同


    最上面一个的底面能够自动隐藏 看起来的亮使用他下面的光照
    中间两个的底面能够自动隐藏 看起来的亮使用他下面的光照
    最下面一个的底面在上方有方块时隐藏 看起来的亮使用他面的光照



    我认为这个功能干这个用的


    我标红的这个面应该是顶面 但是如果把它当作侧面加光照和隐藏明显更加合适
    于是就要把cullface设成侧面

    作者: 719_Lokii    时间: 2016-9-28 22:01
    chyx 发表于 2016-9-27 00:39
    我试验了一下发现一个方块的某个面隐不隐藏跟和他相邻的方块是否有cullface无关如
    {  "parent": "block/blo ...

    感谢实验
    国庆会做进一步测试
    作者: 719_Lokii    时间: 2016-9-28 22:11
    chyx 发表于 2016-9-27 00:39
    我试验了一下发现一个方块的某个面隐不隐藏跟和他相邻的方块是否有cullface无关如
    {  "parent": "block/blo ...

    感谢实验
    国庆会做进一步测试
    作者: 20020607    时间: 2016-10-1 12:39
    提示: 作者被禁止或删除 内容自动屏蔽
    作者: brooke_zb    时间: 2016-10-28 19:35
    所以说怎么做出不是不是正方形的方块呢?还是不懂啊QWQ
    作者: 九尽雨干    时间: 2016-10-29 08:00
    沐苽 发表于 2015-9-9 00:03
    额 小白完全不懂

    +1                  
    作者: ShulicTian    时间: 2016-11-2 12:57
    1.9不是正版的,能不能教教我怎么安装光影
    作者: 让猪飞    时间: 2016-11-2 13:06
    大佬哇大佬
    作者: 1xla    时间: 2017-1-29 16:37
    66666666666666666666
    作者: brooke_zb    时间: 2017-2-28 19:05
    719大大,可不可以利用模型文件格式写出一个类似于builtin/generated这样的模型父类(物品侧面材质为主面材质边缘的延伸,这样一些模型可以省去很多元素,感觉不行
    作者: brooke_zb    时间: 2017-6-18 21:34
    chyx 发表于 2016-9-27 00:39
    我试验了一下发现一个方块的某个面隐不隐藏跟和他相邻的方块是否有cullface无关如
    {  "parent": "block/blo ...

    能不能补下图,只看文字好难受
    作者: chyx    时间: 2017-6-18 21:46
    brooke1999 发表于 2017-6-18 21:34
    能不能补下图,只看文字好难受

    额 这都好久以前的帖子了
    我当然早就没有图了

    甚至新版本有可能已经改了特性对吧。。。

    话说你不是有材质的精华么 为啥还要问我这种只知道方块模型格式 但是完全没有艺术细胞做不了材质的弱渣我

    我一个精华都没有TAT