模型渲染成一片漆黑,多半是这个原因
顶点法线告诉渲染器每个表面朝向哪一侧。没有法线就无法计算光照,于是表面要么呈现死黑,要么是均匀的灰色,要么是刺眼的硬质刻面——具体取决于渲染器有多宽容。
法线缺失极为常见。STL文件确实会存储面法线,但许多导出器把它们统统写成零。OBJ文件则经常干脆省略不写。还有不少glTF导出器会跳过法线,认定加载器会自行生成——有的加载器确实会生成,有的则完全不会。
各项操作
检查逐个网格报告是否存在法线、切线和UV,以及几何体是否已建立索引。请从这里开始。
平滑法线对汇聚于每个顶点的所有面的法线取平均值,使曲面获得连续的着色。有机造型以及任何应当显得圆润的物体,都需要它。
平面法线让每个三角形拥有各自的法线,于是每个面独立着色,刻面清晰可见。机加工零件、低多边形风格,以及本就是刻面结构的几何体,都应该这样处理。请注意,这需要拆分共享顶点,因此顶点数会增加。
翻转法线会反转每一条法线,同时颠倒三角形的环绕顺序。模型看起来像是从内部被照亮,或者一开启背面剔除就消失不见,靠的就是这个操作来修复——问题通常源自流程上游某处的镜像变换。
生成切线计算法线贴图所必需的切线向量。
移除法线将其彻底剥离,当您希望由后续工具自行生成法线时,偶尔会用得上。
为什么法线贴图毫无效果
这是最常见的光照问题,答案几乎总是:切线。
法线贴图把方向存储在切线空间中——这是一个逐顶点定义的坐标系,由表面法线以及纹理在表面上延伸的方向共同确定。没有切线向量,就没有任何坐标系可以用来解读这张贴图。有些渲染器会在加载时即时计算切线,另一些则干脆忽略贴图,把表面当作光滑表面来照亮。
本工具会标出所有已指定法线贴图、拥有UV但没有切线属性的网格:这种组合在至少一部分渲染器中必然出问题,而且不专门去查就完全看不出来。
生成切线同时需要一套UV和一个索引缓冲。缺少其中任何一项的网格会被明确报告为已跳过,而不是被悄悄忽略。
看到结果
预览提供法线可视化模式,按每个表面的朝向为其着色。平滑表面呈现连续的颜色渐变,平面表面呈现边界分明的色块,翻转的法线则呈现反转的颜色。这比费力去判断光照要快得多。
隐私
一切都在您的浏览器中运行,不上传任何内容。
Tiny Online Tools







