THREE.ShaderMaterial 来自搅拌机的 JSON 模型
THREE.ShaderMaterial on JSON model from blender
three.js r.73
我使用了一个简单的着色器,可以在脸上制作方格。这是 VertexShader 的代码:
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);
}
和片段着色器:
uniform vec3 color1;
uniform vec3 color2;
uniform float scale;
varying vec2 vUv;
void main() {
vec2 center = -1.0 + 2.0 * vUv;
vec2 uv = floor(center.xy * scale);
if(mod(uv.x + uv.y, 2.0) > 0.5){
gl_FragColor = vec4(color1, 1.0);
}else{
gl_FragColor = vec4(color2, 1.0);
}
}
它适用于原始对象,但不适用于来自 Blender 的 json 格式的模型。
问题:为什么着色器不适用于 json 模型?
回答放在@gaitat
"uvs": [[0.5,0.5,0.5,0.749957(...)]],
JSON模型必须有UV贴图,I've updated jsfiddle。
r.73
three.js r.73
我使用了一个简单的着色器,可以在脸上制作方格。这是 VertexShader 的代码:
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);
}
和片段着色器:
uniform vec3 color1;
uniform vec3 color2;
uniform float scale;
varying vec2 vUv;
void main() {
vec2 center = -1.0 + 2.0 * vUv;
vec2 uv = floor(center.xy * scale);
if(mod(uv.x + uv.y, 2.0) > 0.5){
gl_FragColor = vec4(color1, 1.0);
}else{
gl_FragColor = vec4(color2, 1.0);
}
}
它适用于原始对象,但不适用于来自 Blender 的 json 格式的模型。
问题:为什么着色器不适用于 json 模型?
回答放在@gaitat
"uvs": [[0.5,0.5,0.5,0.749957(...)]],
JSON模型必须有UV贴图,I've updated jsfiddle。
r.73