【发布时间】:2019-06-14 10:28:36
【问题描述】:
如果我在 Blender 中将纹理的“几何”下的“正常”滑块值设置为 2.0。当我查看控制台日志中的对象时,我看到 X: 1, Y: -1 的正常值。我错过了什么吗?
我正在使用 ThreeJS R97。
【问题讨论】:
标签: three.js export blender gltf
如果我在 Blender 中将纹理的“几何”下的“正常”滑块值设置为 2.0。当我查看控制台日志中的对象时,我看到 X: 1, Y: -1 的正常值。我错过了什么吗?
我正在使用 ThreeJS R97。
【问题讨论】:
标签: three.js export blender gltf
根据您对“几何下的法线滑块”的描述,我猜您是在谈论 Blender 2.79x 或更早版本,Blender 的内置渲染器,材质设置,其中该滑块控制应用的法线贴图的强度。
所以,这里有几件事要谈。首先,glTF 导出器不正式支持内置的 Blender Render 材质,并且这个滑块没有像您已经发现的那样连接。导出器的开发工作现在集中在名为 glTF-Blender-IO 的插件上,该插件在 Blender 2.79 中工作,但实际上预装在 Blender 2.80 Beta 中。
此插件使用“Principled BSDF”节点与 Cycles 和 Eevee 引擎配合使用,可选择与一些辅助节点(例如“Normal Map”)结合使用。因此,glTF 导出器希望找到这样连接的法线贴图:
请记住,glTF 格式不包含节点本身,但是,导出器将理解此连接并将法线贴图写入 glTF 文件,以及可选的基色、金属色、粗糙度和自发光地图(通过发射所需的另一个单独节点)。
不过这个计划有个小折痕,看来实力还没有上钩。 Blender 的“法线贴图”节点包含一个“强度”参数,glTF 格式包含一个名为normalTexture.scale 的相应参数,它做同样的事情,但是,看起来导出器没有将值从一个地方复制到另一个地方。我为此提交了issue #241,希望最终会得到解决。
在 ThreeJS 中,X: 1, Y: -1 的值用于单位强度法线贴图。 ThreeJS 法线贴图使用与 glTF 格式不同的 Y 约定,因此在从 glTF 加载法线贴图时有意翻转 Y。因此,要使其强度加倍,您可以设置 X:2,Y:-2。目前看来,在导出器添加功能以复制缺少的强度参数之前,在代码中分配(或手动编辑 glTF)是唯一的选择。
【讨论】: