是否可以编辑从JSON模型导入的纹理?

时间:2013-07-29 20:00:33

标签: three.js

我导入了JSON模型,导入几何体和材质。

loader = new THREE.JSONLoader();

            loader.load( "alisopoli/alisopoli.js", function( geometry, materials ) {
                for ( var i = 0; i < materials.length; i ++ ) {
                    materials[ i ].side = THREE.DoubleSide;
                    materials[ i ].alphaTest = 0.75;
                    materials[ i ].overdraw = true;
                }
                mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
                mesh.overdraw = true;
                scene.add( mesh );
            } );

该模型有很多材料(超过30个),我需要为它们的每个纹理添加“THREE.nearestFilter”。 有可能做这样的事吗?

loader.load( "model.js", function( geometry, materials ) {
    var modelMaterials = new THREE.MeshFaceMaterial( materials );
    var modelTextures = modelMaterials.map
    moderTextures.minFilter = THREE.nearestFilter;
    mesh = new THREE.Mesh( geometry, modelMaterials );
    scene.add( mesh );
} );

我想编辑模型的每个纹理的“minFilter”和“magFilter”(如果可能的话,编辑所有渲染的场景)。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

传递给函数的材质参数实际上是所有材质的数组。您可以做的是遍历该数组并为每个数组设置minFilter,如下所示:

loader.load( "model.js", function( geometry, materials ) {
    for ( var i = 0; i < materials.length; i++ ) {
        materials[i].map.minFilter = THREE.NearestFilter;
        materials[i].map.magFilter = THREE.NearestFilter;
    }
    mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
    scene.add( mesh );
} );

这应该可以解决问题。