【虽然没指望有多少人看得懂】方块模型(Block model)wiki翻译

1楼喂度娘。有谁英语好点的来看看?

楼主 flashtt  发布于 2014-12-15 03:32:00 +0800 CST  
方块模型英文wiki原文页面地址:http://minecraft.gamepedia.com/Block_models


方块模型(Block model)
所有模型(model)文件和状态(variant)文件都采用了后缀名为.json的格式。方块模型(block models)描绘游戏中所有的方块,物品模型(item medels)则表现了玩家手持、头戴(头盔和帽子)、掉落以及储存中的物品(item),并定义了这些物品储存时显示所用的图标。

1、状态文件(variant)
一些方块有多种不同的状态,每个方块都有自己的状态文件,其中罗列了这个方块存在的所有状态,并将它们与模型一一对应。这些文件都储存在assets/minecraft/blockstates目录下。你无法修改这些文件的文件名、以及其中罗列的方块状态,这是在游戏源代码中硬性确定的,在资源包中也同样适用。

根目录标签
┗━variants:包含方块的所有状态名称。
┗━A variant:每个状态的名称,由确切的方块状态组成并以“,(逗号)”分隔。只有1种状态的方块使用normal作为状态名称。每一个状态都有一个model(模型)属性。如果使用了多个模型,则模型的名称应该添加“_”后缀标签来区分
【注:这里有两个意思:一是指方块本身就有多种模型,像火把有“normal_torch”和“normal_torch_wall”,“_wall”就区分开这两个模型;二是你可以为同一状态指定多个模型,例如“normal_rail_flat”、“normal_rail_flat_1”、“normal_rail_flat_2”……,规定其出现的概率就可以实现随机材质的效果。】
┗━A model:包含了模型的各个属性。如果使用了多个模型,所有的模型会交替着随机出现。
┗━model:指定方块模型路径。起始路径为assets/minecraft/models/blocks
┗━x:旋转角度(90/180/270)。使模型沿着x轴以90度的旋转
┗━y:旋转角度(90/180/270)。模型沿着y轴以90度的旋转
┗━uvlock:true/false(默认),默认false时材质随方块旋转
┗━weight:数值,默认值为1。这个模型在游戏中使用的概率

例子:火把(Torch)
火把具有多种状态:它可以被放置在地面上,或者朝向不同方向放在墙上。这个例子是在assets/minecraft/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 }
}
}

"facing=up"是火把放置在地上的状态,对应的模型是"normal_torch"。火把可以被放置在方块的四个侧面上,所以还有4个状态,分别是 "facing=east"、"facing=west"、"facing=south"和"facing=north",都使用"normal_torch_wall"作为模型,通过90度旋转来对齐方块侧面。

例子:草地方块(Grass Block)
草地方块有2个状态。这个例子取自文件grass.json,文件可以在assets/minecraft/blockstates目录下找到。

文件: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),有4个model属性值使用了相同的模型"grass_normal",以90度沿y轴旋转。4个模型都使用同样的后缀标签“_normal”,所以在放置时都有25%机会出现。



楼主 flashtt  发布于 2014-12-15 03:32:00 +0800 CST  
2、方块模型文件(Block models)
所有规定的模型文件都保存在assets/minecraft/models/block文件夹中。这些文件的文件名可以修改,但必须与状态文件中使用的名称对应。

根目录标签
┗━parent:载入一个不同的模型作为父类,起始路径为assets/minecraft/models
┗━ambientocclusion:true(默认)/false。是否使用世界的光照遮罩阴影
┗━textures:包含模型所需材质,可自行定义属性名称。起始路径为assets/minecraft/textures
【你在这个模型中所需要的材质都需要在这里列出。比如说你的模型上、下面和侧面所用的材质不同,那么你可以设置end、sides,然后分别指定材质的路径;如果你整个模型各个面都使用同样的材质,那么你可以设置all、texture,然后指定一个材质的路径。end、sides、all、texture这些属性名称都可以自己随意定义,在后面faces━texture属性中引用。】
┗━particle:方块使用的粒子的路径
┗━texture:方块使用的材质路径
┗━elements:包含所有模型的组成元素。这些元素都应该是方块形式
┗━An element
┗━from:坐标[x, y, z]。立方体的起点坐标,坐标数值应该在-16到32
┗━to:坐标[x, y, z]。立方体的终点坐标,坐标数值应该在-16到32
┗━rotation:规定元素的旋转
┗━origin:坐标[x, y, z]。设置旋转中心的坐标,默认值为[8, 8, 8]
┗━axis:x/y/z。指定旋转的方向
┗━angle:数值,默认为0。指定旋转的角度,以22.5度为幅度,从45度到-45度
┗━rescale:true/false(默认)。规定各个面是否缩放到整个方块
┗━shade:true(默认)/false。规定是否渲染阴影
┗━faces:控制方块的各个面。没有定义的面将不会被渲染
┗━down/up/north/south/west/east:指定各个面的属性。
┗━uv:坐标[x1, y1,x2, y2]。规定使用材质贴图的区域坐标[x1, y1, x2, y2]
┗━texture:#材质属性名。指定这个面所使用的材质。
【注:在一开始的“textures”已经罗列了模型所需要的材质并指定了路径,这里是进行引用】
┗━cullface:down,up,north,south,west,east。规定当某个方向上接触方块时这个面不渲染
┗━rotation:数值。以90度幅度旋转材质
┗━tintindex:数值。规定是否将材质以编码颜色值染色。默认为不染色,使用任意数值进行染色,只有某些方块可以应用这个属性


例子:站立火把
这个最简单的例子描述了站立火把,模型由在assets/minecraft/models/block目录下的torch.json和normal_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" }
}
}
]
}

