2017-10-24 2 views
2

私はTHREE.sceneでウェブ上にある3Dモデルを読み込もうとしています。 私は、基本的なチュートリアルに従ってきただけでなく、私の光やカメラを取り扱い、それはいくつかのオブジェクトのために完璧に動作します:three.jsを使用して素材(obj + mtl)を設定した後でメッシュが消えます

 function loadObject(path, modelName) 
     { 
      var mtlLoader2 = new THREE.MTLLoader(); 
      mtlLoader2.setPath(path); 
      mtlLoader2.load(modelName+'.mtl', function(material) 
      { 
       material.preload(); 
       var objLoader2 = new THREE.OBJLoader(); 
       objLoader2.setPath(path); 
       objLoader2.setMaterials(material); 
       material.side = THREE.BackSide; 
       objLoader2.load(modelName+'.obj', function (mesh) 
       { 
        mesh.name=modelName; 
        var axisHelper = new THREE.AxisHelper(1); 
        axisHelper.visible=true; 
        mesh.add(axisHelper); 
        scene.add(mesh); 
        console.log('Loaded '+modelName); 
       });     
      }); 
     } 

私はまた、定期的にレンダリングするアニメーション関数を呼び出す:

 function animate() 
     { 
      requestAnimationFrame(animate); 
      renderer.render(scene, camera); 
     } 

例を
An example

残念ながら、資料を適用するとただちに一部の他のオブジェクトが消えます(エラーなし)。

これは表示されませんが存在すると、axisHelperが表示されます。他のオンライン視聴者が完全に同じオブジェクトを表示しているように見えるため、オンラインで見つかった一部の.mtlファイルはthree.jsと互換性がないという結論に達しました。それとも私はそれを使用する方法ですか? https://www.models-resource.com/mobile/shaunthesheeppuzzleputt/model/19915/

と非機能1:私は今、なぜ、私はそれを修正することができれば把握しよう https://www.models-resource.com/ds_dsi/shaunthesheep/model/12472/

ここ

は機能しているファイルの一例です。 あなたのアイデアと(うまくいけば)解決策を教えてください:)

+1

2番目の 'mtl'は動作しません。実際には標準ではない継ぎ目の' Tr1'ステートメントが追加されています... "Transparency = 1"、つまり "opacity = 0"と解釈されます。 '0'に設定するか、単にmtlファイル内のこの文を削除してください。 (不透明度の設定は3D交換フォーマットの共通の「ジョーク」です...) –

+0

これは、ありがとうございました。 –

+0

obとmtlの私の経験では、Trとdは実装が不適切です。 Wikipedia https://en.wikipedia.org/wiki/Wavefront_.obj_fileにはTr = 1-dと書いてありますが、それは常に真実だとは思いません。 –

答えて

1

コメントにSedenionが答えたように、Trステートメントが問題でした。 私はそれらを削除しました(2つありました)、それが私の問題を解決しました。

関連する問題