タグ付けされた質問 「procedural-generation」

手続き型の生成とは、手動ではなくアルゴリズムと計算に基づいてコンテンツを構築することです。

2
宇宙人工物からの大気散乱空
私は宇宙からの惑星の大気散乱を実装する過程にいます。http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter16.htmlからSean O'Neilのシェーダーを出発点として使用しています。 ここにあるGroundFromSpaceシェーダーではなく、SkyFromSpaceシェーダーを除いて、fCameraAngleに関連する問題はほとんどあります。http://www.gamedev.net/topic/621187-sean-oneils-atmospheric-scattering/ fCameraAngle = 1内側のループで使用していない場合、スペースシェーダーから空の奇妙なアーティファクトを取得します。これらのアーティファクトの原因は何ですか?fCameraAngleが1に制限されると、アーティファクトは消えます。O'Neilのサンドボックス(http://sponeil.net/downloads.htm)にある色相も欠けているようです。 カメラ位置X = 0、Y = 0、Z = 500。左側のGroundFromSpace、右側のSkyFromSpace。 カメラ位置X = 500、Y = 500、Z = 500。左側のGroundFromSpace、右側のSkyFromSpace。 カメラの角度は、ソースに応じて非常に異なる方法で処理されるようであることがわかりました。 元のシェーダーでは、SkyFromSpaceShaderのカメラアングルは次のように計算されます。 float fCameraAngle = dot(v3Ray, v3SamplePoint) / fHeight; 一方、スペースシェーダーの地面では、カメラの角度は次のように計算されます。 float fCameraAngle = dot(-v3Ray, v3Pos) / length(v3Pos); しかし、さまざまなソースがオンラインで、レイを否定しています。どうしてこれなの? 問題を示し、画像の生成に使用したC#Windows.Formsプロジェクトは次のとおりです。https : //github.com/ollipekka/AtmosphericScatteringTest/ 更新: O'NeilのサイトにあるScatterCPUプロジェクトから、カメラがシェーディングされているポイントの上にあるときにカメラレイが無効になり、ポイントからカメラへの散乱が計算されることがわかりました。 光線の方向を変更すると、実際にアーティファクトは削除されますが、次に示すように他の問題が発生します。 さらに、ScatterCPUプロジェクトでは、O'Neilは光の光学的深さが0未満の状況から保護します。 float fLightDepth = Scale(fLightAngle, fScaleDepth); …

3
芸術的(2D)ツリーをリアルタイム(L-System?)で手続き(作成)する方法
最近、L-systemモジュールをプログラムしました。さらに興味を持ちました。私はPlants vs Zombies junkieでもあり、Tree of Wisdomのコンセプトが本当に好きでした。楽しみのためだけに、同様の手続き型アートを作成して、もっと学びたいです。 質問:アーティスティックツリー(おそらく固定カメラ/視点の2D)を動的に作成するプロセスにどのようにアプローチすればよいですか? 理想的には、植物(葉のある茎のみ)から始め、その構造に対する何らかの影響(入力/ユーザーアクション)を使用して動的に成長させたいと考えています。これらの影響により、さまざまな種類の分岐、分岐の曲線、その広がり、果実の位置、花の色などが生じる可能性があります。:) 植物対ゾンビ:知恵の 木似たような木を動的に成長させるのは素晴らしいことですが、より多くのバリエーションとアニメーションが発生します。 私の経歴:プログラマー、いくつかのゲームエンジン(Ogre3d、cocos2d、unity)を使用しました。実際にopenGLを使用して直接プログラミングしておらず、それを修正しようとしています:)。 かなりの時間を費やす準備ができています。APIについて教えてください。そして、あなたのような専門家はこの問題にどのように取り組むでしょうか? なぜ2Dなのか?2次元のみを考慮して問題を解決する方が簡単だと思います。 芸術的インスピレーション: 果物と葉のある木だけで、下部に低木はありません 大きな木の猿の背後に左に(目に見える枝、緑の葉、花、果物など)、。 PixelJunk's Eden(アートスタイルのインスピレーション)。 フラクタルを使用して手続き的に生成されたアップルツリー あなたが質問を理解するのが簡単だったならば、私に知らせてください、私はさらに詳しく説明するかもしれません。 さまざまなアプローチの議論がすべての人に役立つことを願っています。あなたたちは素晴らしいです。

