假设我必须在画布上绘制3D形状的两个面。在OpenGL中,我们使用顶点的顺时针和非顺时针顺序来检测正面是正面,背面是正面,但是我不能使用OpenGL,并且我将使用画布。看来,如果我们先在面孔后面绘制,然后再在面孔前面绘制,它就会隐藏在面孔后面,但是我的3D形状会旋转,并且每个面孔有时必须在前面,有时必须在后面。
我的问题是:当形状旋转时,如何检测女巫的脸在前面?还是任何其他方法可以将当前物体隐藏在正面的后面?
您描述的过程称为背面剔除(这将大大提高您的Google在该主题上的实力)。
最简单的实现方法是取下normal vector
的face
,并检查它是否朝向或远离相机。
您使用相机的dot product
的normal
和相机的view vector
执行此操作。取决于点积的sign
,多边形朝向或远离相机。
如果此时您实际上还没有相机,请在屏幕上替换一个向量(即[0, 0, 1]
或[0, 0, -1]
,具体取决于您的轴系)。