重要なのは中身です:手続き型器官の生成について

画像



(翻訳者の免責事項:念のため、食事中にこの記事を読むことはお勧めしません。)



ゲームジャムに参加し始めると、「最大加速」モードに入ります。このモードは、通常、眠れぬ夜の後の職場でのひどい月曜日で終わります。 年をとるほど、参加することに熱意を持つのは難しくなります。 幸いなことに、 PROCJAMは非常にリラックスしており、私にぴったりです。 さらに、不正行為は絶対に禁じられていないため、たとえば、数か月前にBestiariumで働いていたオルガンジェネレーターを返却し、それに基づいてプロトタイプを作成できます。





Viveのバージョンを準備している間、itch.ioのページでDe daemonici corporis fabricaをプレイできます。



かなり長い間触れなかったという事実にもかかわらず、 Bestiariumには私の頭の中にあった印象的なアイデアがあります。 しかし、ゲーム自体はいくつかの「哲学的」ポイントに基づいています。 私はいつも彼女を「ある部屋からのローグライク」と見なしていたため、研究空間は必然的に「外側」から「内側」に移動しました。これはウィリアム・ブレイクのこの詩によって理想的に説明されています。



花は空が青い

ほんの一握りのほこりには無限大があります。

全世界を手に持つ

永遠を見るすべての瞬間に。


私の意見では、このようなプロジェクトは、すべてを文字通りに解釈すると、はるかに興味深いものになることがわかりました。 したがって、私は「内側」に向かって移動することにしました。





ゲームの基本的な仕組みの1つは、呼び出すことができるクリーチャーからマテリアルを抽出することです。 標準的な方法で「ウサギの足」と「クモの目」から抜け出すことができますが、私たちのゲームは科学に関するものでもあります。 科学の場合と同様に、試行錯誤が頻繁にあります(ほとんどの場合、大変な作業です)。



これは、デザインノートのポイントの1つが「おそらく動作しない」とラベル付けされたものです。つまり、クリーチャーを解剖して器官を抽出します。 PROCJAMは、明らかにこのアイデアのプロトタイプを作成してテストするための完璧な口実でした。



De daemonici corporis fabricaDe humani corporis fabricaの悪魔的なバージョン)は、死体を最初に切り取った古代の学者の感情を伝えようとしています。 「このゴツゴツしたしわくちゃなものがなぜ必要なのだろうか?」のようなものですが 、私は気が散りました。 この投稿は、ゲームの技術面に関するものです。 それはすべて始まりました...どうやって臓器を手続き的に生成できるのでしょうか?



それは何ヶ月も前に動物の解剖に関するビデオを見た夜から始まりました(このトピックに関する研究のほとんどは、ガマスートラに関するこの記事を思い出しました)。 もちろん、事前に作成された臓器モデルで死体を生成し続けることもできます。 しかし、 Invocationプロトタイプにマルコフチェーン名ジェネレーターを追加したばかりで、考えてみました。「本当の」器官のように見える器官を生成するために使用する必要があるのでしょうか。



マルコフ連鎖の場合、いくつかの初期サンプルが必要です。



画像



はい、目を細めると臓器のように見える信じられないほどの8×8ピクセルパターン。 最初に、黒と白のピクセルを行のゼロと1としてエンコードし、それをマルコフチェーンに渡しました-これは、ほぼ確実であるとはいえ、動作しませんが、段階的なアプローチを取りたいと思いました。



画像 そして、あなたは何を知っていますか? はい、画像には2次元の整合性が必要なため、グリッチテクスチャが作成されました。 したがって、次のステップは、すべての白いピクセルについて、画像を整数の2次元位置のグループにエンコードすることでした。 そのため、実際にはいくつかの興味深い結果が得られ、入力情報のバリエーションが非常に説得力がありました。






画像 もっと必要だと判断したので、サンプルのサイズを16×16ピクセルに増やしました。 8×8が最適なサイズであることが判明したため、解像度を上げる方法をあまり探していませんでした(これはほとんどポイントではありませんでした)。



さて、オルガンのようなフォームがありましたが、解像度が低く、2次元です。 それらに別の次元を追加する方法は? 最初に思い浮かぶのは、 メタスフィアの使用です。






画像 その結果、画像を8x8x1サイズの3次元グリッドに変換しマーチングキューブアルゴリズムに転送し始めたところです。 3Dを取得しましたが、あまりにも厄介です。



プロトタイプやゲームジャムに熱心に取り組む習慣があります。 したがって、戻ってメタスフィアを思い出させる代わりに、生成されたメッシュの上にグリッドスムージングアルゴリズムを追加することにしました。






画像 Unity Wikiからこのメッシュフィルターをスケッチしました。 これにより、オブジェクトの形状がわずかに改善されました。 しかし、臓器はまだ完全に平らでした。 次に、平らな表面にあるすべての頂点に対して、Y軸に沿ってランダムなオフセットを追加しました(つまり、法線は正確に上下に向けられています)。



そしてそれを見てください。 私はただパレイドリアを持っていると確信していますが、脾臓、肺、肝臓、脾臓、そして...あらゆる種類の臓器のような形がはっきりと見えます。



テクスチャリングの時間になったとき、私は再び角を切って、これらのピースのUVスキャンを作成しないことを決めました。 3Dノイズ関数を使用していくつかの実験を行いました( UnityのCGINCでテスト済みの便利なCGINCに、 このリポジトリから移植たノイズシェーダーを使用できます )。 それらはかなり良さそうでした(おそらくどこかで使用します)が、テクスチャの通常のマップを作成する必要がある場合、安価なソリューションは非常に高価になりました。





その結果、単純な平面UVマップは非常に良好であることが判明しました(UV空間で正規化されたXZ頂点の座標の位置によって作成されます)。 描画されたテクスチャを利用することができました(写真ソースを検索するときにうんざりするだけでなく、Polycountもリツイートしました)。





「土曜日の夜の予定は?」

-さて、いつものように、シームレスな腸のテクスチャなどを描画します。



うーん、ソーセージ!



画像 したがって、臓器が生成されます。 しかし、今、古き良き悪魔にそれらを押し込む方法? チェストを開くのは非常に簡単です。悪魔モデルにモーフィングの別の重要なフェーズを追加するだけです。 しかし、そこに臓器を配置する方法は?



最初は、境界を決定するために非常に複雑なアルゴリズムを作成し、すべてが正しく「パック」されているかどうかを確認する必要があると考えました。 その結果、臓器のスポーンポイントをクリーチャーのボーンに追加するだけで十分であることが判明しました。 しかし、まだ問題があります。赤で囲まれた部分に見られるように、体からbodyい出します。






画像 テンプレートバッファー(ステンシルバッファー)が急いでいます! テンプレートバッファを使用して、胸部領域の「マスク」を作成し、この領域のみで臓器をレンダリングできます。



マスクのメッシュ(緑)は完全に平らであり、よく見るとその境界に気付くことができます。 しかし、動きがあっても、全体的な効果は十分です。






私の仕事を分析すると、私の決定の多くは冗長だったと思います。 そして、これらすべてのオルガンを描く優れたアーティストの助けを借りて、より良い結果を達成することができました。 しかし、それは楽しい実験でした。 結局のところ、最も重要なことは、このマッピングされていない領域を研究することだったように思えます。 それは非常に奇妙で珍しいので、おそらく誰もまだそれに迷い込んでいないでしょう。



画像







All Articles