4

ブレンダーで簡単な 3D モデルを作成し、.obj ファイルにエクスポートしました。今、three.js を使用してロードしています。名前に「クリック可能」という文字列が含まれるオブジェクトをクリックすると、Y 軸上を移動します。

ここで見ることができます:http: //three.parkz.cz/shop.html

問題は、(ブレンダーで設定した) オブジェクトの名前から解析された情報が正しいオブジェクトに対応していないことです。

読み込みと解析:

var loader = new THREE.OBJMTLLoader();
loader.addEventListener('load', function(event) {
  object = event.content;
  object.name = 'CustomObjects';
  for(var i = 0; i < object.children.length; i++) {      

    //console.log(object.children[i]);
    var properties = object.children[i].name.split('_');
    if(properties[1] == 'clickable') {
      object.children[i].clickable = true; 
    } else object.children[i].clickable = false;

  }
  object.rotation.x = 0.5;
  object.rotation.y = 0.5;                                  
  scene.add(object);
});
loader.load('shop.obj', 'shop.mtl');

たとえば、中央にある 2 つの立方体 (「005_kiosek」と「010_kiosek2」と呼ばれる) はクリック可能ではないはずですが、クリック可能です! コンソールを開いてクリックすると、「004_clickable」と「009_clickable」という名前が間違っていることがわかります。

ここに私のブレンダーファイルがあります: http://three.parkz.cz/shop.blend

JavaScript側の問題ですか、それともブレンダーのエクスポートが間違っていますか?

前もって感謝します!

マーティン

PS: 単純なメッシュ (緑と青) がうまくレンダリングされない理由を知っている人はいますか?

4

1 に答える 1

4

現在の実装では、obj ローダーは三角形のみを面として受け入れるため、緑と青のメッシュは正しくレンダリングされません。これらのメッシュはポリゴンを使用しているため、正しくレンダリングされません。

名前に関しては、blender ファイルに入力したものが正しいことを確認しようとします。したがって、モデルをロードするときは、名前とそのクリック可能な属性を出力するだけで、それを当然のことと考えるのではなく、すべてが正しいかどうかを確認できます。

于 2013-05-11T12:22:17.347 に答える