2016-08-16 10 views
0

JSONシーンでさまざまな素材を作成し、メッシュにデフォルトの素材を割り当て、ユーザーインターフェース内のさまざまな素材を切り替えるようにしています。JSONシーンから未使用の素材を参照する

JSONを解析した後、すべての素材を未使用の素材でも参照できますか?

答えて

0

THREE.ObjectLoaderのコードを調べると、JSON全体を解析するが、シーンオブジェクトへの単一の参照が明示的に返されることがわかります。私はこの問題を実行時にparseメソッドにパッチを当てることで解決しました。コードはTHREE.ObjectLoader.parseから取得され、戻り値のみが異なる(Objectを返すが、THREE.Object3Dは返さない)。

function objectLoaderParseOverride(json, onLoad) { 
    var ret = {}; 

    ret.geometries = this.parseGeometries(json.geometries); 
    ret.images = this.parseImages(json.images, function() { 
     if (onLoad !== undefined) onLoad(ret); 
    }); 
    ret.textures = this.parseTextures(json.textures, ret.images); 
    ret.materials = this.parseMaterials(json.materials, ret.textures); 
    ret.object = this.parseObject(json.object, ret.geometries, ret.materials); 
    if (json.animations) { 
     ret.object.animations = this.parseAnimations(json.animations); 
    } 
    if (json.images === undefined || json.images.length === 0) { 
     if (onLoad !== undefined) onLoad(ret); 
    } 
    return ret; 
} 

var loader = new THREE.ObjectLoader(); 
loader.parse = objectLoaderParseOverride; 
関連する問題