判断一个面的朝向(正面或背面)主要基于顶点缠绕顺序(Winding Order) 的规则。

缠绕顺序(Winding Order)

数学原理

通过 屏幕空间中的有向面积 判断缠绕顺序:

所使用的坐标系

观察坐标系(眼坐标系) 中计算缠绕顺序(非世界坐标系)。
顶点经过模型视图变换(ModelView Matrix)后,在观察空间中根据投影到屏幕前的2D坐标计算缠绕方向。

各图形引擎的规则

OpenGL

通过 glFrontFace() 可修改默认规则:

C
glFrontFace(GL_CCW); // 逆时针为正面(默认)
glFrontFace(GL_CW); // 顺时针为正面
点击展开查看更多

Unity

版权声明

作者: Chaim

链接: https://chaim.eu.org/posts/%E9%9D%A2%E6%9C%9D%E5%90%91/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键