如何将着色器添加到从OBJMTLLoader加载的THREE.Object3D

Ovi*_*lia 3 javascript shader webgl three.js

我有一个模型加载使用THREE.OBJMTLLoader.

var loader = new THREE.OBJMTLLoader();
loader.addEventListener('load', function(event) {
    var mesh = event.content;
    scene.add(mesh);
});
loader.load('model/machine.obj', 'model/machine.mtl');
Run Code Online (Sandbox Code Playgroud)

我需要将顶点和片段着色器应用于此模型.这该怎么做?

mrd*_*oob 5

除了Gero3的答案之外,这还可以确保内容中的所有网格都能获得正确的材质:

var material = new THREE.ShaderMaterial( {

    uniforms: shader.uniforms,
    fragmentShader: shader.fragmentShader,
    vertexShader: shader.vertexShader

} );

var object = event.content;
object.traverse( function ( child ) {

    if ( child instanceof THREE.Mesh ) {

        child.material = material;

    }

} );
scene.add( object );
Run Code Online (Sandbox Code Playgroud)