2016-10-26 12 views
0

私は3DアニメーションモデルをレンダリングするWebアプリケーションで作業しています。これらのモデルは「Maya 2016」製です。私はthree.js(r81) 'maya exporter plugin'を使ってこれらのモデルをエクスポートしています(mayaエクスポータープラグインはここで確認できます)。three.jsのエラー: - 材料[json.type]がコンストラクタではありません

var objectLoader = new THREE.ObjectLoader(manager); 
objectLoader.load('assets/New-Heart/full_heart.json', function (object) {    
    scene.add(object); 
}, onProgress, onError); 

それから、次のエラーを与えている:キャッチされない例外TypeErrorを:材料は、[json.type] three.jsライブラリファイルにコンストラクタない私は、これはコードの下に使用してJSONモデルをエクスポートロードしています link、 (var材質=新品材質json.type;)オンライン:31381

この問題を解決するにはどうすればよいですか。いかなる示唆も認められるだろう。

答えて

0

今日このエラーが発生しました。私はjson.typeがjsonオブジェクト内にあったものが何であるかをチェックして終了しました.JsonオブジェクトがMaterialsオブジェクトのいずれかの型と一致するかどうかを確認するために渡しました。それはR72の古いオブジェクトファイルで、戻ってきたタイプは "MeshFaceMaterial"でした。しかし、そのタイプはもはやR82には存在しません。ここにThreeJs R82の資料のリストがあるオブジェクトがあります。あなたのタイプがここにない場合、それがエラーを起こす理由です。

var Materials = Object.freeze({ 
    ShadowMaterial: ShadowMaterial, 
    SpriteMaterial: SpriteMaterial, 
    RawShaderMaterial: RawShaderMaterial, 
    ShaderMaterial: ShaderMaterial, 
    PointsMaterial: PointsMaterial, 
    MultiMaterial: MultiMaterial, 
    MeshPhysicalMaterial: MeshPhysicalMaterial, 
    MeshStandardMaterial: MeshStandardMaterial, 
    MeshPhongMaterial: MeshPhongMaterial, 
    MeshNormalMaterial: MeshNormalMaterial, 
    MeshLambertMaterial: MeshLambertMaterial, 
    MeshDepthMaterial: MeshDepthMaterial, 
    MeshBasicMaterial: MeshBasicMaterial, 
    LineDashedMaterial: LineDashedMaterial, 
    LineBasicMaterial: LineBasicMaterial, 
    Material: Material 
}); 
+0

はい!あなたは正しいです、そして、どのように私はこの問題を解決しますか? –

+0

私はgithub(three.js)と@mrdoobに同じ問題を投稿して、ObjectLoaderの代わりにJSONLoaderを使用するように勧めました。 Becaase 'maya three.js exporter'は古いjson形式を提供し、ObjectLoaderではサポートされていません。彼はObjectLoaderをいくつか変更します。ここにリンク: (https://github.com/mrdoob/three.js/commit/8daaf727003f4f727e5fb15566b7eba7344ff405) 私はJSONLoaderで動いています。ご協力いただきありがとうございます –

関連する問題