4

我有一个使用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');

我需要对这个模型应用一个顶点和片段着色器。这该怎么做?

4

2 回答 2

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 );
于 2013-05-23T12:11:03.690 回答
0

您需要一个着色器材质来添加顶点和片段着色器。

            var material = new THREE.ShaderMaterial( {

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

            } ),
于 2013-04-27T10:39:23.973 回答