我最近从 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 函数来确保我的地理在纹理完成加载之前不会被渲染?
谢谢!