6
3Dパーリンノイズ関数は、地形の生成にどのように使用されますか?
高さの値を生成するために2Dパーリンノイズ関数を使用して頭をラップできますが、3Dパーリンノイズ関数が使用される理由がわかりません。Notchのブログhttp://notch.tumblr.com/post/3746989361/terrain-generation-part-1で、彼はMinecraftでの地形生成に3Dパーリンノイズ関数を使用することについて言及しました。誰がそれがどのように行われ、なぜそれが役立つのかを知っていますか?x、y、およびzの値を渡す場合、それはすでに高さがあることを意味しませんか?

3
ゲーム内でランダムに湖や川を生成するにはどうすればよいですか?
2Dブロックビルディングゲームがあり、ランダムに生成された湖や川を作ろうとしています。Perlinノイズアルゴリズムを調べましたが、ランダムで素晴らしい結果を生成することができませんでした。 私はpythonノイズライブラリを使用しようとしましたが、マップをあまりランダムに作成しませんでした。 よりランダムにするために、そのライブラリに欠けているシード関数がありますか?よりランダムにしたい場合、どの変数を変更しますか?可能であれば、数学とPythonの用語を減らして、技術的な答えを減らしてください。 マップは2Dタイルマップです。他のアルゴリズムの非ランダム性の例を次に示します。次のコードは3回連続で出力されました。私は次のようなものでオクターブと周波数をランダム化していました:freq = 16.0 * random.randint(1, 500000) * 0.000001 + 0.5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 …

3
Minecraftのようなエンジン用に浮遊陸地を生成するにはどうすればよいですか?
XNAでMinecraftのようなエンジンを作成しています。私がやりたいのは、このビデオに示すような浮島を作成することです。 http://www.youtube.com/watch?v=gqHVOEPQK5g&feature=related ワールドジェネレーターを使用してこれをどのように複製しますか?Perlinノイズアルゴリズムを使用する必要がありますか?そのような土地を作るのにどのように役立つかわかりません。 以下は、私が使用しているパーリンノイズジェネレーターのコードです。 private double[,] noiseValues; private float amplitude = 1; // Max amplitude of the function private int frequency = 1; // Frequency of the function /// <summary> /// Constructor /// </summary> /// public PerlinNoise(int freq, float _amp) { Random rand = new Random(System.Environment.TickCount); noiseValues = new double[freq, …

4
手続き型惑星、高さマップ、テクスチャ
現在、OpenGL手続き型惑星ジェネレーターに取り組んでいます。プレイヤーが惑星の表面に降りることができないスペースRPGにそれを使用したいので、ROAMに関連するものはすべて無視しました。現時点では、VBOで立方体を描き、球体にマッピングしています。 私はほとんどのフラクタルハイトマップ生成技術に精通しており、すでに独自のバージョンのミッドポイントディスプレイスメントを実装しています(この場合、私は知っているわけではありません)。 私の質問は、手順でハイトマップを生成する最良の方法は何ですか。タイル可能なハイトマップ/テクスチャを作成できるlibnoiseを見てきましたが、見る限りではこのようなネットを生成する必要があります。 タイルを明らかにする。 最適なルートを教えてください。 どんな入力でも大歓迎です。

