2014-07-01 63 views
-1

繞軸旋轉它的尺寸變化我有一個三角形:對象與在OpenGL

static const GLfloat g_vertex_buffer_data[] = { 
-1.0f, -1.0f, 0.0f, 
1.0f, -1.0f, 0.0f, 
0.0f, 1.0f, 0.0f 
}; 

我翻譯三角z軸。然後我嘗試了繞X軸和Y軸:

mat4 rotationMatrix = glm::rotate(mat4(1.0f), rotation, vec3(1.0f, 0.0f, 0.0f)); 
mat4 translationMatrix = glm::translate(mat4(1.0f), vec3(position.x, position.y, -2.3f)); 

mat4 projectionMatrix = glm::perspective(90.0f, WindowWidth/WindowHeight, 1.0f, 1000.0f); 

這裏是我的頂點着色器:

#version 330 core 


layout(location = 0) in vec3 vertexPosition_modelspace; 
uniform mat4 rotationMatrix; 
uniform mat4 translationMatrix; 
uniform mat4 projectionMatrix; 

void main() 
{ 
    gl_Position = projectionMatrix*rotationMatrix*translationMatrix* vec4(vertexPosition_modelspace,1.0f); 

} 

因爲我必須添加圖片鏈接我不能添加圖片

沒有變換: https://www.dropbox.com/s/1eompnmjauvll9x/3.png

旋轉圍繞x軸: https://www.dropbox.com/s/9bpqb6nfudruuhx/ilk.png

旋轉圍繞y軸: www.dropbox.com/s/xxk9ofxfp4zk8ta/2.png

這似乎anormal給我。爲什麼會發生?

+1

你確定這其實是一個錯誤?看起來這可能只是你的投影矩陣的結果。嘗試在3個單位周圍繞其自身軸旋轉1個單位的立方體,看看它是否變形。 – cephalopodMD

回答

1

這看起來正常的我。

由於您不使用視圖矩陣,所以變換的結果(以及屏幕上投影后的頂點座標)將顯示一個嚴重扭曲的三角形(在Y中變大方向),因爲它向您旋轉,和周圍的其他方式,越來越小,當它從你旋轉了。

如果你想確保你的變換是正確的,添加視圖矩陣:

glm::mat4 viewMatrix = glm::lookAt(glm::vec3(5.0), glm::vec3(0.0), glm::vec3(0.0, 1.0, 0.0)); 

你可以把它作爲一個統一到你的材質,使它看起來像這樣:

gl_Position = projectionMatrix*viewMatrix*rotationMatrix*translationMatrix* vec4(vertexPosition_modelspace,1.0f); 

如果你仍然可以看到的變形效果,那麼這個問題確實存在,但是從你的代碼,我的猜測是,它已經是所有工作以及:)