1

我最近从 r58 更新到 r61 版本,发现使用 JSONLoader 即使我只想返回几何图形,我仍然在我的 model.js 文件中的着色器的纹理调用中得到 404。

loadModel: function( label, domobject, callback ) {
        var model_path   = '/models/js/' + label + '.js';
        var texture_place = '/textures/' + label + '.jpg';
        var loader = new THREE.JSONLoader()


        function onLoad(event) {
            domobject.append( Set.renderer.domElement );
        }

        var texture = new THREE.ImageUtils.loadTexture( texture_place, null, onLoad );
        loader.load( model_path, function ( geometry ) {
            var material = new THREE.MeshLambertMaterial({map: texture}); 
            Set.asset = new THREE.Mesh( geometry, material );
            Set.asset.position.x = Set.asset.position.y = Set.asset.position.z = 0;
            Set.asset.scale.x = Set.asset.scale.y = Set.asset.scale.z = 1;
            if ( callback ) callback(); 
        });         
    },

我这样设置是为了防止模型加载黑色然后弹出纹理,这很好用。我对 JSONLoader 的预期行为是

loader.load(model_path, function (geometry, materials) 将深入模型文件并查找材质和纹理,而仅指定“几何”将忽略着色器/纹理。

此外,

有没有更简单的方法来使用 JSONLoader 它的 texturePath 参数和 onLoad 函数来确保我的地理在纹理完成加载之前不会被渲染?

谢谢!

4

0 回答 0