1
なぜこの手続き型コンテンツ生成が他のものではないのですか?
私はオンラインの手続き型コンテンツ生成の本を読んでいます。第1章の2ページには、PCGの例とPCGの例があり、それらを区別することはできません。 これは彼らによるとPCGです: ゲーム世界に植物が急速に生息するゲームエンジンミドルウェア 彼らによると、これはPCGではありません。 自動生成された植生を統合できるゲームエンジン また、1ページ目では、ゲームエンジンPCGを考慮しないと明示的に述べています。 ここで重要な用語は「コンテンツ」です。私たちの定義では、コンテンツはゲームに含まれるもののほとんどです:レベル、マップ、ゲームルール、テクスチャ、ストーリー、アイテム、クエスト、音楽、武器、乗り物、キャラクターなど。ゲームエンジン自体はコンテンツとは見なされません。私たちの定義では。 私の推測では、PCGの例は、ゲームマップを認識し、それに応じて植生を入力するゲーム内のコード(または任意のゲームに適応するコード)であると思われます。私にとってPCGではない例は、開発者がユーザーインターフェイスを介してオフラインで植物を追加できる場合に、ゲームエンジンから利用できるオプションのようになります。 最後の1つは私から非常にワイルドな推測です。一見PCGのように聞こえるので、私は間違っていると確信しています。それらを区別してください。

3
手続き的に生成された世界のチャンクを他の世界のチャンクに一致させる
ロジャー・ゼラズニーの 『アンバーのクロニクル』を読んだことがありますか? 自分が3人称MMOゲームでプレイしていると想像してください。あなたは世界に出現し、さまよい始めます。しばらくして、マップを学習したと思ったとき、あなたはその場所にいること、今まで見たことのないことを悟ります。あなたが知っていると確信していた最後の場所に戻り、それはまだそこにあります。しかし、世界のその他の地域は変化しており、あなたはそれがどのように起こったかにさえ気づきませんでした。 手続き型の世界世代について読んだことがあります。パーリンノイズとオクターブ、シンプレックスノイズ、ダイアモンドスクエアアルゴリズム、構造プレートのシミュレーションと水の侵食について読みました。手続き型の世界生成における一般的なアプローチについて、漠然と理解していると思います。 そして、この知識があれば、上記のようなことをどのように行うことができるかについてはわかりません。私の頭に浮かぶすべてのアイデアは、いくつかの理論的な問題に遭遇します。ここに私が考えることができるいくつかのアイデアがあります: 1)入力としてシード番号といくつかの完全に記述されたチャンク番号を持つ「リバーシブル」世界世代 私はそれが可能でさえあるとは思いませんが、シードを受け取り、チャンクが構築される数のマトリックスを生成する関数を想像します。また、一意の番号ごとに一意のチャンクがあります。そして、この一意のチャンク番号を取得し、この番号を含むシードを生成する2番目の関数。私は下の写真のスキームを作成しようとしました: 2)チャンクを完全にランダムにし、それらの間にトランジションを作成します。 Aracthorが示唆されました。このアプローチの利点は、それが可能であり、魔法の機能を必要としないことです:) 私の意見では、このアプローチの短所は、多様な世界を持つことはおそらく不可能だということです。群島と大陸の両方が1つの数字で表され、隣接するチャンクであるとすると、チャンクのサイズは大陸と等しくなりません。そして、チャンク間で見栄えの良い遷移を行うことができるとは思えません。何か不足していますか? つまり、手続き的に生成された世界を持つMMOを開発しているということです。しかし、1つの世界を持っている代わりに、あなたは多くを持っています。ワールドを生成するためにどのようなアプローチをとり、プレイヤーが遷移に気付かないで、ある世界から別の世界へのプレイヤーの移行をどのように実装しますか。 とにかく、私はあなたが一般的な考えを持っていると信じています。どうしましたか?

