1

ええと、それは私が次世代の最先端の研究開発プロジェクトで忙しくなる時期です(ただの楽しみのためです...そして最終的にはいくらかの利益が得られるかもしれません)。

今回は、サービスについて素晴らしいアイデアがありましたが、残念ながら詳しくは言えません。

ただし、このプロジェクトの主要な部分は、特定の入力基準から 3D モデルを生成する機能です。生成されたモデルは世代ごとに異なる必要があります。

そのため、これはゲームで使用される静的モデルとは大きく異なります。モデル座標だけでなく、実際のコードを保存する必要があると思います。

出力の例を挙げると、次のようになります。

var apple = new AppleGenerator();
apple->set_size_between(30, 50); // these two numbers are just samples...
apple->set_seeds_between(3, 8); // apple must have at least 3 seeds*
var apple_model = apple->generate();

// * I realize seeds may not be exactly part of the model, but I can't of anything else

したがって、ここでいくつかの点に取り組む必要があります。

  1. これらのモデルをデータとして保存するにはどうすればよいですか?
  2. 役立つツールを知っていますか?
  3. ランダム要素を組み込む必要があります (たとえば、リンゴの形は毎回少しずつ異なります)。
  4. ここで数学がうまく機能すると思いますが、これらは複雑な形状であるため、各モデルに必要な数式を作成することは不可能ですよね?
  5. また、テクスチャは、モデルをランダムに見せるだけでなく、モデルの各部分に関連している必要があります (たとえば、生成されたリンゴの 40 ~ 60% を赤で、残りを緑で詳細化することができます)。
4

3 に答える 3

2

これは実際には簡単な作業ではありません。ソリューションは、作成しようとしているオブジェクトの複雑さと種類によって大きく異なります。

ただし、いくつかのケースを考えてみましょう。

オブジェクトは多かれ少なかれ知られています:

最も単純なケースは、従来の方法で 3D モデルを作成し、それを少しランダム化することです。リンゴを例にとってみましょう。ランダム化は、リンゴのサイズからテクスチャの色、果物の損傷までさまざまです。

すべてのオブジェクトは、NURBS サーフェスを使用して記述できます。

この場合、サーフェスを生成できるように十分なデータを保存する必要があります。もちろん、このデータは少しランダム化できます。

あなたのオブジェクトは回転対称です:

この場合、単一の曲線を生成し、それを軸を中心に回転させると、形状が得られます。リンゴがその例です。曲線データのみを保存する必要があり、形状のランダム化は曲線 (対称性を維持) または最終メッシュで行うことができます。

テクスチャについて

これは、メッシュ生成よりもはるかに複雑です。これは主に、テクスチャがメッシュよりも多くの情報を運ぶためです (より詳細です)。多くのテクスチャ生成戦略を使用できます。リンゴの場合、いくつかの頂点を選択し、それらに色 (赤、緑、赤など) を与え、他の頂点の色を補間することができます。これにより、リンゴに見栄えのする色のスムーズな移行が作成されます。ただし、ナイフを生成している場合、それはひどく見えます。

ほとんどの場合、メッシュのどの部分が何を表しているかを認識し、部分ごとにテクスチャを生成する必要があります。上記のナイフの例では、2 つのステップでメッシュを生成できます。ブレードとハンドルの各パーツのテクスチャは個別に生成されます。

結論

もちろん、これらの混合物を持つことができます。クラスはデータを受け取ることができ、データのmeshGeneratorタイプに基づいて、それに応じてメッシュを生成します。複雑なオブジェクトは、NURBS ではなく三角形によってより簡単に定義できるため、おそらくオブジェクト作成の最初のソリューションが最も適しています。

于 2012-03-28T22:45:21.270 に答える
2

Sporeのコード化に使用される基本的なアーキテクチャ原則のいくつかを見てみましょう。Sporeは生物の進化に関するビデオ ゲームです: http://chrishecker.com/My_liner_notes_for_spore

以下は、メッシュを XML シリアル化する方法の例と、いくつかのランダム モーフ動作を示しています

りんごを少し違うものにするために、ランダムな変換 (または変形) を適用できます。例を参照してください: http://wiki.blender.org/index.php/Doc:2.4/Manual/Modifiers/Deform/MeshDeform

于 2012-03-28T22:46:12.937 に答える
1

奇妙な問題を回避するために、確立されたファイル形式を使用したい。純粋な数学というより幾何学です。生成関数はポリゴンをプロットし、保存メソッドはフォーマットと対話します。

https://stackoverflow.com/questions/441388/most-common-3d-model-format

于 2012-03-28T23:30:26.437 に答える