有些做设计的网友问,得到的模型贴图是 mat0_c.jpg 的,观察是 PBR 材质贴图
但是不知道哪个文件用在哪个通道,这里专门解答
1.首先这种贴图一般是Marmoset解包得到的贴图文件
一般可以直观的看出 _c 是漫反射(Albedo,BaseColor)贴图,如:mat0_c.jpg
带 _n 的是法线(Normals)贴图,如:mat0_n.jpg
不过如果想要确切的知道,哪个贴图文件属于哪个通道,就要把 scene.json 解压出来
2.查看 scene.json 配置的 Materials 材质段,以只有的一个默认(Default)材质的场景为例
"materials":[
{
"name":"Default",
"albedoTex":"mat0_c.jpg",
"reflectivityTex":"mat0_r.jpg",
"normalTex":"mat0_n.jpg",
"glossTex":"mat0_g.jpg",
"extrasTex":"mat0_s.jpg",
"blend":"none",
"alphaTest":0,
"fresnel":[1,1,1],
"horizonOcclude":1,
"horizonSmoothing":0,
"aoSecondaryUV":false,
"tangentOrthogonalize":true,
"tangentNormalize":true,
"tangentGenerateBitangent":false,
"useSkin":false,
"emissiveIntensity":4.760000228881835938,
"emissiveSecondaryUV":false,
"aniso":false,
"microfiber":false,
"refraction":false,
"extrasTexCoordRanges":{"emissiveTex":{"scaleBias":[0.484375,0.96875,0.0078125,0.015625]},"aoTex":{"scaleBias":[0.484375,0.96875,0.5078125,0.015625]}}
}
]
可以看出带 _r 的是反射(Reflectivity)材质贴图,带 _g 的是高光(Gloss)材质贴图
还有附带的材质 mat0_s.jpg 这是一个拼接起来的贴图,而且一般只使用其中一部分(估计是为了优化边沿)
其描述在 extrasTexCoordRanges 那一行,分别是 自发光(Emissive)和 环境光遮罩(Ambient Occlusion,AO)贴图
以及详细的坐标,分别是 宽,高,左,顶,均是比例值,1 代表图像尺寸的100%
3.关于 Noesis 读取本地 mview 文件崩溃
如果是数组越界,一般是由于打开的 mview 文件带有动画,而 Python 脚本没有对相关的文件类型做处理
解决方法是编辑 \noesis\plugins\python\fmt_artstation_mview.py 脚本文件
在 def extract(bs): 函数中的数组定义追加
files["animData/mset"] = []
files["keyframes/mset"] = []
即可,修改后的函数为
def extract(bs):
files = {}
files["image/derp"] = []
files["application/json"] = []
files["image/jpeg"] = []
files["image/png"] = []
files["model/mset"] = []
# add "animData/mset" and "keyframes/mset" by [email protected]
files["animData/mset"] = []
files["keyframes/mset"] = []
while not bs.checkEOF():
name = bs.readString()
ftype = bs.readString()
c = bs.readUInt()
d = bs.readUInt()
e = bs.readUInt()
bin = bs.readBytes(d)
if c & 1:
bin = decompress(bin, e)
files[ftype].append({ "filename": name, "data": bin })
return files
重新运行程序即可!