2
Age of Empires IIランダムマップのように感じるランダムマップを生成するにはどうすればよいですか?
Age of Empires IIがランダムマップを生成する方法(多様性、適切なバイオームトランジション、混chaを感じずにランダムに感じられるマップ)が好きですが、スタイルを再現するのに苦労しています。たとえば、Perlinノイズを使用しようとしましたが、すべてが均一すぎるか、そうでない場合はPerlin値->地形ヒューリスティックが敏感で壊れやすいため、さまざまなワールドタイプを作成できません。 AoE2マップタイプ「不明」が「100,000個のマップ」を宣伝し、シード番号の使用を示唆していることを覚えていますが、シード番号を使用して見た品種を作成する方法がわかりません。 AoE2ランダムマップのように感じるランダムマップを作成するには、どのアルゴリズムとヒューリスティックを使用できますか? より具体的に編集してください: 私の問題についてさらに考え、AoE2のランダムマップエンジンについて気に入っていることを研究しているとき、私の最大の問題は、地図上の水と植物の分布を管理することだと思います。私はそれを「意味のあるバイオーム遷移」と結びつけていることを知っていますが、それは別の問題です(ただし、Perlinノイズを引き続き使用すると解決が難しくなります)。 私は、AoE2のランダムマップをいくつか追加しました。これらのマップは、自分の努力が再現に失敗している、マッピングエンジンの好きな点を強調しています。すべてのスクリーンショットは、ランダムなマップタイプ「カスタム」->「不明」から取得されます。私は、群島のような特定の地域を使用するようにゲームに指示しませんでした。 さらに以下は、自分のマップエンジンからの画像です。各ピクセルは、1つのAoE2マップタイルに対応します。 私のプロジェクトの複雑な点の1つは、マップをAoE2マップよりも何倍も大きくしたいことです。したがって、私が使用するエンジンは、AoE2が使用するようなマップごとの狭いバイオームのセットではなく、各マップでバイオームの全範囲を作成できる必要があります。 Age of Empires IIマップ 内陸の湖とある種の川のようなものを特徴とする例があります。マップに散在する大量の水が含まれているのが好きですが、その水はまだいくらか濃縮されています-あなたの帝国を構築するために利用可能な土地の大きな帯があります。ゲーム全体を使って水辺の都市を計画する必要はありません。 ゲームが島を横断可能な沼地に接続するのに十分なほどスマートだった同様の例を次に示します。ノイズベースのアルゴリズムがそこに沼地を作成する方法を想像することはできません、それらの場所だけ。また、ゲームで土地がどのように作成されたかに注意してください。各プレイヤーは、最初からすべての土地を所有しています。土地のランダムなパッチを作成しませんでした。次に、各プレイヤーが開始するのにどれが最もひどいものでないかについて、ベストな推測をしました。 この地図は水も多用しますが、内陸の湖はあまり含まれていません。最初の画像と比較してください。AoE2が同じビルディングブロックを使用してまったく異なる地域を作成する方法が気に入っています。パーリンノイズを使用する私の試みはここで失敗しました-私は、土地の塊を萎縮させる広大な広大な海、または10,000の湖の土地を得ます。また、島と接続された大陸の両方を取得するのは難しいと感じました(北アメリカ/南アメリカを考えてください)。 この画像とその上の画像を比較してください。彼らは、地図の乾燥が水位に依存しないことを示しています。最初の画像は、ほとんど水がなく、森林と草が含まれている地図を特徴としています。2番目の画像には適度な量の水が含まれていますが、砂漠です。それが可能だと思います(あなたの世界にニューメキシコまたはサハラとコスタリカの両方があると考えてください)。 自分の地図 多くの場所で、マップを作成する良い方法は、それぞれ異なるデータの次元を表す複数レベルのPerlinノイズを重ねることです。一般的な推奨事項に従って、私はここでウィテッカーテーブルから地形タイプを選択して、標高と湿度を調整しました。 2つのperlinマップを取得し、それぞれの値を単純なを介して整数に量子化しif perlin_val < x { i=some_int } else if perlin_val < y...、(標高、水分)整数ペアを地形タイプのテーブルにマッピングしました(例:[1,0]-> tropical desert、[1,1 ]->草原)。このシステムには海洋が含まれていました-標高= 0の海洋が定義されています。 さまざまなバリエーションがあり、多くの点で実世界のように感じられますが、いくつかの問題があります。 まず、海の深さにパターンはありません。海岸近くの浅い水とさらに深い水が期待できますが、どこにどこにいるかについての韻や理由はありません 第二に、水はすべて海洋に集中しています。湖や川はありません。Perlinのノイズは、大陸の中央で突然低い値に落ちないからです。 各バイオームの量のバランスをとることは非常に困難です。私はこれを次のものに帰します。 パーリンノイズは正規分布に従うため、各次元マッピングの確率を調整する方法を推定することは困難です。 複数の次元のバランスを取ることは困難です-多分(2,3)が欲しいので、(n、3)を得る確率を上げます。さて、今私は(3,3)が多すぎて、すべてが間違っているように見えます。 滑らかなデータを得るのに十分なほどノイズをズームすると、Perlin値の完全なサンプルが得られませんでした。そのため、目の前のマップの分布を微調整し、新しいランダムマップをリロードして、非常に異なる結果を得ます。 私は、Perlin値の3番目のセットから水を作ることによって、川/湖の問題を解決しようとしました。バイナリの水/土地の決定。その後、上記のものをすべて土地に適用します。これにより、配水を非常に簡単に制御できるようになりますが(完全ではありませんが、より優れています)、意味をなさない多くのバイオーム遷移があるという問題が生じます。例えば、緑豊かな草原の真ん中の砂漠の不可解なパッチ、浜辺の雪など。また、上記の理由から、土地のバイオームの割合を制御することはまだ困難です。 上記の問題を見て、Perlinノイズを1次元にのみマッピングする単純なアルゴリズムを試しました。現在、0 =深海-> 1 =浅い海-> 2 …

