問題タブ [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.
java - ボクセルで作られたフラットな3D三角形
動作するアルゴリズムを取得できないように見える問題があります。私は何日も努力して、これほど近づいてきましたが、まだこれまでのところです。
3点(p0、p1、p2)で定義される三角形を描きたい。この三角形は、任意の形状、サイズ、および方向にすることができます。三角形も内側に塗りつぶす必要があります。
これが私が試したいくつかのこととそれらが失敗した理由です:
1
- 三角形に沿って左右に線を引く
- 三角形に穴があり、位置が変わると角度の付いたサーフェスを横切る線を描くのが面倒なため、平らにならないため、失敗しました。
2
- エリアを反復処理し、ポイントが三角形に平行な平面と、三角形のエリアをカバーするXY、ZY、およびXZ平面に投影された他の3つの平面を通過するかどうかをテストします。
- 特定の三角形(非常に近い辺を持つ)の場合、予測できない結果が発生するため、失敗しました。たとえば、ボクセルが何にも接続されていない状態で浮かんでいます。
3
- 三角形の辺に沿った領域を反復処理し(ラインアルゴリズム)、ポイントが平行平面を通過するかどうかをテストします
- p0からp1への線の描画は、p1からp0への線と同じではなく、再配置しようとしても役に立たないか、さらに問題が発生するため、失敗しました。これには非対称性が問題です。
これはすべて、ポリゴンと平面を作成することを目的としています。3は私に最も成功をもたらし、正確な三角形を作成しますが、これらを接続しようとすると、すべてがバラバラになり、接続されない、非対称性などの問題が発生します。これを長い間機能させようとすることから抜け出し、助けが必要です。
私のアルゴリズムには、実際には関係のない細かい詳細がたくさんあるので、それらを省略しました。3番目の場合、アルゴリズム自体ではなく、実装に問題がある可能性があります。コードが必要な場合は、理解できるように十分にクリーンアップしてみますが、数分かかります。しかし、私は機能することが知られているアルゴリズムを探しています。ボクセル形状作成アルゴリズムはどこにも見つからないようです。私はすべてをゼロから行ってきました。
編集:
これが3回目の試みです。めちゃくちゃですが、片付けてみました。
algorithm - O(n^2) よりも高速にボクセルのリストから近傍グラフを作成しますか?
現在、大まかに次のようにして「近隣グラフ」を作成しています。
これはおおよそ n の 2 乗 (マイナス n) で実行されます。一定数のボクセルには許容できますが、リストが大きくなると明らかに時間がかかります。
別の素朴な解決策は、すべてを大きな 3D 配列またはハッシュマップに入れることです。これは O(n) で実行されますが、より多くのメモリを犠牲にします。
もっと速い方法はありますか?Googleで正しい検索用語を入力できないようです...
algorithm - 有効な各ポイントの正規ベクトルを取得するにはどうすればよいですか?
各有効なポイントの法線ベクトルを評価する方法は?
ptsは、Point-cloud-data内のポイントであり、(w、h)のサイズのビューサイトで表示されます。
このようなもの:
各ポイントは隣接するポイントによって関連付けられ、一緒にサーフェスを生成します。
ptsは、行と列を1つずつしっかりと配置されています。そして、私たちの仕事は、私たちの視界に向かう各点の法線ベクトルを可能な限り正確に評価する方法を見つけることです。
ptsはリアルタイムで生成されるため、私はこれをリアルタイムで実行しようとしています。たとえば、一度に1024x1024ポイントをカウントします。誰かが以前に公開した解決策はありますか?
java - ボクセル ベースのゲームでのチャンク管理
私はMinecraftに基づいたJava LWJGLゲームに取り組んでいます。地形の管理に取り組んでいますが、探索すると世界が広がるので大変です。地形がチャンク オブジェクトに格納されていて、プレイヤーの xyz 位置に基づいて、どのチャンクをレンダリング リストから削除し、どのチャンクを追加し、どのチャンクを生成するかを知る必要がある場合、地形をどのように管理しますか?
java - 手続き型地形生成
データをチャンクに保存し、プレーヤーが探索するときに一度に 1 つのチャンクを生成する 3-d Java lwjgl ゲームを作成しようとしています (無限)。チャンク間でテレインをどのようにブレンドしてシームレスにするのか? 長い間(何日も何日も)研究した後、私は困惑しています。私を助けてください!
c# - XNA ボクセル ベースの地形エンジンに適したリソースはありますか?
私はゲーム (XNA/C#) の試みに 1 週間取り組んできましたが、今では地形を作成するところまで来ています。これにはボクセルベースのエンジンを使用する可能性が最も高く(マインクラフトに似ています)、実際にキューブのチュートリアルをいじってみましたが、それらのほとんどは非常に基本的なもので、あまり役に立ちません. 今、私は次の構造について考えました:
ゲーム -> 主なタスクを処理します。
--> World クラスを呼び出します。-->
ワールド -> ワールドで発生するすべてのタスクを担当し、ブロック データを保持します。
-->スクリーン オフセットを渡した後、ブロックの draw() 関数をトリガーします-->
ブロック -> World で指定された正しい画面位置にブロックを描画します
ただし、何千ものブロックをレンダリングする必要があるため、3D プログラミングの経験がないため、これは非常に困難になる可能性があります。
これは多くのメモリを消費すると想像できるため、36 (2 つの三角形に対して 6 辺 x 6 ポイント) のインデックス メソッドを使用してこれを行うことはまだ効率的ですか?
matlab - matlab での 3D ボクセル表示
私はグリッドを持っています。それは 3D で、数値を格納しています。
2*2*2 の場合のグリッドの例を次に示します。
ボクセルが存在しない場合、数値 0 は通常、色または nan で表現したい数値です。私がやりたいことは、次の図のように matlab でボクセル グリッドを表示することです。
ただし、母音はセル内の数字で色付けする必要があります。
ライブラリや自分で書く方法があれば、これを行う方法を知っている人はいますか?
python - Python で 3D メッシュをボクセル化する方法
Rhino から生成された 3D メッシュをボクセル化するために、Python (私はほとんど何も知りません) を使い始めるのに助けが必要です。データ入力は .OBJ ファイルになり、出力も同様になります。この使用法の最終的な目的は、建物内の 2 点間の最短距離を見つけることです。しかし、それは後で。今のところ、まず 3D メッシュをボクセル化する必要があります。ボクセル化プリミティブは単なる立方体かもしれません。
これまでのところ、OBJ ファイル パーサーから読み取り、解析された obj から V、VT、VN、F プレフィックスを取り除いて、それらの座標を使用して 3D オブジェクトの境界ボックスを見つけることができます。メッシュをボクセル化する適切な方法は何ですか?
voxel - インスタンス化されたオブジェクトを使用したシーンのボクセル化
いくつかの球、立方体、および長方形の壁を備えた、床としての平面を持つ単純なシーンを directx11 で作成しました。読み込まれるオブジェクトは、平面、立方体、球の 3 つだけです。ただし、立方体と球体は、スケーリング、位置、および回転が異なる複数回インスタンス化されています。これらのオブジェクトのうち 2 つは動的です。
スケールと回転が異なるオブジェクト インスタンスを考慮して、このシーン全体 (100x100x20 単位) を 0.2 単位のボクセルにボクセル化したいと思います。
ボクセル化に関するいくつかの記事を読み、「Direct3D 11 を使用した実用的なバイナリ サーフェスおよびソリッド ボクセル化」の GPU Pro 3 のソース コードを入手しました。しかし、これらの記事はすべて、単一のオブジェクトのボクセル化を示しています - それらの三角形を取り、それらをグリッドに分割します.
これらのメソッドを拡張して、複数のオブジェクト インスタンスを持つシーン全体を考慮するにはどうすればよいでしょうか?
考えられる唯一のことは、シーン全体をトップダウンで octree 分割する必要があるということです。しかし、動的なシーンの場合、これはコストが高すぎるでしょうか?
私のシーンでは、読み込まれたモデルごとにバッファを使用しています。したがって、Compute Shader でボクセル化する場合、3 つのバッファすべてを 1 つのバッファにコピーする必要がありますか? モデル インスタンスはどのように説明すればよいですか?
ありがとうございました。