我正嘗試使用來自http://antongerdelan.net/opengl/cubemaps.html的GLSL代碼在FxPlug中實現立方體貼圖。我對代碼進行的唯一主要修改是變量名稱更改,並使用gl_Vertex和gl_Normal代替屬性。FxPlug在遠處反轉立方體貼圖
頂點程序片斷:
varying vec3 pos_eye;
varying vec3 n_eye;
pos_eye = vec3(ViewMatrix * ModelMatrix * gl_Vertex);
n_eye = vec3(ViewMatrix * ModelMatrix * vec4(gl_Normal, 0.0));
gl_Position = ProjectionMatrix * ViewMatrix * ModelMatrix * gl_Vertex;
片段節目片段:
vec3 incident_eye = normalize(pos_eye);
vec3 norm = normalize(n_eye);
vec3 reflected = reflect(incident_eye, norm);
reflected = vec3(InverseViewMatrix * vec4(reflected, 0.0));
vec3 cubemapColor = textureCube(cubemap, reflected).rgb;
當我在模型加載然後插入一個攝像頭,立方體貼圖實際上開始了倒立,但一旦我將相機移開一定距離,我就可以得到正確的結果。有沒有人在實現立方體貼圖之前看到過這個問題?我認爲這是Motion和/或FxPlug如何處理相機的問題。
行動問題的視頻可以在http://youtu.be/Yj85y-VKjCY
在視頻中可以發現,我加載了一個基本的球體,將其放大,並啓用天空盒。球體上的立方體貼圖開始顛倒。當我旋轉球體時,立方體貼圖甚至不會移動(當攝像機移動時忽略整個視頻中的黑色紋理僞影;這似乎是在內存不足或內存不足時發生的)。放大球體後,我得到了更真實的「反射」失真,但立方體貼圖仍然顛倒。 直到我開始縮小到合適的距離時,立方體貼圖才轉變爲它應該看起來的樣子。我注意到,圍繞球體的白色矩形完全可見時,立方體貼圖看起來正確。
我將不勝感激關於如何解決這個問題的任何建議。提前致謝!