这个文件创建了火把的模型,用于普通火把和红石火把。创建3个方块组成元素,每个方块元素只有进行定义的2个面会被渲染。在"faces"里面,"uv"属性决定使用材质贴图的区域;由于这是父类,所以在文件开始的"textures"属性中没有规定具体的材质路径,而后面"texture"则规定为"#torch"。

文件:normal_torch.json
{
"parent": "block/torch",
"textures": {
"torch": "blocks/torch_on"
}
}

这个文件代表站立的普通火把。它通过"parent"载入了之前定义的站立火把文件"torch.json"并继承了其所有的属性。由于只用于普通火把,所以规定了具体的材质路径" torch :blocks/torch_on"。这样父类中"texture":"#torch"就加载了" torch_on"的材质贴图和粒子。


例子:任意方块
这个例子描述了Minecraft中大多数普通方块的一般结构。所有的方块都使用了相同的基本模型,并只使用它们的材质。这个模型被定义在assets/minecraft/models/block目录下的文件cube.json中。

文件: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" }
}
}
]
}

注意各个面中的culface属性。例如"culface":"down",使得下方有其他方块时,底面不渲染。

例子:树苗(Sapling)
这个例子描述了所有树苗的一般结构,没有规定具体的材质。文件cross.json定义了模型形状,具体的材质则在像oak_sapling.json这样的文件中规定。这些文件都储存在assets/minecraft/models/block目录下

文件: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" }
}
}
]
}

要创建树苗的一般形状,两个组成元素都应该旋转45度。所以设置旋转的轴线坐标[8, 8, 8]和轴线"y"轴,旋转45度。"rescale"设置为"true",这使得模型旋转时同时缩放,以占据和旋转前相同的空间。(看图片比较)



楼主 flashtt  发布于 2014-12-15 03:33:00 +0800 CST  
3、物品模型(Item models)
物品模型没有状态的概念,因此没有状态文件。assets/minecraft/models/item目录下包含所有的物品模型文件,这些文件的文件名在游戏源代码中硬性确定,所以不能随意修改。

根目录标签
┗━parent:载入一个不同的模型作为父类,起始路径为assets/minecraft/models
┗━可以设置为"block/方块模型文件"。所有方块都使用这个路径
┗━可以设置为"builtin/generated"。物品模型都使用这个路径
┗━可以设置为"builtin/entity"从实体文件中加载模型。只有箱子、末影箱、生物头颅和旗帜上使用
┗━指南针和钟需要设置为"builtin/compass"和"builtin/clock"
┗━textures:包含模型所需材质,可自行定义属性名称。起始路径为assets/minecraft/textures ┗━layer#:与parent:"builtin/generated"一起使用。物品储存中时使用的图标。多数物品只有1层,部分物品可以有多层(例如刷怪蛋、药水)。
┗━elements:包含所有模型的组成元素。这些元素都应该是方块形式
┗━An element
┗━from:坐标[x, y, z]。立方体的起点坐标,坐标数值应该在-16到32
┗━to:坐标[x, y, z]。立方体的终点坐标,坐标数值应该在-16到32
┗━rotation:规定元素的旋转
┗━origin:坐标[x, y, z]。设置旋转中心的坐标,默认值为[8, 8, 8]
┗━axis:x/y/z。指定旋转的方向
┗━angle:数值,默认为0。指定旋转的角度,以22.5度为幅度,从45度到-45度
┗━faces:控制方块的各个面。没有定义的面将不会被渲染
┗━down/up/north/south/west/east:指定各个面的属性
┗━uv:坐标[x1, y1,x2, y2]。规定使用材质贴图的区域坐标[x1, y1, x2, y2]
┗━texture:#材质属性名。指定这个面所使用的材质
┗━cull:true/false。规定元素不可见时是否渲染
┗━rotation:数值。以90度幅度旋转材质
┗━display:在不同地方物品模型的显示
┗━rotation:[x, y, z]坐标。规定模型根据[x,y, z]坐标进行旋转
┗━translation:[x, y, z]坐标。规定模型根据[x,y, z]坐标进行变形
┗━scale:[x, y, z]坐标。规定模型根据[x,y, z]坐标进行放大

例子:火把
这个例子描述了物品状态下的火把。这个模型可以在assets/minecraft/models/item目录下的torch.json文件找到。

文件:torch.json
{
"parent": "builtin/generated",
"textures": {
"layer0":"blocks/torch_on"
}
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

"parent"使用了""builtin/generated",所以游戏根据图标生成了火把的标准模型。火把只有"layer0"一个层,"layer0": "blocks/torch_on"载入了火把的方块材质,使其也被作为物品模型的材质使用;为了使火把在第一/三人称视角与玩家的手对齐,display属性规定了在这两种状况下模型需要被旋转、移动和放大。
【注:对于display属性,原版材质所有物品在第一/三人称视角都是进行了以上例子中相同数值设定的变形】

楼主 flashtt  发布于 2014-12-15 03:33:00 +0800 CST  
具体的后面再补。

楼主 flashtt  发布于 2014-12-15 03:34:00 +0800 CST  


补充一个图……坐标是指这个图中线交叉的点,从左上角开始并且从0开始计算。垂直方向同理。
如图,中心点的坐标是[8,8]。
所以一个方块的中心点坐标是[8,8,8]。

楼主 flashtt  发布于 2014-12-27 13:48:00 +0800 CST  


@12142e我显示是正常的……不知道你是不是文件放错位置或者金块的材质本身就缺失?

楼主 flashtt  发布于 2015-04-12 14:12:00 +0800 CST  

楼主:flashtt

字数:9515

发表时间:2014-12-15 11:32:00 +0800 CST

更新时间:2016-03-08 01:00:37 +0800 CST

评论数:60条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看