問題タブ [voxels]
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.
graphics - スパース ボクセル オクトリーとは
将来のグラフィックス エンジンで疎なボクセル octrees を使用する可能性について多くのことを読みました。
しかし、それらに関する技術情報を見つけることができませんでした。
ボクセルが何であるかは理解していますが、スパース ボクセル オクトリーとは何か、または現在使用されているポリゴン技術よりもどのように効率的であるかはわかりません。
誰かがこれについて説明したり、説明を教えてくれませんか?
algorithm - 隣接するボクセルの数をすばやくカウントするには?
3D グリッド (ボクセル) があり、ボクセルの一部が塗りつぶされ、一部が塗りつぶされていません。3D グリッドはまばらに塗りつぶされているためfilledVoxels
、塗りつぶされたボクセルの座標 (x、y、z) のセットを取得しました。私がやろうとしているのは、塗りつぶされたボクセルごとに、隣接するボクセルがいくつも塗りつぶされているかを調べることです。
次に例を示します。
- FilledVoxels には、ボクセル (1, 1, 1)、(1, 2, 1)、および (1, 3, 1) が含まれます。
- したがって、ネイバー カウントは次のようになります。
- (1,1,1) には 1 つの近傍があります
- (1,2,1) には 2 つの近傍があります
- (1,3,1) には 1 つの近傍があります。
今、私はこのアルゴリズムを持っています:
checkAllNeighbors() は、周囲の 26 個のボクセルすべてを調べます。したがって、合計で 26*filledVoxels.size() ルックアップを実行していますが、これはかなり遅いです。
必要なルックアップの数を減らす方法はありますか? 上記の例を見ると、同じボクセルを数回チェックしていることがわかります。そのため、巧妙なキャッシングでルックアップを取り除くことができるかもしれません。
これが何らかの形で役立つ場合、ボクセルはボクセル化された 3D サーフェスを表します (ただし、穴が開いている可能性があります)。私は通常、5 つまたは 6 つの隣接ボクセルを持つすべてのボクセルのリストを取得したいと考えています。
java - vtk Java ボクセル レンダリング
こんにちは、みんな、
なぜJavaのこのコードがコンパイルされるのか、誰もが知っていますが、エラーが表示されます:
C++ コードからコピーした Java ソース コードを次に示します。
ご協力いただきありがとうございます!
デビッド
programming-languages - ボクセル 3D「グリッド」
大規模な (巨大な..) 3D ボクセル ベースのグリッドを作成するのに最適な言語は何だと思いますか?
つまり、マインクラフト (http://www.minecraft.net/) が好きです。
Minecraft は Java で作成されたことに注意してください。これには明らかに欠点があります。私が決断を下すのを手伝ってください!:)
ps これはコミュニティ wiki であるため、意見の直後にポイントを獲得することはできません :)
mesh - 動的地形変形
非常にシンプルなゲームのデザインに興味があります(学習目的のためだけに、壮大な計画はありません)。変形可能な地形システム(Minecraftを考えてください)が欲しいのですが、もう少し複雑なものがあります。
MineCraftがボクセルと呼ばれる概念を使用していることを理解しています。また、ボクセルがCPU側で正確に優れているわけではありませんが、現在はGPUのトリックを使用して実現できます(これまで読んだ内容からはわかりません)。
これまでのところ、ボクセルは進むべき道のように見えますが、私が探しているものはありません。それらはオーバーハングと洞窟を許可しますが、それらは非常に単純に見えます。
オーバーハングを使用して自由に変形および操作できる、非常に大きくて広大な地形が必要です。風景のサイズに合わせてある種のページングを実装する必要があることを理解しています。おそらく、考えている地形のタイプに合わせて3次元のページングを実装する必要があります。
ROAMを少し見てきましたが、学ぶことがたくさんあり、正しい方向かどうかはわかりません。おそらく、階層化された高さマップを使用し、その間にトンネルなどのメッシュを使用してgeomipmappingを使用する方法があることを確認しました(意味がある場合)。
基本的に、オーバーハング、崖、トンネル、洞窟を可能にする方法で完全に変形可能な巨大な地形を含む、優れたアルゴリズムと開始場所を探しています。
Mine Craftのように、美しい必要はありませんが、ブロック状である必要はありません。
どこから研究を始めるかについてのどんな方向性も大いに役立つでしょう。
ありがとう。
python - グリッドに表示されているボクセルのリストを取得する
私は Minecraft スタイルのゲームに取り組んでおり、レンダリングされる世界の量を減らす方法が必要です。現在、私は単純なすべてをレンダリングするアプローチを使用していますが、これには明らかなスケーリングの問題があります。ブロックの配列を取得し、どのブロックが空気、水、またはその他の半透明のブロックに接触しているかを何らかの方法で見つける方法が必要です。
私は NumPy や SciPy などの外部モジュールを使用することにオープンですが、それらのドキュメントのいくつかは私の頭を少し超えています。別の方法として、各ブロックを繰り返し処理して近隣のリストを取得することもできますが、C ではなく Python でこれらの計算を行うと、パフォーマンス コストがかなり高くなります。
記録のために、私はすでに NetworkX を調べてみましたが、可視性チェックよりも科学的分析または経路探索のためのようです。
mesh - メッシュをメタボールに変換する
既存のポリゴン メッシュをメタボール (ブロブ) から作成された静的な形状に変換する必要があるプロジェクトを行っています。binvox を使用してメッシュを「.raw ファイル」にボクセル化しました ( binvoxの説明によると) が、データがどのように格納されているかはわかりません。したがって、それをロードする方法もわかりません。
質問 1: PHD 以外で行う方法はありますか? ポリゴン メッシュからメタボール モデルを作成します。質問 2: binvox の前述の .raw ファイル形式を使用したことがある人はいますか?
c++ - ボクセル...正直なところ、どこから始めればよいかを知る必要があります
さて、ボクセルは基本的にピクセルのボリュームバージョンであることを理解しています。
その後、何を探すべきかわからない。
グーグルにはチュートリアルが表示されません。どこにも本が見つかりません。ボクセルが実際に何であるかという基本的な考え方に関係することすら何も見つかりません。
私はC++ライブラリの多くを知っており、OpenGLの基本を理解しています。
誰かが私を正しい方向に向けることができますか?
編集:私はそれらを実装する方法について混乱していると思いますか?大変申し訳ありませんが、簡単に相関できるものが見つからないだけです...実際にデータを格納できるベクトルに関連するボクセルを想像していたと思います。
ボクセルは任意の3D形状として表すことができますか?たとえば、形状を円柱にしたいとします。これは可能ですか、それとも立方体のようにリンクする必要がありますか?
optimization - ボクセル エンジンと最適化
最近ボクセルエンジンの開発を始めました。私が必要とするのは、テクスチャのないカラフルなボクセルだけですが、非常に大量 (Minecraft よりもはるかに小さい) です。問題は、シーンを非常に高速に描画する方法です。私はc#/xnaを使用していますが、これは私の意見ではあまり重要ではありません。一般的なケースについて話しましょう。次の 2 つのゲームを見てください。
特にビデオ番号 2 は優れた最適化方法を表していると思います (私の gfx カードは 192 x 192 x 64 で窒息し始めます) どうやってこれを達成するのですか?
私がエンジンに持っているもの:
- テクスチャのないカラフルなボクセル
- 多くの、多くのボクセル、ビデオ #2 のようなものを達成するために最小 512 x 512 x 128 と言う
- 影 (滑らかな影は素晴らしいですが、これは必須ではありません)
- オプション: 動的照明 (たとえば、ボクセル構造の近くで光る火の玉が飛んでいる場合)
- フレームレート 最低 40 FPS
- カメラには 3 つの自由度 (x 軸で移動、y 軸で移動、z 軸で移動) があり、カメラの回転は必要ありません。
- 最後に、オプション機能は被写界深度かもしれません (それは甘いでしょう ^^ )
私がすでに知っている最適化:
- ボクセル構造内に存在する目に見えないボクセルを削除します (他のボクセルによって 6 方向が覆われています)。
- ボクセルの見えない面を削除 - カメラには回転がなく、TPP ゲームのように常に斜め前を向いているため、画面を垂直カットで分割すると、左のボクセルと右のボクセルに 3 つの面しか表示されません
- ボクセルを 3 次元配列ではなく Dictionary に保持します - サイズ 512 x 512 x 128 の配列をジャンプするには許容できないミリ秒かかります - しかし、int がパックされた 3D 位置を記述する辞書 int:color ははるかに高速です
- 該当する場合はインスタンス化を使用する
- 閉塞?(これを行う方法?)
- 空間分割 / octtree (それは良い考えですか?)
誰かが上記の既存の最適化を改善する方法を教えてくれたり、新しい改善のアイデアを共有したりできれば、とても感謝しています。ありがとう
c# - ノイズを使用してマーチングキューブ地形を生成しますか?
C#XNAでマーチングキューブクラスを作成し、Libノイズを使用して3dパーリンノイズを生成していますが、マーチングキューブの密度としてパーリンノイズの値を使用して地形を生成しようとすると、一見ランダムな三角形が内部にあるマーチングキューブ。マーチングキューブを分離し、密度の任意の3D配列を指定して、すべてが機能し、正常に見えることを確認しました。地形生成コードで通常の立方体を生成し、通常の外観の地形を取得しましたが、問題が発生しました。は、各キューブのコーナーがノイズから値を取得するため、マーチングキューブがごちゃごちゃしたように見えるほど速く、常に負から正に切り替わります。
これは、地形を生成するために使用しているコードです。
GetDensityメソッドは次のとおりです。
問題は、マーチングキューブの角の密度を取得するためにノイズを正しく使用していないことだと思いますが、これまでのところ、私のグーグル検索結果はまったく役に立ちませんでした。では、ノイズを適切に使用して滑らかな地形を生成する方法を知っている人はいますか?または、他に何がこの問題を引き起こしている可能性がありますか?
スクリーンショットをhttp://imgur.com/a/D1uMCに投稿しまし た。最初の2つはマーチングキューブを使用して表示され、最後の1つは通常のキューブです。
編集:マーチングキューブが実際に与えられた値で想定どおりに機能していることが写真からわかりました。問題は私のノイズとそれをどのように使用しているかに反抗しています。誰かが良いリソースを知っていますか?ノイズに基づく3D地形生成の場合?