2025年关于 mat0_c.jpg 风格的 PBR 材质贴图与 Noesis 加入 .mview 文件的问题解决

关于 mat0_c.jpg 风格的 PBR 材质贴图与 Noesis 加入 .mview 文件的问题解决有些做设计的网友问 得到的模型贴图是 mat0 c jpg 的 观察是 PBR 材质贴图 但是不知道哪个文件用在哪个通道 这里专门解答 1 首先这种贴图一般是 Marmoset 解包得到的贴图文件 一般可以直观的看出 c 是漫反射 Albedo BaseColor 贴图

大家好,我是讯享网,很高兴认识大家。

有些做设计的网友问,得到的模型贴图是 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., "emissiveSecondaryUV":false, "aniso":false, "microfiber":false, "refraction":false, "extrasTexCoordRanges":{"emissiveTex":{"scaleBias":[0.,0.96875,0.0078125,0.015625]},"aoTex":{"scaleBias":[0.,0.96875,0.,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  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 

重新运行程序即可!

小讯
上一篇 2025-01-14 19:11
下一篇 2025-03-27 23:22

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/128815.html