問題タブ [voxel]
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.
opengl - SVO レンダリング: OpenGL またはカスタム レンダラー?
Sparce Voxel Octree (SVO) エンジンの作成を計画しており、openGL を使用して各小さな立方体をレンダリングするか、アセンブリと c で独自のレンダラーを作成するかで迷っています。後者を行う場合、画面にピクセルを描画する方法がわかりません(Mac、10.8を使用しています)。これには、どのグラフィックスコンテキスト/ウィンドウシステムが推奨される方法ですか (X ではありません。Mac の X には問題があります)。
PS エンジンは最低 50,000 個のキューブを描画できる必要があります (キューブの並列処理を支援するために opencl/cuda を使用します)。特別に設計されたレンダラーを使用して描画する方が効率的かどうかを知りたいだけです。
algorithm - 3D ボクセル ワールドのブロックを滑らかにする方法は?
私の (Minecraft のような) 3D ボクセルの世界では、形状を滑らかにして、より自然なビジュアルにしたいと考えています。まず、この例を 2D で見てみましょう。
左は、スムージングなしで世界がどのように見えるかです。地形データはバイナリで、各ボクセルは単位サイズの立方体としてレンダリングされます。
中央には単純な円形の平滑化が見られます。直接隣接する 4 つのブロックのみが考慮されます。まだあまり自然に見えません。さらに、45度の平坦な斜面を出現させたい。
右側は、私が考案した平滑化アルゴリズムです。ブロックの形状を考え出すために、8 つの直接隣接および対角隣接が考慮されます。私はC++ コードをオンラインで持っています。以下は、ベジェ曲線が描かれる制御点を作成するコードです。
ただし、これはまだ 2D です。このアルゴリズムを 3 次元に変換するにはどうすればよいですか?
python - 一度に多くのボクセルをレンダリングするにはどうすればよいでしょうか?
私は実際に2つの質問があります。1) これらの数千のボクセルのレンダリングが表示されますが、octree を使用すると、画面上に約 500 個のボクセルしか取得できません。
それが私が使ってきたoctreeコードです。私はウェブサイトからそれを手に入れましたが、それはかなりきれいでした。内側のキューブを取り除くのに最適です。それはそれをただの中空の箱にしますが、それはかなり奇妙です. ただし、FPS は大幅に改善されます。立方体のレンダリングには、この小さなクラスを使用します。
このコードで約 30FPS を取得できます。画面には約62,210マスあると思います。私は通常、約 30 ~ 40 FPS を取得します (これは悪くありません)。
opengl - ボクセルにアクセスする複数のスレッドの一意のバッファー インデックスを取得する
「リアルタイム グローバル イルミネーションのための Octree ベースのスパース ボクセル化」の一部を実装しようとしています。
基本的にボクセル化だけで、すでに完了しています。
そして、「ボクセル フラグメント リスト」構造は、基本的に、ボクセルの位置と属性の事前に割り当てられたいくつかのバッファーです。
アトミックカウンターとアトミックコンプスワップまたはアトミック追加のいずれかを使用して位置バッファーを作成するのは非常に簡単で、1つのスレッドによってのみ書き込まれるようにします
しかし、複数のスレッドが同じボクセル位置に書き込みを行っている場合、すべてのスレッドが適切なインデックスを取得できるようにするにはどうすればよいでしょうか? 上記のように、正しいインデックスは 1 つのスレッドに対してのみ有効です。
以下のようなもの
私はこれに対してさまざまなアプローチを試みました。紙の唯一のヒントは
(ボクセル フラグメント) リストを管理するには、次に使用可能なエントリのインデックス (リスト内のボクセル フラグメントの数のカウンターでもある) を、別のバッファー オブジェクト内の単一の 32 ビット値として格納します。
これは、アトミック カウンターのバッファー オブジェクトを記述しているように思えます。物事をシンプルに保つために (今のところ)、移動平均 (論文で説明されているように) を計算するのではなく、単純に色を合計し、レンダリング時にアクセス数で割っています。
c# - XNA ボクセル エンジンでの深度レンダリングに関する問題
ここ数日、私たちはボクセル エンジンに取り組みました。立方体を描画すると、深度レンダリングの問題が発生します。次の Youtube ビデオを参照してください: http://youtu.be/lNDAqO7yHBQ
すでにこの問題に沿って検索し、さまざまなアプローチを見つけましたが、どれも問題を解決しませんでした。
- GraphicsDevice.Clear(ClearOptions.DepthBuffer | ClearOptions.Target, Color.CornflowerBlue, 1.0f, 0);
- GraphicsDevice.BlendState = BlendState.Opaque;
- GraphicsDevice.DepthStencilState = DepthStencilState.Default;
- GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
私たちのLoadContent()
方法:
私たちのDraw()
方法:
ビューと投影のセットアップ:
Aaron Reed の本 ( http://shop.oreilly.com/product/0636920013709.do )の Camera ( http://www.filedropper.com/camera_1 ) を使用します。
私たちが見逃した何かを見ましたか?または、この問題を解決するアイデアはありますか?
c++ - Cmake でライブラリをコンパイルする
ボクセル ライブラリである PolyVox をプロジェクトに含めようとしています。ただし、ライブラリのダウンロードではプリコンパイル済みヘッダーは提供されず、代わりに Cmake が必要です。これは大きな問題にはなりませんが、このテーマに関する彼らのチュートリアルが非常に不完全であることを除けば. 私はこれまで Cmake を使用したことがなく、検索しても問題が明らかになりませんでした。
Visual Studio 10 コンパイラで Cmake を実行したところ、多数の Visual Studio プロジェクトが生成されました。これらのプロジェクトを 2 つのライブラリにコンパイルし、プロジェクトのプロパティにライブラリ ディレクトリを含めました。また、PolyVox のすべてのヘッダー ファイルを、Visual Studio が認識するディレクトリに配置しました。プロジェクトをコンパイルしようとすると、次のようなリンカ エラーが発生します。
Cmakeを使用してPolyVoxをコードに適切に含める方法を誰かに説明してもらえますか?
c# - C#のボクセル地形
C#で簡単なボクセルエンジンを作成したいと思っています。私は多くのXNAを知っていますが、OpenGL/DirectXでそれを行う方が良いと聞きました。誰かが私がそのようなことをどのように達成するか知っていますか?図書館を一から作る方法を学びたいので、図書館は必要ありません。
algorithm - ボクセル環境でのボックスの効率的な配置
ゲームの部屋を定義するボクセルの任意のセットがあります。私の目標は、小道具の特定のルールに従って、この部屋内にさまざまな小道具(ボクセルのサイズにバインドされている)を配置することです。いくつかの簡単なルールの例(ボクセルの次元はxyzであり、これら3つだけよりもはるかに多くの小道具があります):
- 本棚(2x3x1)を壁と地面に立てかける必要があります。
- テーブル(4x1x2)を地面に置く必要があります。
- 壁に取り付けられたランプ(1x1x1)を壁に立てかける必要があります。
小道具は、他の小道具や既存のボクセルと交差することはできません。これをかなり高速に実行できる効率的なデータ構造やアルゴリズムを見つけようとしています。私の現在の方法はこれです:
- 塗りつぶされたボクセルに隣接する空のボクセルのセットである、可能なプロップ位置のセットSを作成します。
- 床、壁、角などの場合は、 Sで各アイテムにマークを付けます。
- 配置するプロップPを選択します。
- 小道具の配置規則(壁のみ、コーナーなど)を満たすSのサブセットS'を選択します。
- S'から任意の要素Eを選択します。
- これが最適ではない部分です。どういうわけかPをEの周りに合わせてみてください。Pの境界によって、他の小道具やボクセルと交差することなくEの上に配置できるかどうかを確認します。収まらない場合は、Eを含む合法的なスポットになるまで、 Pの境界を回転および/または平行移動してみてください。
- 収まる場合は、 Sを更新して新しい小道具を含め、さらに小道具の配置を開始します。
- それでも収まらない場合は、S'から別の任意の要素を選択して再試行してください。
技術的には機能しますが、あまり最適ではなく、小道具が部屋のどこにも収まらない場合や、大部分の部屋に置くために大きな床の小道具をたくさん選んでいる場合など、最悪のシナリオでひどく実行できます。床面積は柱と穴で分割されています。
Eを選ぶときにPの次元をどうにかして考慮に入れることができれば理想的です。ボクセルグリッドの3D畳み込みマップを生成することを検討していました(基本的にグリッドのぼやけた画像を作成します)。これにより、各ボクセルの周囲のスペースの大まかなデータが得られますが、問題はマップを更新する必要があることです。新しい小道具を置くたびに、それは高価に聞こえます。
もう1つのアイデアは、世界を八分木に保存し、それを使って配置チェックを改善することでしたが、それがどのように役立つかは想像できません。八分木を使用すると、任意のボックスに、位置でキー設定された辞書よりも効率的にポイントが含まれているかどうかを判断できますか?
TLDR:単一のボクセルよりも大きくなる可能性のある装飾を使用して、Minecraftの家をプログラムでどのように装飾しますか?
r - Rでボクセル画像をプロットする
ボクセルオブジェクト(3D配列)をプロットするためのライブラリまたは関数がRに存在するかどうかを知っていますか?3D散布図を実行できるパッケージrglを見つけましたが、3D配列で機能する関数「image」に相当するものを本当に探しています。ありがとう
opengl-es - webglglslはtexture3dをエミュレートします
openglの一部をwebglに移植していて、texture3dをエミュレートしようとしています。どういうわけか何かがうまくいかない。
計算にのみ使用されるため、補間は必要ありません。元のコードのジオメトリ部分についてはよくわかりません。レイヤーごとのプロパティがテクスチャを介してフェッチされるようになりました。
更新:わかりました、テクスチャ3d関数を書き直しましたが、まだいくつかの問題が発生しています:
これは私が移植したい元のコードです:
とglsl