問題タブ [procedural-generation]
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 - Haskell OpenGL 手続き型生成
Haskell を使用して、OpenGL に与えられる特定の幅の三角形化された正方形の地形を手続き的に生成しようとしています。
実際に手続き的に生成されるのは高さだけですが、これはまったく難しいことではありません。ランダム関数を使用して[[GLfloat]]
、高さの行を表す を作成するだけです。
次に、heightsToCoords
を受け取り、各頂点の x、y、z 座標を含む [[GLfloat]]
を返す関数もあります。[GLfloat]
したがって、 を呼び出すとheightsToCoords [[0, 1], [1, 0]]
、返されます
私が抱えている問題は、データを OpenGL に取得することです。OpenGL では、(少なくとも私のセットアップでは) 各面を三角測量する必要があり、私が持っているのはポイントだけです。面を作成する方法がわかりません。
このデータを点のリストから面のリストに変換するにはどうすればよいでしょうか? 法線と頂点の順序を無視します。
c# - 3D Terrain Generator で大量のチャンクに対して手続き的に生成された構造
私は 16*16*16 のボクセル チャンクを使用して大規模な世界を作成しています。これは、32*32*32 の寸法まで積み上げられており、いわば道に少しぶつかりました。
手続き的に生成された構造から作成され、コンテンツの一部にテンプレートを使用して、20 + * 20 + * 20 + チャンクにまたがる大きな構造を作成したいと考えています。今、問題があります。ビジュアル レンダリングの範囲は最大 32*32*32 チャンクですが、可能であればメモリ内に最大 40*40*40 チャンクを保持しています。
構造物は、町、ダンジョン、道路など何でもかまいません。私は道路のパーリンワームのようなものを考えていました.x、zの地形の上にそれらを置き、橋などの経路を分析します.
構造物と構造物のコレクションは、プレーヤーが視覚範囲内に入る前に事前に生成する必要があります。または、高さマップに対するパーリン ノイズのように動作する必要があります (最良の解決策)。(プレイヤーが発電機の動作を見ないようにするため)。また、毎回ワールド シードと一致している必要があります。
私はこれについて少し考えましたが、2つの可能な解決策があります。
1) 構造ジェネレーターの起点に基づいて構造を生成します。これにより、いくつかの問題が発生しますが、構造の中心から生成したとしても、構造がプレーヤーの潜在的な視覚範囲に簡単に侵入する可能性があります。
2) 上記の方法を使用して構造を生成するために、「到達不能」なチャンクを事前に生成し、ページインおよびページアウトします。これもかなり不必要に思えます。
どちらの方法でも、構造物を生成する有効な場所を得るために、地形を大量に分析する必要があります。
私は、誰かがより有機的な解決策、または私がこれまで「見る」必要のない単純な解決策を持っていることを望んでいました.
前もって感謝します。
編集:
部屋の点群/ノードを生成するダンジョン生成のアイデアがありました。手順:
1) ジェネレーターが「ノード」を見つけると、x、y、z のサイズを作成して、部屋の原点** (部屋の中心または隅) と部屋のタイプに基づいてボックスを作成します。
** 0,0,0 ワールド空間に対する x,y,z は次のように計算されます new Vector3((chunkX*16)+voxelX,(chunkY*16)+voxelY,(chunkZ*16)+voxelZ)
2) 部屋のサイズが計算されたら、オーバーラップをチェックし、オーバーラップが見つかった場合は、いくつかのことのいずれかを行います。部屋の重なりが高い場合は、屋根または床が平らになるまで下げます。屋根が平らな場合は、部屋まで階段を作り、交差する壁を取り除きます。
3) 下、北、東を見下ろすと、おそらく小さなコーンのある部屋があり、それらの間に廊下を作ろうとします。
特にダンジョンの中心がメインホール/ボスルームである場合、これはおそらくある程度機能します.
これは、町、都市、地上のダンジョンでは異なります。それでも少し途切れ途切れのようです。何か案は?
c# - C#Xnaは、1Dグラフのような2D画像のエッジを補間します
ランダムウォークでいくつかの洞窟を生成しました。問題は、出力が小さすぎて、約 10 ~ 20 倍にスケールアップしたいことです。そうすると、すべてのピクセルが見えるようになるので、これを解決するにはアルゴリズムが必要です。エッジに沿ってピクセルの中心間を補間する 1 次元の正弦波または 3 次補間について考えました。基本的に、各ピクセルの高さはグラフの Y 軸になります。画像自体には、黒と白の 2 つの「色」しかありません。
黒い点は各ピクセルの中心で、赤い線はアーカイブしたい補間です。
洞窟全体は次のようになります。
それを実現する方法はありますか?それとも無理ですか?グラフは X ごとに 2 つのドットを持つことができなかったので、洞窟の端が X 軸に戻ったときにどのように解決できるのだろうか.
c# - Diamond-Square Algorithm は「滑らかな」ノイズを生成しません
私は最近、Diamond-Square プロシージャル生成アルゴリズムの実装を C# でまとめました。ただし、生成されたノイズには、処理される「正方形」の間に非常に明白な境界があります。擬似コードは次のようになります
アルゴリズムは、最初に画像全体の左上隅と右下隅から開始し、(深さ優先) 処理を進めます。
この記事を使用して、アルゴリズムを設計しました。彼らが与える例は次のようになります。
これが私の画像の1つです。
ここに私の完全なコードがあります:
正方形間で共有される中点の値を平均化した後:
更新された反復コード:
c# - マーチング キューブ アルゴリズムを最適化するにはどうすればよいですか? 類似した顔のグループを組み合わせるにはどうすればよいですか?
マーチング キューブ アルゴリズムの 256 ルックアップ テーブルに 3 ~ 4 日間取り組んだ後、ようやく機能するようになりました。動作するようになったので、最適化を試みたいと思います。私が考えたことの 1 つは、1 つのフロート エリアで大きなフラット エリアを削除することです。
私が考えていることを示す例の画像
ルックアップ テーブルを使用してメッシュを生成する方法
私を正しい方向に向けたり、これを解決するのに役立つ何かをありがとう.
編集*私が取り組んでいること
c# - 部分的に接続された有向グラフが強く接続されていることを確認する
環境
手続き型生成を使用して 3D ゲームを作成しています。私は、プレイヤーがマップ内の他の部屋にいつでも到達できるように、多数の事前生成された部屋を接続しようとしています。部屋には、接続する廊下を接続する必要がある「可能なエントリ ポイント」があります。ただし、部屋内の他のすべてのエントリ ポイントからすべてのエントリ ポイントに到達できるわけではありません。たとえば、ピット トラップがある場合、一番下のプレイヤーは部屋を通って一番上に移動できず、別の方法を見つける必要があります。
問題
3D 空間に埋め込まれた既存の一連の有向グラフが与えられた場合、サブグラフをより大きなグラフに接続する最小の合計長の一連の (双方向) パスを追加します。それができない場合 (一部の調査ではこれが NP 困難であることが示されているため)、短い時間で計算できるようにパスをできるだけ短くします。
これまでの作業
私の最善の解決策は、すべてのノードの Delaney Triangulation を作成するこの手続き型生成の投稿に基づいています。部屋の強く接続された各コンポーネント (たとえば、ピット トラップの最上階と最下階) を個別のノードとして扱い、そこから MST を構築しますが、これにより興味深い可能性のいくつかが制限されます (たとえば、開始した場所に戻るための 2 つの一方向パス)。
この問題を解決するためのより良い方法を知っている人はいますか?