1
我在webgl中使用球體貼圖紋理時遇到了一些問題。球形映射文物
我的質地:
球體是單位球體(r = 1),用經度和緯度定義。
,但我得到了一些文物,如果我翻譯在X方向-2.5球體(不旋轉攝像頭):
此圖片是沒有紋理映射。而下面的圖像是使用紋理映射:
頂點和法似乎是確定。
頂點着色器:
precision highp float;
uniform mat4 mvMatrix; // Matrix zum Transformieren des Verex vom model-space in den view-space
uniform mat4 mvpMatrix; // Matrix zum Transformieren des Vertex vom model-space in den clip-space
uniform mat3 mvNMatrix; // Matrix zum Transformieren der Vertex-Normale vom model-space in den view-space
attribute vec4 mV; // Vertex im model-space
attribute vec3 mVN; // Vertex-Normale im model-space
varying vec2 vN;
void main(void)
{
vec3 e = normalize(vec3(mvMatrix * mV));
vec3 n = normalize(mvNMatrix * mVN);
vec3 r = reflect(e, n);
//float d = dot(n, e);
//vec3 r = e - 2.0 * d * n;
float m = 2.0 * sqrt(
pow(r.x, 2.0) +
pow(r.y, 2.0) +
pow(r.z + 1.0, 2.0)
);
vN.s = r.x/m + 0.5;
vN.t = r.y/m + 0.5;
gl_Position = mvpMatrix * mV;
}
和片段着色器:
precision highp float;
uniform sampler2D uSampler;
varying vec2 vN;
void main(void)
{
vec3 base = texture2D(uSampler, vN).rgb;
gl_FragColor = vec4(base, 1.0);
}
有誰知道,爲什麼我得到這些文物?我正在使用Windows和Firefox。
如果將對象略微移動到一邊會發生什麼?或者如果你順利地動畫並行運動? –
x-translation沒有問題-1。但我得到-1.5的文物。 – m1au