3d - 将世界空间法线转换为屏幕空间法线

标签 3d transformation space projection normals

将世界空间中定义的表面法线转换为屏幕空间中的法线的正确方法是什么?我不认为它们可以简单地乘以投影矩阵,因为透视划分将事物转换为剪辑空间,据我所知,在这个空间中与图像平面共面的平面保持共面。

但是我正在寻找的转换应该导致转换的法线,这样图形 A 中描绘的蓝色世界法线应该导致不同的屏幕空间法线(因为,即使它们的平面与图像平面共面,它们也不面向相机) - 另一方面,图形 B 中描绘的法线在转换后应该(或多或少)相等,因为它们的表面面向相机。

enter image description here

我在寻找什么转变?如何计算?

我需要这个来实现一些屏幕空间效果。

最佳答案

您正在寻找关于基的变换矩阵。关于如何计算这个矩阵的步骤有非常好的视频。查询 KhanAcademy video .

编辑

您没有提供有关您使用的技术(OGL、DX、着色器、自己的投影等)的任何信息,但您绝对应该阅读一些有关切线空间的文章,例如Messing with Tangent Space ..

关于3d - 将世界空间法线转换为屏幕空间法线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317350/

相关文章:

python - Python 中的 3D 几何相交

css - 复合缩放和旋转变换会扭曲内容

css - 文本下的悬停间距

Python - 如何删除汉字之间的空格,同时保留字符和数字之间的空格?

c++ - 空间未显示

wpf - 将 3D 矩形映射到 2D 屏幕

html - 仅使用 CSS 渐变创建立方体

c++ - 如何获取 3d 维数组并将其转换为模型?

python - numpy数组的边界框

xml - XSL 使用计数器反转顺序