5
2Dマップで接続された(ただし論理的に異なる)水域を検出するにはどうすればよいですか?
2D六角形のグリッドマップがあります。各六角形セルには、水か海かを判断するために使用される高さの値があります。私は、水域を特定してラベルを付ける良い方法を考えています。海洋と内海は簡単です(洪水充填アルゴリズムを使用)。 しかし、地中海のような水域はどうですか?大きなものに付着している水域(「海」と「湾」は開口部の大きさだけが異なる) ここに私が検出しようとしているものの例があります(画像の中央の青い水域は、技術的に接続されているにもかかわらず、左の大きな海域とは異なるラベルが付けられているはずです): 何か案は?

1
手続き型メッシュ:UVマッピング
手続き型メッシュを作成し、テクスチャを適用したいと思います。問題は、私が望んでいるように固執させることができないことです。 アイデアは、メッシュ全体に一度だけテクスチャをペイントして、繰り返しが発生しないようにすることです。それを実現するには、どのようにUVをマップすればよいですか? 私のメッシュは、56個の三角形で構成される単純な平面です。写真を追加して問題を解決しますが、評判が10ポイントを下回っているのでできません。 どんな助けも大歓迎です。 編集(親切な人々は私に投票を与えました、ありがとう): 私のメッシュに会います: そして、テクスチャ化されたとき(テクスチャを繰り返してみました): そして私の質感: 編集2: bummzackの指示はチャームのように機能し、メッシュは私が望んだとおりにテクスチャリングされました。ありがとうございました。

3
都市通りネットワークを生成する方法は?
ゲーム用の都市ジェネレーターを作成したいのですが、生成の最初の段階で問題に直面しています:道路システムです。 中世の世界なので、多くの近代的な都市のようなグリッドプランは必要ありません。理想的には、道を迷うことは可能ですが、完全な迷路ではなく、ある程度のロジックを備えた、大通りと小さな通りの擬似ランダム生成を好むでしょう。 自然に成長した町のように見えるもの。 シンプルにするために、私の都市は平坦で安定した地形にあり、川の横断や救助の問題はないとします。後でソリューションに統合してみることができました。 私は自分の都市の正確なサイズや配置を決めていませんでしたので、正確な形(正方形、円形、長方形など)の都市でのみ動作するソリューションがあれば、それを採用します。

