画一个始终面向相机的圆圈,画一个圆圈很容易。只需创建一个顶点环并使用 GL_LINE_STRIP 来绘制它。创建一个总是看着相机的变换矩阵有点复杂。这是执行此操作的代码。只需将此设置为您的世界矩阵。
Matrix4 createBillbordMatrix(Vector3 position, Vector3 cameraPosition, vector3 up)
{
Vector3 Z = Vector3.Normalize(direction - cameraPosition);
Vector3 X = Vector3.Normalize(Vector3.Cross(up, Zaxis));
Vector3 Y = Vector3.Cross(ZAxis, XAxis);
Vector3 T = cameraPosition;
return new Matrix4(X.X, X.Y, X.Z, 0,
Y.X, Y.Y, Y.Z, 0,
Z.X, Z.Y, Z.Z, 0,
T.X, T.Y, T.Z, 1);
}
如果你知道矩阵是如何工作的,你应该能够弄清楚它是如何工作的;)。否则不要担心,你不应该有实现它的问题。