生成された3Dツリーメッシュ


16

これらの行についてはまだ質問が見つかりませんでした。間違っている場合は修正してください。

木(および一般的な動物)は、ゲームでは一般的です。それらの性質のため、それらは手続き型生成の良い候補です。

もちろん、余裕があるならSpeedTreeもあります。私の知る限り、実行時にツリーメッシュを生成する可能性はありません。次にありますSnappyTree、に基づいて、オンラインのWebGLベースのツリージェネレータproctree.jsのjavascriptの一部〜500行です。

上記のいずれか(または私がつまずいたことのない他のツリージェネレーター)を使用して、事前に数十のツリーメッシュを作成するか、3Dモデラーでゼロからモデル化し、さらにランダムにミラーリング/スケーリングして、さらにいくつかのバリアントを作成できます..

しかし、無料のリンク可能なツリーメッシュジェネレータが欲しいです。

可能な解決策:

  • proctree.jsをc ++に移植し、オープンソースライセンスを処理します(gplであるとは思えないため、実行可能です。著者は、ライセンスをさらに無料にするために協力することもできます)。
  • Lシステムに基づいて独自のロールします。
  • 気にせず、オフラインで生成されたツリーを使用してください。
  • 私がまだ見つけていない他の方法を使用してください。

更新2015:proctree.jsをC ++ https://github.com/jarikomppa/proctreeに移植しました


5
独自の方法については、PrusinkiewiczとLindenmeyerによる「植物のアルゴリズムの美しさ」という本をお勧めします。これはalgorithmicbotany.org/papers/#abopで入手できます。本とサイトには、仮想植物の生成に関する多くの研究論文もリストされています。
Exilyth

WebGLで3DFloraと呼ばれるオンラインツールを作成しました。80を超えるパラメーターがあり、結果をobjファイルとしてダウンロードできます。ほぼすべての種類の植物を作成できます。ここでチェックしてください:3dflora.sina-s.com
user2002741 14

回答:


12

私のデモのほとんどは古いですが、私はこの分野でかなりの仕事をしました:

(Flash 2010)
http://genesisbbs.com/appstem.html(マウスをクリックしてドラッグ)
http://genesisbbs.com/appstem2.html
(directX 2006)
http://vimeo.com/5206795

あなたがこれを楽しみのためにやっているなら、私はあなたがあなた自身を転がすことを強く勧めます。ほぼ確実にクォータニオンを使用する必要があります。それらを理解することは非常に困難ですが、それらを使用するために深く入り込む必要はありません。クォータニオンは、回転という追加のコンポーネントを持つベクトルと考えてください。植物が成長するにつれてねじれたり曲がったりするようにしたい場合は、四元数が必要になります。

その他の学習
事項リヒテンベルク図
ラプラシアン成長
ボロノイ線図
最近傍アルゴリズム(google them)

私は(個人的に)どこで成長するか、つまり[シード-> [ルート] / [トランク->枝-> [花/葉]]の文法を指示する以外に、L-Systemsの使用を思いとどまらせるでしょう。Lシステムは、日光の方向、重力、障害物などの環境刺激への応答には適していません。

速度の問題に関しては、単一のツリーをリアルタイムで生成できます。ただし、メモリの目的とパフォーマンスのために、フォレストを処理する場合は、ツリーの小さなセットを生成し、それらを少しインスタンス化するだけです。

Mayaなどで使用されるハイエンドのもの以外は、ほとんどの既存のツリージェネレーターはそれほど優れていません(IMHO)。

また、ボクセルを使用してツリーを生成することを強くお勧めします(必要に応じてメッシュのあるスキン)。ボクセルの利点は、ラプラシアン成長やさまざまなオートマトンなどを使用して成長アルゴリズムを簡単にシミュレートできることです(Conwayのゲームではなく、他のルールが興味深い結果を生み出します)。


3

個人的には、おそらく事前に生成されたツリーから始めて、茂み、草、キノコなどを備えたキックフォレストレンダリングエンジンを取得したら、さらに可変ツリーメッシュが必要かどうかを確認します。

そうは言っても、ngPlantを見ることができます。GPL手続き型ツリーモデラーアプリが含まれていますが、すべての面倒な作業を行うライブラリはBSDライセンスです。C ++で書かれています。

フォレストレンダリングには、Ogreレンダリングエンジン用の(MITライセンスの)Paged Geometryあります。


3

手続き型ツリーの主な問題は、それらを生成することではなく、実行時にすべてのフレームをレンダリングすることです。これが、AAAゲームで多くの同一のツリーが表示される理由です。ユニークなツリーを作成する技術を実装または記述できなかったわけではなく、ゲームの他の機能の負荷を削減する必要があることを意味します走る。

同一のツリーが多数ある場合は、それらを回転させて均一にスケーリングし、あらゆる角度から異なるように見せることができます。また、同一であるため、各フレームを貴重なミリ秒を節約するためにインスタンス化できます。

この問題について少し考えてみると、幸いな媒体があるかもしれません-いくつかの異なるツリーパーツ、トランク、ブランチ、リーフなどを生成してみてください。しかし、ツリーレゴのようにすべてがモジュール式に適合するものです。その後、多くの組み合わせと非常にユニークなツリーを使用できますが、より多くのパーツをすべてインスタンス化して、より高速なゲームを実行することもできます。


区分的なアイデアを除けば、この答えは本当に新しいものを追加するものではありません。
ジャリコンパ

3
OPがとても感謝しているときはいつもいいです。QandAサイトの場合、投稿には明らかに質問がありません。この答えに加えて、あなたの弾丸ポイントに直接対処します。
サーヤカロット

ええ、私自身がそこにいたことをおologiesびします。
ヤリコンパ

1

少し前にツリー[d]に出くわしました...プロジェクトをテストするためにほんの少しの間それを使用しましたが、それは開発を止めたためでした。ツールは、 、私が覚えているものから、非常に高速です。リンクは下にあります。

欠点は、組み込むことができるツリージェネレータではないことです。いくつかのツリーを事前に生成し、実行時に配置するときにデータを変更して、一意性を微調整する必要があります。

よりもTreeDは無料で使用でき、モデルパック、テクスチャパック、3Dモデルジェネレータ、またはテクスチャジェネレータでない限り、作成したツリーを商用または無料で独自のプロジェクトに含めることができます。


ライブラリ形式であっても、他の無料のジェネレータを見ることができて嬉しいです。
ジャリコンパ

1

これはきちんとした小さなソリューションであり、私はプロジェクトでそれを使用しましたが、ゲームが実行されている理由をその場でツリーを生成するのに十分速いことを伝えることができます。確かに詳細ではありませんが、看板を取り除けばかなりきれいになるでしょう。

http://ltrees.codeplex.com/


XNAユーザーにとって適切なソリューションのようです。
ジャリコンパ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.