2011-06-04 69 views
1

我試圖讓廣告牌工作,但最後一步遇到問題。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); 

回答

0

明白了,用我的第二個方法。計算矢量之間的角度(點積的arccos)只能給出一個介於0和180之間的角度,所以有一半時間要取消角度,因此旋轉方向相反。

這很容易檢查...因爲我已經有了正確的矢量,我可以檢查右向量和正常之間的角度是否是尖銳的。如果它是尖銳的,那麼你想要否定原始角度。