uv坐标从什么范围
What range are the uv coordinates from
我有一个带着色器的球体 material。在那个 material 中,我需要使用 uv
坐标,但我不明白它们是如何计算的。如果我检查球体的几何形状 uv
坐标在 [0, 1]
范围内,但在我的着色器中它们似乎只使用该范围的一半。为什么会这样?
var material = new THREE.ShaderMaterial({
vertexShader: vertexShader,
fragmentShader: fragmentShader
});
var sphere = new THREE.Mesh( new THREE.SphereGeometry(150, 16, 16), material);
//
// Vertex shader
//
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
//
// Fragment shader
//
varying vec2 vUv;
void main() {
// why is the vUv.x range somewhere between 17/255 and 110/255
gl_FragColor = vec4( vUv.x, 0.0, 0.0, 1.0);
// this corrects it a little bit but it still isnt range [0/255, 255/255]
//gl_FragColor = vec4( vUv.x*2.0, 0.0, 0.0, 1.0);
}
哦,我刚知道 :) ... uv.x
范围是 [0, 1]
,只是范围是整个球体,而不仅仅是可见部分。在 jsfiddle 中添加可移动相机就很清楚了,只需尝试围绕球体旋转 :)
我有一个带着色器的球体 material。在那个 material 中,我需要使用 uv
坐标,但我不明白它们是如何计算的。如果我检查球体的几何形状 uv
坐标在 [0, 1]
范围内,但在我的着色器中它们似乎只使用该范围的一半。为什么会这样?
var material = new THREE.ShaderMaterial({
vertexShader: vertexShader,
fragmentShader: fragmentShader
});
var sphere = new THREE.Mesh( new THREE.SphereGeometry(150, 16, 16), material);
//
// Vertex shader
//
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
//
// Fragment shader
//
varying vec2 vUv;
void main() {
// why is the vUv.x range somewhere between 17/255 and 110/255
gl_FragColor = vec4( vUv.x, 0.0, 0.0, 1.0);
// this corrects it a little bit but it still isnt range [0/255, 255/255]
//gl_FragColor = vec4( vUv.x*2.0, 0.0, 0.0, 1.0);
}
哦,我刚知道 :) ... uv.x
范围是 [0, 1]
,只是范围是整个球体,而不仅仅是可见部分。在 jsfiddle 中添加可移动相机就很清楚了,只需尝试围绕球体旋转 :)