繁体   English   中英

Android OpenGL ES 1.0 中的广告牌

[英]Billboarding in Android OpenGL ES 1.0

我试图让广告牌工作,但在最后一步遇到了麻烦。

在遵循 NeHe 教程 (http://nehe.gamedev.net/data/articles/article.asp?article=19) 中的这些指示后,我有我的外观、右和上向量,并且我已经将模型视图矩阵转换为使用 glTranslatef() 获得广告牌的中心点。

float[] m = {right.x,right.y,right.z,0f,
            up.x,up.y,up.z,0f,
            look.x,look.y,look.z,0f,
            pos.x,pos.y,pos.z,1f}; //pos is the centerpoint position
gl.glMultMatrixf(m, 0);

当我尝试像这样创建乘法矩阵时,广告牌会以错误的位置和方向显示在各处。

我想我的问题是我不知道如何正确创建和乘以矩阵。 我尝试这样做,但是一半的线(需要逆时针旋转的线)以错误的方向旋转:

//normal is the vector that the billboard faces before any manipulations.
float angle = look.getAngleDeg(normal); //returns angle between 0 and 180.
gl.glRotatef(angle, up.x,up.y,up.z);

明白了,用我的第二种方法。 计算向量之间的角度(点积的 arccos)只能给出 0 到 180 之间的角度,所以一半的时间你想否定这个角度,所以旋转方向是相反的。

这很容易检查......因为我已经有了正确的矢量,我可以检查正确的矢量和法线之间的角度是否是锐角。 如果它是尖锐的,那么你想否定原始角度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM