問題タブ [octree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1496 参照

c++ - オクトリーのスレッド化

oct 内の各 octcell に含まれるポインターが、同じレベルでツリー内を簡単にトラバーサルできるように、octree をスレッド化する効率的な方法。

ここでは完全にスレッド化されたツリーを使用して、openmp を使用して同じレベルでコードを並列化できるようにする必要があります。

0 投票する
2 に答える
482 参照

memory - バーンズハットの最悪の場合のメモリシナリオ

バーンズハットのN体シミュレーションを実行したい(ウィキペディアの記事)。octreeの単一ノードが占めるメモリの量はわかっていますが、特定の数のパーティクルに対して最悪の場合のメモリ使用シナリオがどうなるかはわかりません。要するに、与えられた数の粒子に対して、八分木にいくつのノードが存在する可能性があるのだろうかと思います。八分木に割り当てるメモリの量を知るには、これを知る必要があります。

編集:

ああ、そして誰かが私にただの説明の代わりにコードを与えたいのなら、私はCで書いています。

私はこれを持っていますが、これは最悪のシナリオよりもはるかに悪いです。ただし、少なくとも十分なメモリを割り当てることが保証されています。誰かが私にもう少しメモリ効率の良いものを与えてくれることを願っています。

0 投票する
1 に答える
2197 参照

c++ - C++オクトリーコンテナ

Octree Containerがどのように機能するかについての説明を、Web全体で検索しました。私は1つがどのように機能するかについての明確な説明を見つけることができません。(少なくとも、それは私には理にかなっています...)Octree Containerを実装する方法を知っている人はいますか?8人(またはそれくらい)の子供がいる人。もしそうなら、ロジックを共有/説明してもよろしいですか...またはロジックを実装する方法を学ぶためにどこに行くことができますか?

0 投票する
1 に答える
2855 参照

c++ - Quad/Oct ツリーを反復する方法

octree または quad を反復する方法を把握するのに苦労しています。そして、それは、私が反復のさまざまな神話を経験していないためかもしれません. しかし、float x,y,z; を保持する四分木を作成したとしましょう。ワードカラー。ここで、このノードは一度に 4 つの子しか生成できないとしましょう (そして、これらの子は両方とも 4 つの子を生成することができます)。兄弟/姉妹はできる)、作成された 4 つの子すべてが同じ dword カラーである (繰り返しますが、その場合、その兄弟/姉妹はまだ作成できます)、または作成されたノードの合計は 87380 です。容器。そして、プロセスは続きます。

現在、ノードを保持するこのコンテナーは (たとえば) 7 レベルの深さであり、子の子のすべての子はすべて異なる x、y、z、および色です。私が抱えている問題は、このコンテナをどのように反復処理するか、すべての子供、姉妹をどのように処理できるかということです。ルートは 4 つの子につながり、それらの 4 つの子には 4 つの子があるため、等々: 4^1+4^2....+4^7. 複雑な if ステートメントを記述したり、ノード全体を (ルートから開始して) 反復したりせずに、必要なノードを見つけるにはどうすればよいですか? コンテナー (ノードを生成するコンテナー) には、このプロセスを単純にするための追加のコードが必要ですか?

質問が一般的な場合は申し訳ありません。

0 投票する
2 に答える
843 参照

c++ - ブロックワールドでクアッド/オクトツリーを使用する方法

私は過去数日間、八分木と四分木をいじっています。それらを構築し、反復し、必要な情報を吐き出すことができます。また、画面全体を常に確認するのではなく、画面を小さなセクションに分割して特定のセクションの画面上の動きを検出できるようにする衝突検出に非常に役立つことも知っています。ただし、八分木または四分木を使用して立方体タイプの世界を生成する方法を理解することはできません。

これが私が考えていたいくつかのアイデアです:

1)クワッド/オクトツリーを使用して、設定された立方体(10x10x10)を細分割し、少なくとも1枚の葉が均一になるまで細分割します。次に、均一でない他のすべてのリーフを削除して、立方体のさまざまなサイズを指定します。

2)空間内の点(x、y、z)を、すべて同じサイズまたはノードの深さに達する葉が少なくとも1つある立方体を取得するまで細分割し、それらすべての位置(x、 y、z)さまざまなタイプのブロックの位置として。