5
生成された3Dツリーメッシュ
これらの行についてはまだ質問が見つかりませんでした。間違っている場合は修正してください。 木(および一般的な動物)は、ゲームでは一般的です。それらの性質のため、それらは手続き型生成の良い候補です。 もちろん、余裕があるならSpeedTreeもあります。私の知る限り、実行時にツリーメッシュを生成する可能性はありません。次にありますSnappyTree、に基づいて、オンラインのWebGLベースのツリージェネレータproctree.jsのjavascriptの一部〜500行です。 上記のいずれか(または私がつまずいたことのない他のツリージェネレーター)を使用して、事前に数十のツリーメッシュを作成するか、3Dモデラーでゼロからモデル化し、さらにランダムにミラーリング/スケーリングして、さらにいくつかのバリアントを作成できます.. しかし、無料のリンク可能なツリーメッシュジェネレータが欲しいです。 可能な解決策: proctree.jsをc ++に移植し、オープンソースライセンスを処理します(gplであるとは思えないため、実行可能です。著者は、ライセンスをさらに無料にするために協力することもできます)。 Lシステムに基づいて独自のロールします。 気にせず、オフラインで生成されたツリーを使用してください。 私がまだ見つけていない他の方法を使用してください。 更新2015:proctree.jsをC ++ https://github.com/jarikomppa/proctreeに移植しました

1
クラウドテクスチャマップを簡単に作成するにはどうすればよいですか?
ゲームで3D惑星を作成しています。これらは「グローブ」として表示されます。それらのいくつかはクラウド層を必要とします。「地球」を作成するためのさまざまなBlender チュートリアルを見て、それらのクラウドレイヤーにはNASAの地球クラウドマップを使用します。 しかし、手続き的に生成された多くの惑星で架空の宇宙を作成します。だから私は多くのバリエーションを使用したいと思います。 NASAリンクなどのクラウドマップを手続き的に生成する方法があることを願っています。ガスジャイアントも作成する必要があるため、他の種類のクラウドテクスチャマップも必要になります。 それが難しすぎる場合は、クラウドマップのいくつかのバリエーションを作成することにフォールバックできます。たとえば、地球のような3、ガスの巨人の3など。 では、このようなクラウドマップを静的に作成またはプログラムで生成するにはどうすればよいですか?

3
シンプルなマップ、4つのバイオーム、およびそれらの配布方法
基本的な考え方は次のとおりです。私は、ランダムに生成されたオーバーワールドといくつかのダンジョンの入り口がその周りに散らばっている、ローグっぽい、おそらくドワーフ要塞のようなゲームを持っています。私はすでに基本的に覆われたダンジョンを持っていますが、私は世界の側面に固執しています。 スクリーンの2Dマップと見なされるこのオーバーワールドには、おそらくそれぞれ独自の合計スクリーン数を持つ4つの異なるテーマまたはバイオーム(草地、砂漠、雪、沼地)のブロブのような分布が必要です。マップが8x8で、64のユニークな画面を提供するとします。それらの半分は草原、4分の1の砂漠、そして沼地と雪はそれぞれ4分の1になります。 パレットの削減により、雪は沼地と同じ色になったようです。もともと、下隅には8つの雪スクリーンがあり、中央にはわずかにずらした8スクリーンの沼地がありました。申し訳ありませんが、ロケーションマーカーは無視してください。 私が手に入れた最高のものは、いくつかの蛇の形でした。そして、雪の中を砂漠で蛇行するような(またはその逆の)無意味な組み合わせで十分であることがよくありました。私の人生では、どのようにすてきでブロビーになるのか、ましてや、それを臨床的な(?)の意味を持たせることはできません。では、モックアップのようなバイオームマップを生成するにはどうすればよいですか? さて、リクエストにより、世界は実際にその例よりもそれほど大きくありません。そして、雪が砂漠に触れないという特別な制限を加えて、テーマの外観を決定するいくつかの塊を広げる方法が必要です。画面はスクロールせず、画面が「砂漠」に設定されている場合、画面上に草はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.