2016-05-18 6 views
0

私はThree.jsプロジェクトに取り組んでおり、プログラムはいくつかの場所で遅れているようです。Three.jsでメッシュをエクスポートするとパフォーマンスが向上しますか?

var text1Geo = new THREE.TextGeometry("Hello", {font: font}); 
text1Mesh = new THREE.Mesh(text1Geo, textMaterial); 
text1Mesh.position.set(-6500, 150, -500); 
text1Mesh.castShadow = true; 
scene.add(text1Mesh); 

を私はOBJExporterを使用して、OBJとしてテキストをエクスポートして、代わりに作成するのであれば、それはパフォーマンスを改善する場合、私は疑問に思って:具体的には、最もパフォーマンスの遅れは、テキストをレンダリングすると、私はそうのように作成したメッシュたときに発生しますTHREE.TextGeometry私はOBJLoaderを使ってシーンにメッシュをロードするだけでした。これによりパフォーマンスが向上するでしょうか?プロジェクト全体とソースコードを表示したい場合は、hereにアクセスしてください。パフォーマンスを向上させる方法に関するヒントやアドバイスをいただければ幸いです。ありがとう!

+0

'text1Mesh.castShadow = true; 'を削除すると、パフォーマンスに違いは見られますか? –

+0

私はあなたがあなたの質問に自分自身で答えを出すことができると期待しています。 – WestLangley

答えて

0

実験は順序のままですが、答えはキャッシュテキストジオメトリにあります。代わりに

loadText('url.obj' , (t)=>{ /*...do stuff...*/}); 

のようなものを持っていることの

あなたは

computeText(){ 
    var t = new THREE.TextGeometry(); 
    ... 
} 

computeText(); 
//...do stuff... 

私の仮定は、それはパースに来るときobjが非友好的であるということである持っていることができますが、私は間違っているかもしれません。フォーマットされたjsonはおそらくより良い、またはバイナリでしょう。

.objをダウンロードして解析し、インデックスを作成してから何かを実行する代わりに、レンダリングを開始する前に計算してください。

これは、gpuにヒットした場合でも、遅れを経験するでしょう。計算したりダウンロードしたりしてください。

+0

フィードバックをいただきありがとうございます!テキストをobjとしてロードすると、実際にはfpsが助けられましたが、ほんのわずかしかありませんでした。私がやったことは、レンダリングの前にオブジェクトをロードし、それをtext1Meshのような変数に格納することでした。これは技術的にobjをキャッシュするとは考えられていませんか? objの代わりにjsonまたはバイナリ形式を使用すると、改善があるかどうかを確認します。 –

+0

テキストは2Dにすることができますので、テクスチャを使って透明な平面を使用してください(テクスチャはテキストです.png) –

+0

fpsが落ちる原因には2つありますが、CPUで計算するには時間がかかります。 。アップロードは 'renderer.render()'を初めて呼び出すときに起こり、そのオブジェクトに遭遇します。テキストをロードした後にrenderer.render()を実行してから、実際のレンダリングループを開始してください。スタッターはありません。しかしこれは異なった質問です。私は何が起こっているかについてもっと詳しく説明するために私の回答を更新することができますが、私は質問を言い換えるべきだと思いますか? – pailhead

関連する問題