本帖最后由 719823597 于 2014-12-8 22:00 编辑
模型材质是1.8的新特性,我们打开1.8的1.8.jar\assets\minecraft后可以看到里面多了两个文件夹,一个是blockstates,另一个是models,现在我们来讲讲blockstates里的文件。
拿blockstates\torch.json来做例子(和下文的torch.json不同,是两个文件)
复制代码
这是里面的内容,variants是一个数组,"facing=XXX"是里面的元素,这5个元素代表着火把(torch)的5个状态,分别是朝上、朝东、朝南、朝西、朝北
简单来讲,一行对应方块的一个状态,"model"里是这个状态用到的模型文件的名称,后面的"y"是模型旋转n度。从代码中可以看出火把有两个模型(model)文件,一个叫normal_torch (.json),另一个叫normal_torch_wall (.json),我们可以去model\block文件夹里找到这两个文件
复制代码
这是normal_torch.json里的内容,里面没有任何的模型信息,只有材质路径,这并不奇怪,因为有"parent"在,意味着这个模型继承了block文件夹下的torch.json里的模型信息,我们可以打开torch.json看看
复制代码
"elements"也是个数组,里面储存了方块模型的信息,可以用编辑器去生成。
注意,torch.json这个文件是无法成为一个直接被调用的模型的,因为"texture"里写的是#torch,这不是完整的材质路径。
你可以返回去看看normal_torch.json里的"textures",里面写的是"torch": "blocks/torch_on",两者都有个"torch",这不是巧合,我们再来回顾下两者间的关系:
torch.json
└ normal_torch.json
所以#torch只是个中间值,torch.json提供了模型的信息,然后留出了一个材质接口(姑且称之为接口)叫做#torch,一切继承(以它为父模型)于它的子模型都可以使用这个接口。
每当游戏要用到normal_torch.json这个模型时,会主动去找他的父模型(torch.json
),然后把子模型(normal_torch.json)的#torch里的材质路径发给父模型。
这样做的优点是可以让多个方块状态共用一个模型。
来自群组: The Redpixel
模型材质是1.8的新特性,我们打开1.8的1.8.jar\assets\minecraft后可以看到里面多了两个文件夹,一个是blockstates,另一个是models,现在我们来讲讲blockstates里的文件。
拿blockstates\torch.json来做例子(和下文的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是一个数组,"facing=XXX"是里面的元素,这5个元素代表着火把(torch)的5个状态,分别是朝上、朝东、朝南、朝西、朝北
简单来讲,一行对应方块的一个状态,"model"里是这个状态用到的模型文件的名称,后面的"y"是模型旋转n度。从代码中可以看出火把有两个模型(model)文件,一个叫normal_torch (.json),另一个叫normal_torch_wall (.json),我们可以去model\block文件夹里找到这两个文件
- {
- "parent": "block/torch",
- "textures": {
- "torch": "blocks/torch_on"
- }
- }
这是normal_torch.json里的内容,里面没有任何的模型信息,只有材质路径,这并不奇怪,因为有"parent"在,意味着这个模型继承了block文件夹下的torch.json里的模型信息,我们可以打开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" }
- }
- }
- ]
"elements"也是个数组,里面储存了方块模型的信息,可以用编辑器去生成。
注意,torch.json这个文件是无法成为一个直接被调用的模型的,因为"texture"里写的是#torch,这不是完整的材质路径。
你可以返回去看看normal_torch.json里的"textures",里面写的是"torch": "blocks/torch_on",两者都有个"torch",这不是巧合,我们再来回顾下两者间的关系:
torch.json
└ normal_torch.json
所以#torch只是个中间值,torch.json提供了模型的信息,然后留出了一个材质接口(姑且称之为接口)叫做#torch,一切继承(以它为父模型)于它的子模型都可以使用这个接口。
每当游戏要用到normal_torch.json这个模型时,会主动去找他的父模型(torch.json
),然后把子模型(normal_torch.json)的#torch里的材质路径发给父模型。
这样做的优点是可以让多个方块状态共用一个模型。
来自群组: The Redpixel
度度萌,度度好厉害。
度度萌,度度好厉害。
度兽萌,度兽好厉害。
没细节 差评→_→
simon3000 发表于 2014-12-8 22:09
没细节 差评→_→
慢慢来 这只是第一篇
度受好厉害!
啥姐好厉害=A=【好想丢节操【
一回来就看见度度了,第一眼看上去还是觉得这个还相当编程开发向的内容{:10_493:}
不过这是算是度度自留地,放这里吧。
从第一段代码看起来是方块数据值和model的对应。后面的就不甚明白。
不过这是算是度度自留地,放这里吧。
从第一段代码看起来是方块数据值和model的对应。后面的就不甚明白。
看不懂 ..
jianghr 发表于 2014-12-8 22:42
一回来就看见度度了,第一眼看上去还是觉得这个还相当编程开发向的内容
不过这是算是度度自留地 ...
上QQ聊
萌萌的,
看起来好厉害
看起来好厉害
yayayaya.
度度度度。
度度度度。
发现蠹蠹,大师球扣住慢慢理解
对此表示挺感兴趣的~
Wolverine 发表于 2014-12-9 06:52
对此表示挺感兴趣的~
你终于换头像了2333
末影矿工 发表于 2014-12-9 06:54
你终于换头像了2333
你也换头像了~233
好高大上啊,看不懂= =||
不明觉厉
请问1.8的材质包比如Conquest,为啥解压之后可以看到里面都是.JSON文件找不到贴图.PNG文件?
Ninja_Zbw 发表于 2015-2-25 16:07
请问1.8的材质包比如Conquest,为啥解压之后可以看到里面都是.JSON文件找不到贴图.PNG文件? ...
没研究过 不太清楚 不好意思

楼主最帅