three.jsを使い始めたばかりです。three.jsのメインWebサイトで見つけたコードを使用してテストを組み立てました。
私が作成した方程式に従って、ループ内で位置が変更される粒子を表す一連のジオメトリ(球)があります。私はこの種のコードを通して各反復をレンダリングしようとしました:
function simulate() {
for (var j = 0 ; j < Nb ; j++ ) {
// update the geometries positions
...
render();
}
}
animate
しかし、レンダリングは行われず、代わりに、関数に入るときに、すべての反復を経た後に実行され、後に呼び出されましたsimulate
function animate() {
render();
requestAnimationFrame( animate );
}
実際、Chromeブラウザのjavascriptコンソールで段階的に実行すると、レンダリングが発生します。
requestAnimationFrame
そこで、ループ内で使用できるようにコードを変更しようとしました。
function simulate() {
for (var j = 0 ; j < Nb ; j++ ) {
this.internalRenderingLoop = function() {
// update the objects shapes and locations
...
render();
requestAnimationFrame( this.internalRenderingLoop );
}
}
}
しかし、それも機能しませんでした。私はまたrequestAnimationFrame
、Uncaught Error: TYPE_MISMATCH_ERR: DOM Exception 17
したがって、問題は次のとおりです。関数の各反復でレンダリングを強制する方法はありますか、それともsimulate
、ジオメトリの位置を更新するための各呼び出しがanimate
orrender
関数で行われるようにコードをリファクタリングする必要がありますか?