我的高度图计算法线有一个小问题.它有一种奇怪的行为.在较高点和较低点,法线很好,但在中间它们似乎是错误的.它们被点光照亮.
已删除未修复的源
编辑:尝试了两种新方法:
这是正常的.它看起来很好,但你看到单面.
Position normal = crossP(vectorize(pOL, pUR), vectorize(pOR, pUL));
Run Code Online (Sandbox Code Playgroud)
我也尝试用这种方式按顶点做,但也有一个奇怪的输出.
这是Nico提出的建议:
它看起来也很奇怪.也许我如何计算帮助点是错误的.
已删除未修复的源
编辑2:我的点的定义:OL,OR,UL,UR是要绘制的平面的角顶点.
postVertPosZ1 postVertPosZ2
preVertPosX1 pOL pOR postVertPosX1
preVertPosX2 pUL pUR postVertPosX2
preVertPosZ1 preVertPosZ2
Run Code Online (Sandbox Code Playgroud)
EDIT3:
我现在解决了.这是一个愚蠢的错误:我忘了将帮助顶点的y值乘以高度乘数,并且必须更改一些值.