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 に答える