我正在尝试绘制一个始终与相机平行的矩形(基本上是一个平面)。我想将平面限制为一定大小(假设高度= 2,宽度= 2个单位)。但是,我不明白如何设置顶点的位置,以使矩形始终与摄影机平行。
首先,我使用以下方法计算相机法线(方向):

glm::normalize(mPosition - mTargetPos); // normal
然后我使用点法线方程式来定义平面:
normal = (A, B, C)
point = (a, b, c)  // this point will serve as a center to the plane
A(x−a)+B(y−b)+C(z−c) = 0
问题:如何定义平面的顶点?

最佳答案

  • 将一些规范化的 vector UpDir用作向上方向(取决于您的坐标系,它可以是UpDir=(0,1,0)UpDir=(0,0,1),或者可以通过某种方式进行计算)
  • 计算SideDirnormal的叉积UpDir
  • 现在,您可以将SideDirUpDir用作飞机坐标系的基础,并计算矩形的四个顶点,分别为point+width*SideDir+height*UpDirpoint+width*SideDir-height*UpDirpoint-width*SideDir-height*UpDirpoint-width*SideDir+height*UpDir
  • 关于c++ - 如何定义始终与摄影机平行的平面的顶点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62747548/

    10-12 07:40