このような3D環境を構築する際に八分木または四分木を使用する背後にあるロジックを誰かが説明できますか?それはx、y、zに基づいていますか、それとも一定の立方体の測定に基づいていますか?どうすればいいのかよくわかりません。

0 投票する
1 に答える
243 参照

c# - 画像の上位 10 色を取得する

オクトリー量子化によって画像のカラー パレットを生成しています。どの画像でも最大 256 色を使用できます。ここで、これらの 256 色のうち、画像の上位 10 色 (画像の色の量による) のみを表示したいと考えています。c#でこれを行うにはどうすればよいですか?

0 投票する
0 に答える
552 参照

voxel - インスタンス化されたオブジェクトを使用したシーンのボクセル化

いくつかの球、立方体、および長方形の壁を備えた、床としての平面を持つ単純なシーンを directx11 で作成しました。読み込まれるオブジェクトは、平面、立方体、球の 3 つだけです。ただし、立方体と球体は、スケーリング、位置、および回転が異なる複数回インスタンス化されています。これらのオブジェクトのうち 2 つは動的です。

スケールと回転が異なるオブジェクト インスタンスを考慮して、このシーン全体 (100x100x20 単位) を 0.2 単位のボクセルにボクセル化したいと思います。

ボクセル化に関するいくつかの記事を読み、「Direct3D 11 を使用した実用的なバイナリ サーフェスおよびソリッド ボクセル化」の GPU Pro 3 のソース コードを入手しました。しかし、これらの記事はすべて、単一のオブジェクトのボクセル化を示しています - それらの三角形を取り、それらをグリッドに分割します.

これらのメソッドを拡張して、複数のオブジェクト インスタンスを持つシーン全体を考慮するにはどうすればよいでしょうか?

考えられる唯一のことは、シーン全体をトップダウンで octree 分割する必要があるということです。しかし、動的なシーンの場合、これはコストが高すぎるでしょうか?

私のシーンでは、読み込まれたモデルごとにバッファを使用しています。したがって、Compute Shader でボクセル化する場合、3 つのバッファすべてを 1 つのバッファにコピーする必要がありますか? モデル インスタンスはどのように説明すればよいですか?

ありがとうございました。

0 投票する
1 に答える
889 参照

opengl - オブジェクト順序の空きスペースをスキップするボリューム レンダリングを実装する

Scenegraph 2009 コースノートのAdvanced IlluminationTechniques for GPU-Based Volume Raycastingからいくつかのボリューム レンダリング テクニックを学びます。以下の画像のように、バウンディング ボックスを多数の小さなブロックにラスタライズする、オブジェクト順序の空のスペース スキップに興味があります。医療用ボリュームデータ

これを実装する方法を知りたいですか?によって octree ? または他のテクニック?オブジェクト順序の空きスペースをスキップせずに、単純なレイ キャスティング ボリューム レンダリング プログラムを実装しました。コード スニペットまたは疑似コードが大いに役立ちます。

0 投票する
1 に答える
921 参照

hashmap - octree の動的ハッシュマップ

一意のキーと値のペアをハッシュマップに動的に保存するためのメモリと速度の効率的な方法はありますか? キーは一意であることが保証されていますが、キーの量は頻繁に変化しています。挿入と削除は高速でなければなりません。

私が行ったのは、符号付き距離フィールドを含む octree (線形/完全ではない) です。Octree は頻繁に更新されます。私がやりたいのは、スペースを節約するためにポインターを持たないようにすることです。

0 投票する
1 に答える
6157 参照

c# - C#でoctreeを実装するには?

ここに投稿するのは初めてですが、私はこのサイトを数年前から読んでいます。C# で単純なジェネリック型オクトリーを実装しようとしています (いくつかの XNA インクルードを使用)。私は徹底的に調査し、概念を理解しましたが、それを機能させることができないようです. 検索すると、他の言語での実装がいくつか見つかりますが、それらはすべて特定のアプリケーションに合わせてカスタム調整されているようです。そして、私はそれらからあまり意味を成すことができませんでした.

以下は、これまでの私の Octree クラスです。Vector3、BoundingBox、および ContainmentType は XNA のものです。最大ポイントと最小ポイント、および境界内にあるポイントのリストをフィードします。ただし、実際にツリーに追加されるポイントはありません。どんな助けでも大歓迎です!