2017-06-26 2 views
0

Blenderで設計したメッシュをthree.jsプロジェクトにインポートしようとしています。three.js用のBlenderのフェースとフェイスマテリアルのエクスポート

io_threeアドオンを追加しました。これで、Blenderのjsonファイルを書き出すことができます。

メッシュ(THREE.JSONLoaderを使用)をロードしようとすると、「Uncaught TypeError:three.min.jsの684行からプロパティ 'length' of undefined」を読み取ることができません。配列は未定義です。

私は、Blenderで 'face materials'チェックボックスはthree.jsエクスポータでチェックされていますが、私にとってはオプションがグレー表示されていると読んでいます。また、私は、3つの輸出業者のジオメトリセクションで、顔をエクスポートするオプションがチェックされておらず、グレー表示されていることに気付きました。私はこれが問題だと思っていますが、なぜこれらのチェックボックスをチェックできませんか?

Blenderがthree.jsエクスポータの 'face materials'と 'faces'オプションを有効にしない理由を知っている人はいますか?

編集
完全を期すために、ここで私はメッシュをロードするために使用しているコードです。

var loader = new THREE.JSONLoader(); 
// load a resource 
loader.load('assets/meshes/cube.json', function (geometry) { 
     var material = new THREE.MeshLambertMaterial({ color: 0x006666 }); 
     mesh = new THREE.Mesh(geometry, material); 
     scene.add(mesh); 
    } 
) 

cube.jsonファイルは、資産/メッシュフォルダに、確かに、です。
また、私は 'cube.js'(Windowsのファイル拡張子を変更する)として読み込みしようとしましたが、私が取り組んでいる最初の問題は、Blenderからの書き出しです。ありがとう。あなたはTHREE.BufferGeometryLoaderのためにそれをTHREE.JSONLoaderを入れ替える場合

そして、ここでボールをプレーいないcube.jsonファイルです... cube.jsonで

{ 
    "data":{ 
     "index":{ 
      "type":"Uint16Array", 
      "array":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35], 
      "itemSize":1 
     }, 
     "attributes":{ 
      "uv":{ 
       "type":"Float32Array", 
       "array":[1,0,0,1,0,0,0.999999,1,0,0,1,0,0.999999,1,0,0,1,0,0.999999,1,0,0,1,0,1,0,0,1,0,0,0.999999,1,0,0,1,0,1,0,0.999999,1,0,1,0.999999,1,0,1,0,0,0.999999,1,0,1,0,0,0.999999,1,0,1,0,0,1,0,0.999999,1,0,1,0.999999,1,0,1,0,0], 
       "itemSize":2 
      }, 
      "normal":{ 
       "type":"Float32Array", 
       "array":[-7.10543e-15,-1,2.98023e-08,-7.10543e-15,-1,2.98023e-08,-7.10543e-15,-1,2.98023e-08,7.10543e-15,1,-2.98023e-08,7.10543e-15,1,-2.98023e-08,7.10543e-15,1,-2.98023e-08,1,-2.38419e-07,7.10543e-15,1,-2.38419e-07,7.10543e-15,1,-2.38419e-07,7.10543e-15,-5.96046e-08,-2.98023e-07,1,-5.96046e-08,-2.98023e-07,1,-5.96046e-08,-2.98023e-07,1,-1,-1.49012e-07,-2.38419e-07,-1,-1.49012e-07,-2.38419e-07,-1,-1.49012e-07,-2.38419e-07,2.38419e-07,1.78814e-07,-1,2.38419e-07,1.78814e-07,-1,2.38419e-07,1.78814e-07,-1,-1.77636e-15,-1,2.98023e-08,-1.77636e-15,-1,2.98023e-08,-1.77636e-15,-1,2.98023e-08,1.5099e-14,1,-2.98023e-08,1.5099e-14,1,-2.98023e-08,1.5099e-14,1,-2.98023e-08,1,3.27825e-07,5.66244e-07,1,3.27825e-07,5.66244e-07,1,3.27825e-07,5.66244e-07,-5.0664e-07,1.49012e-07,1,-5.0664e-07,1.49012e-07,1,-5.0664e-07,1.49012e-07,1,-1,-1.19209e-07,-2.08616e-07,-1,-1.19209e-07,-2.08616e-07,-1,-1.19209e-07,-2.08616e-07,2.38419e-07,1.78814e-07,-1,2.38419e-07,1.78814e-07,-1,2.38419e-07,1.78814e-07,-1], 
       "itemSize":3 
      }, 
      "position":{ 
       "type":"Float32Array", 
       "array":[1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,0.999999,1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,-1,0.999999,1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,0.999999,1,1,1,1,-1,0.999999,1,1,1,-1,1,0.999999,1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1], 
       "itemSize":3 
      } 
     } 
    }, 
    "metadata":{ 
     "normal":36, 
     "type":"BufferGeometry", 
     "uv":36, 
     "generator":"io_three", 
     "position":36, 
     "version":3 
    } 
} 
+0

あなたは、最新のビルドR87と同様、最新の輸出を使用していることを確認することができますか? – OtterFamily

+0

先週末(22/6/2017)の最後にthree.js-master.zipをダウンロードし、同様にio_threeアドオンをダウンロードしました。もう一度ジップを見てください。それはどのバージョンですか? – moosefetcher

+0

コンソールからのクロムの読み取り。 Chromeのctrl-shift-iを押してコンソールの読み取りを確認します。 3つは常にバージョン番号を吐き出す – OtterFamily

答えて

0

さは「BufferGeometry」

としてその型を宣言します作品罰金 enter image description here

var loader = new THREE.BufferGeometryLoader(); 
     loader.load("cube.json", function (g) { 
      var mesh = new THREE.Mesh(g, new THREE.MeshBasicMaterial({color:0xffffff})); 
      scene.add(mesh); 
     }); 
+0

あなたのコードをコピーしました( "assets/mesh /"がメッシュパスに追加されています)。私は、私が読んだすべての指示がなぜTHREE.JSONLoaderを使用すると言ったのだろうかと思います。私は '顔の材料'をチェックしてモデルをエクスポートすることができる場合、それは別のタイプとしてエクスポートされますか? – moosefetcher

+0

THREEjsに関する多くのドキュメントは古くなっています。それはオープンソースプロジェクトであり、物事は亀裂に陥る。顔の材料は本当に必要ではありません。面材質とは、面ごとに異なる材質を定義できることを意味します。あなたはそのように動作することができますが、ファイルサイズを増やすので、デフォルトですべきです。私はちょうど異なる幾何学に複数の材料でメッシュを壊すだろう – OtterFamily

関連する問題