2016-12-29 7 views
0

ボクセルエンジンの作成を試みており、ジオメトリをマージしてパフォーマンスを向上させています。私はthis demoを参照として使用しています。これは、クロムで約700MBのメモリを使用して約120,000を生成し、私のマシンで60 + fpsで動作します。このデモでは、THREE.GeometryUtils.mergeを使用するthreejsのリリース44を使用しています。私のプロジェクトでは最新バージョンの3js(リリース83)を使用しています.50,000ボクセル(geometry.mergeを使用してマージ)をレンダリングしようとすると、私は1000MB以上のメモリを使用しており、パフォーマンスは吃音です。上記のデモと同じ方法を使用しています。 3jsが問題であることを確認するために、私はデモで使用された3jのリリース44をリリース83に置き換えました(そしていくつかのマイナーな互換性調整を行いました)。これは既知の問題ですか?私は本当に私のプロジェクトの古いバージョンの3jsに戻したくない。私が見ることができる唯一の実際の解決策は古いバージョンに切り替えること、r44からr83にマージコードだけを統合しようとすること、githubに問題を投稿して解決するのを待っていることです。誰かがこれに対処しているのかどうか疑問に思うだけです。THREEJSの新しいバージョンでマージされたジオメトリを使用したメモリ使用率が高い

+0

あなたのユースケースでは、 'InstancedBufferGeometry'を使うことができます。 http://threejs.org/examples/webgl_buffergeometry_instancing.htmlを参照してください。例を編集して、 'vertices'変数を' var vertices =(new THREE.BoxBufferGeometry(0.05、0.05、0.05).toNonIndexed()).attributes.position; 'のように再定義してください。あなたはそれがどのように機能するかを理解するためにいくつかの研究を行う必要があります。 – WestLangley

+0

私はおそらくこれを使って提案をしてくれてありがとうございます。しかし、同じ方法で古いバージョンでできる新しいバージョンで同じパフォーマンスを得ることができないのはなぜですか?私はそれを調べていますが、今はリリース44とリリース45の間に何かが起こったように見えるので、メモリ使用量が大幅に増加します。私は今それを調べており、結果をここに掲載します。 – dyarbrough

+0

また、 'BufferGeometry'を使うこともできます。ボクセルの数を動的に増やしたい場合は、http://stackoverflow.com/questions/31399856/drawing-a-line-with-three-js-dynamically/31411794#31411794を参照してください。私は定期的な '幾何学 'を避けるだろう。 – WestLangley

答えて

0

私は、リリース45のThree.GeometryUtils.mergeを、リリース44のものと置き換えることで、マージ機能ではないと判断することができました。これにより、以前と同じ問題がメモリに加えられました。リリース45により問題が発生しています。提案したように、私はBufferGeometriesでテストし、望ましいパフォーマンスレベル(<メモリ使用量120,000ボクセルで500MBのメモリ使用量)を達成できたので、問題の原因を探してこのメ​​ソッドに切り替えました。

関連する問題