【发布时间】:2013-07-05 22:01:26
【问题描述】:
我在three.js r.58 中使用普通着色器,我理解requires a normal map。但是,我使用的是动态置换贴图,因此预计算的法线贴图在这种情况下不起作用。
我发现的所有光照置换贴图示例都使用平面着色或预先计算的法线贴图。是否可以根据置换的顶点动态计算法线?
编辑:我已经发布了a demo of a sphere with a displacement map showing flat normals:
这是 github 存储库的链接,其中包含我所有说明此问题的示例,以及我最终找到的解决方案: https://github.com/meetar/three.js-normal-map-0
【问题讨论】:
-
three.js 中的法线贴图在切线空间,而不是对象空间。同时使用置换贴图和法线贴图应该没有问题。
-
我不想使用预先计算好的法线贴图。如何在应用置换贴图后根据顶点自动计算法线?
-
法线贴图用于添加细节。听起来你的意思是你想改变顶点法线。这与切线空间法线贴图无关。
-
好的,在这种情况下:如何根据置换的顶点更新顶点法线?
-
你的原始顶点法线应该足够好,除非你有严重的扭曲。此外,您的原始顶点法线可能是平滑的(为您提供平滑的阴影)。生成新的平滑顶点法线的算法是什么?
标签: three.js webgl shader fragment-shader