719823597
本帖最后由 719823597 于 2014-12-8 22:00 编辑

模型材质是1.8的新特性,我们打开1.8的1.8.jar\assets\minecraft后可以看到里面多了两个文件夹,一个是blockstates,另一个是models,现在我们来讲讲blockstates里的文件。

拿blockstates\torch.json来做例子(和下文的torch.json不同,是两个文件)
  1. {

  2. "variants": {

  3. "facing=up": { "model": "normal_torch" },

  4. "facing=east": { "model": "normal_torch_wall" },

  5. "facing=south": { "model": "normal_torch_wall", "y": 90 },

  6. "facing=west": { "model": "normal_torch_wall", "y": 180 },

  7. "facing=north": { "model": "normal_torch_wall", "y": 270 }

  8. }

  9. }
复制代码



这是里面的内容,variants是一个数组,"facing=XXX"是里面的元素,这5个元素代表着火把(torch)的5个状态,分别是朝上、朝东、朝南、朝西、朝北

简单来讲,一行对应方块的一个状态,"model"里是这个状态用到的模型文件的名称,后面的"y"是模型旋转n度。从代码中可以看出火把有两个模型(model)文件,一个叫normal_torch (.json),另一个叫normal_torch_wall (.json),我们可以去model\block文件夹里找到这两个文件





  1. {

  2. "parent": "block/torch",

  3. "textures": {

  4. "torch": "blocks/torch_on"

  5. }

  6. }
复制代码







这是normal_torch.json里的内容,里面没有任何的模型信息,只有材质路径,这并不奇怪,因为有"parent"在,意味着这个模型继承了block文件夹下的torch.json里的模型信息,我们可以打开torch.json看看




  1. {

  2. "ambientocclusion": false,

  3. "textures": {

  4. "particle": "#torch"

  5. },

  6. "elements": [

  7. {   "from": [ 7, 0, 7 ],

  8. "to": [ 9, 10, 9 ],

  9. "shade": false,

  10. "faces": {

  11. "down": { "uv": [ 7, 13, 9, 15 ], "texture": "#torch" },

  12. "up":   { "uv": [ 7,  6, 9,  8 ], "texture": "#torch" }

  13. }

  14. },

  15. {   "from": [ 7, 0, 0 ],

  16. "to": [ 9, 16, 16 ],

  17. "shade": false,

  18. "faces": {

  19. "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" },

  20. "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }

  21. }

  22. },

  23. {   "from": [ 0, 0, 7 ],

  24. "to": [ 16, 16, 9 ],

  25. "shade": false,

  26. "faces": {

  27. "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" },

  28. "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }

  29. }

  30. }

  31. ]
复制代码









"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

a2455564728
度度萌,度度好厉害。

Siri
度度萌,度度好厉害。

apan0127
度兽萌,度兽好厉害。

simon3000
没细节 差评→_→

719823597
simon3000 发表于 2014-12-8 22:09
没细节 差评→_→

慢慢来 这只是第一篇

CuervoCarlos
度受好厉害!

熊猫丶晓能
啥姐好厉害=A=【好想丢节操【

jianghr
一回来就看见度度了,第一眼看上去还是觉得这个还相当编程开发向的内容{:10_493:}
不过这是算是度度自留地,放这里吧。
从第一段代码看起来是方块数据值和model的对应。后面的就不甚明白。

鱼青余
看不懂     ..

719823597
jianghr 发表于 2014-12-8 22:42
一回来就看见度度了,第一眼看上去还是觉得这个还相当编程开发向的内容
不过这是算是度度自留地 ...

上QQ聊            

北美路人
萌萌的,

看起来好厉害

PTmissionary
yayayaya.
度度度度。

pacerrecap
发现蠹蠹,大师球扣住慢慢理解

Wolverine
对此表示挺感兴趣的~

末影矿工
Wolverine 发表于 2014-12-9 06:52
对此表示挺感兴趣的~

你终于换头像了2333

Wolverine
末影矿工 发表于 2014-12-9 06:54
你终于换头像了2333

你也换头像了~233

绯色黄昏
好高大上啊,看不懂= =||

🍞bread
不明觉厉        

Ninja_Zbw
请问1.8的材质包比如Conquest,为啥解压之后可以看到里面都是.JSON文件找不到贴图.PNG文件?

719823597
Ninja_Zbw 发表于 2015-2-25 16:07
请问1.8的材质包比如Conquest,为啥解压之后可以看到里面都是.JSON文件找不到贴图.PNG文件? ...

没研究过 不太清楚 不好意思

167832391
楼主最帅

第一页 上一页 下一页 最后一页