BlenderとUnityで作ったものをVR(Oculus  Quest/Oculus Link)で動かします

ブログの女の子を作る #77 MTreeでTerrainの木を作る (2) 幹や葉を設定する【Unity】

 
前回の記事では、MTreeを使ってTerrainの木を変更しました。良い木ができたので満足です!
 
今回の記事は、MTreeをインストールして、木の幹・枝・葉・根を設定した時の作業メモです。
 
パラメータがたくさんありますが、値を適当に変更していれば、そのうち良い木になったりします。
うまく木が作れない時は、Randomize treeボタンを何回か押して良さげな木を探して、そこから修正するのもアリですね。



開発環境

・Unity 2020.3.5f1(High Definition RP 10.4.0)
 ※MTreeで木を作る時は「Unity 2020.1.17f1(High Definition RP 8.3.1)」を使った
Mtree – Tree Creation(Version 2.5.0)
・グラボ:ASUS ROG-STRIX-RTX2060S-O8G-GAMING
・Oculus Quest 2(Oculus Link利用)
 

(1) MTreeをインストールする

MTreeをアセットストアで購入して、インストールしていきます。
 

別のプロジェクトにインストールする

別の記事で書いたように、4/30時点ではまだUnity 2020.3のHDRPに対応してません
 
今回は、2020.1.17f1で別プロジェクトを作成します。
 
テンプレートは「High Definition RP」ですね。
 
念のため、「High Definition RP」のバージョンを確認しておきます。
8.3.1なので問題ないですね。
 
Package Manager で MTree をインストールします。
いまのバージョンは 2.5.0 でした。
 
次に、HDRP環境で使えるようにするために、「/Assets/MTree/SRP/SRP 7.1.8/HDRP 7.1.8 Amplify」を実行しておきます。
これでMTreeのHDRP対応シェーダーが使えるようになります。
 

(2) 葉と幹のテクスチャ画像を変更する

MTreeにはたくさんのパラメータがありますが、まずは、葉と幹のテクスチャ画像を変更するところから始めてみます。
 

MTreeオブジェクトを追加する

Hierarchyの何もないところで右クリックして、「3D Object -> Create new Mtree…」を選択します。
 
木?のオブジェクトが追加されました。
なんかもやしっぽいですが、これから木に成長していきます。
 

枝・葉・根を追加する

MTreeオブジェクトのInspectorで、「Trunk」を選択して「Functions -> Add function -> Add Branches」を選択します。
 
枝が生えるので、次は「Branch」を選択して「Add Leafs」を選択します。
 
葉が生えるので、最後に「Trunk」を選択して「Add Roots」を選択します。
 
これでベースとなる木ができました。
 

葉のテクスチャ画像を変更する

葉の表示がおかしいのは、テクスチャ画像が設定されてないからですね。
 
Exposed Properties -> Albedo Texture -> Albedo」や「Normal Map」にテクスチャ画像を設定します。ファイルは「/Assets/MTree/Textures/Branch」にあります。
 
[Branch Serrate]
一般的な葉っぱです。
 
[Branch_Needles]
針葉樹っぽい。
 
[Branch_Palmate]
もみじのようです。
 
[Branch_Pine_1]
パイン(松の木)らしい。
 
[Branch_Pine_2]
 
[Branch_Poplar]
 
ポプラですね。
 
これだけの種類があれば、当面は大丈夫でしょう。
 

幹のテクスチャ画像を設定する

同様に、幹のテクスチャ画像を設定していきます。
ファイルは「/Assets/MTree/Textures/Bark」ですよ。
 
[Bark_Birch]
白樺です。
 
[Bark_Damaged]
ダメージを受けた木、なんでしょうか。
 
[Bark_Decidious_1]
綴りが deciduous なら落葉樹らしい。
 
[Bark_Decidious_2]
[Bark_Decidious_3]
[Bark_Decidious_4]
 
[Bark_Oak]
オーク(ナラ?カシ?)の木です。
 
[Bark_Palm]
これはヤシの木ですね。特徴的な模様です。
 
[Bark_Pine]
最後はパイン(松の木)でした。
 
幹の種類もいろいろありました。テクスチャ画像もリアルで良いです。
 


(3) 枝を設定する(Branch)

ここからは、木の細かい設定を進めて行きます。
 
詳細情報は、インストールしたフォルダの「documentation.pdf」か公式サイトのドキュメントにあります。
 
まずは、枝を設定していきます。
 

Seed(シード)

設定の「」になるような値です。プログラムで乱数生成する時も「シード」という値を使ったりします。
 
この値を1つでも変えると形が大きく変わるので、ガチャのようにいろいろ変更してみて、良さそうな値を探しましょう。
気に入った値があれば、どこかに記録しておくと良いですね。
 

Number(枝の数)

枝の数です。
 
1の場合。polycount=2189
 
10の場合。polycount=2781
 
30にするとかなり増えました。polycount=4015
 
ここで気を付けておきたいのが「ポリゴンの数(polycount)」です。複雑な形になるほど必要なポリゴン数が増えますので、描画負荷も高くなります。
 

Length(枝の長さ)

枝の長さです。
 
1の場合。
 
7の場合。
これくらいが良いですね。
 
15の場合。
 
 

Resolution(解像度)

良く分かりませんが、単位長さ当たりのポイント数?らしい。
公式サイトに書いてあるように、この値を増やすとポリゴン数が一気に増えます。とりあえず1のままで。
 

Randomness(ランダム性)

枝の見た目がランダム的になります。
 
0の場合。
 
0.737の場合。枝の長さが変わったのか全体的に小さくなりました。
 

Radius(枝の半径)

枝の半径です。
 
0.6の場合。
 
1の場合。かなり太くなりました。
 

Split proba(枝の分岐)

枝の分岐です。
 
0.1の場合。polycount=5422
 
1の場合。polycount=25828
これもポリゴン数に注意です。
 

Angle(枝の角度)

枝の角度です。
 
0の場合。ほぼ真上に向いてますね。
 
1の場合。かなり下向きになりました。
 

Up attraction(枝が上を向く頻度)

枝が上を向く頻度です。
 
-2.24の場合。
 
6.11の場合。
値が大きくなると、上の向く確率が上がるようですね。
 

Gravity strength(重力の強さ)

枝にかかる重力の強さです。
 
-1.66の場合。重力が0以下なので、むしろ上に行ってしまいました。
 
4.44の場合。枝が重そう。
 

Start(枝が始まる高さ)

幹に枝が出始める高さです。
 
0の場合。ほとんど地面近くから枝が生えてます。
 
0.537の場合。かなり上から生えてます。
 
 
枝だけでもかなり設定がありますね。
植え込みの木やブッシュ的なものも作れそう。
 

(4) 葉を設定する(Leaves)

次の設定は葉です。
 

Mesh type(葉部分の形状)

葉のポリゴン部分の形を設定します。
 
デフォルトは plane ですね。
 
crossの場合。十字型になりました。
 
diamondの場合。ダイヤモンド型?になりました。
 

Number(葉の数)

葉の数です。
 
250の場合。polycount=5422
 
2500の場合。polycount=14422
かなりもさもさになりました。これはこれで良い感じですが、ポリゴン数に注意。
 

Size(葉の大きさ)

葉の大きさです。
 
1の場合。
 
2の場合。
 
3の場合。かなり大きくなりました。
葉の見た目は大きくなってしまいますが、ポリゴン数を増やさずに「葉のもっさり感」を出すことができますね。
 

Max branch radius(葉ができる枝の最大半径)

葉ができる枝の最大半径です。
 
0.036の場合。
 
0.763の場合。
この値が小さいと、枝の先の方だけに葉が生える感じですね。
 

leaf weight(葉の重さ)

葉の重さです。
 
最小値の場合。ほぼ横向きです。
 
最大値の場合。葉が重いので、下を向いてしまいました。
 

(5) 根を設定する(Roots)

最後の設定は木の根部分です。
 

Number(根の数)

根の数です。
 
2の場合。
 
50の場合。キモイです。
 

Length(根の長さ)

根の長さです。
 
0.73の場合。
 
2.69の場合。
 
5の場合。更に長くすると、根は下方向に向かうようです。
 

Resolution(解像度)

根の解像度です。
 
0.01の場合。1本の棒みたい。
 
3の場合。根の先に枝分かれが出来てきました。
 
8.98の場合。かなり細かいですね。
 

Randomness(ランダム性)

根のランダム性です。
 
0の場合。
 
0.25の場青。少しランダムになってきました。
 
0.603の場合。やりすぎるとこうなります。
 

Radius(根の半径)

根の半径です。
 
0.109の場合。もやしのひげ根っぽい。
 
0.6の場合。
 
 

Split proba(根の分岐)

根の分岐です。
 
0.4の場合。
 
0.91の場合。かなり分岐が増えます。
これもポリゴン数に注意です。
 

Angle(根の角度)

根の角度です。
 
0.1の場合。
 
0.791の場合。ほぼ真横に生えました。
 

End Height(根が生える高さ)

根が生える高さです。
 
2.18の場合。かなり上から生えるようになりました。
 

Ground height(地面の高さ)

根が張る時の地面の高さ?です。
 
-0.56の場合。
 
1.53の場合。上に向かって根が生えてます。
 


(6) QualityとSave as prefab設定

これで一通りの設定が完了しました。
 

この形にしました

今回作成した木です。
幹は細めで、葉はややもっさりにしてみました。
 

Quality設定はそのままでOK

設定に「Radial resolution、Angle threshold、Simplify radius、Simplify leaves」などがありますが、基本的にはデフォルト設定でOKです。
 
例えば、Radial resolution の値を 1 → 3 に変更すると、
 
こんな感じに幹の表面が細かく?なります。
 
ポリゴン数も増えるので、あまり値を変更する機会はないかも。
 

Unityプロジェクトをバックアップしておく

これからprefabファイルを作るのですが、その前にUnityを終了して「プロジェクトのバックアップ」を取っておくことを強くおすすめします。
 
理由は、prefab生成時にエラーが出てプロジェクトが壊れる場合があるからです。一度、生成に成功すれば、次回からはプロジェクトのバックアップをその都度行う必要は無いのですが、初めて「Save as Prefab」ボタンを押すのであれば、その前にバックアップを取っておいて損はありませんよ。
 

Save as prefabでPrefabを作る

Billboard Settings では、木をビルボード表示する時の設定ができます。
 
今回は「Double Sided」と「Has Top Card」を選択しました。
 
Save as prefab」ボタンをクリックすると、prefabファイルができました!
 

「Save as Prefab」ボタンクリックでエラーが出る場合あり

今回、いろいろ試している際、Save as Prefab ボタンをクリックした時にエラーが出る場合がありました。
NullReferenceException: Object reference not set to an instance of an object
MtreeComponent.SaveAsPrefab (System.Boolean groupedSave, System.Boolean isHDRP) (at Assets/MTree/Scripts/MtreeComponent.cs:349)
 
しかもエラーが出るだけでなく、プロジェクトが正しく動かなくなってしまいました。
こうなると、バックアップから戻すしかありません。
 

prefab側で再設定しておく

作成したprefabを見てみると、シェーダー設定がおかしい。いつものピンクです。
 
作成したprefabファイルをダブルクリックして、prefabの中身を表示し、ここでシェーダーを変更しておきましょう。
 
幹と葉の両方を設定します。
万が一、テクスチャ画像の設定が外れている場合、再設定しておきましょう。
 
設定後、prefabファイルをHierarchyにD&Dすると、今度は正しく表示されるようになりました。
 
これで木がprefabとして使えるようになりましたよ。
 

LOD(Level of Detail)も作ってくれる

MTreeアセットは、木をPrefabで作成した時に、LOD(Level of Detail)の各レベルのポリゴンデータも自動生成してくれます。
 
[LOD1]
 
[LOD2]
 
[LOD3]
ちゃんとできてますね。
 
LODのオブジェクトがあると、近くの木はキレイに、遠くの木は粗く表示して、Unityの表示負荷を下げることができます。非常にありがたい機能ですよ。
 

ビルボードが白い!

そして、LOD4がビルボードなんですが、なぜか真っ白でした。。。
 
とりあえずの回避策としては、
Unityのデフォルトシーン(Assets/MTree/examples)」ではなく、MTreeの「サンプルシーン(Assets/MTree/examples)」を開いてそこでMTree設定をする。
です。
 
環境にもよると思いますが、今回はこの方法でビルボードに色がつきました。
 

まとめ 

MTreeをインストールして、木の幹・枝・葉・根を設定してみました。
 
これだけ設定パラメータがあれば、一通りの木は作成できそうですよ。
LODの各データも自動生成してくれるのもありがたい。
 
スポンサーリンク

コメント

  • トラックバックは利用できません。

  • コメント (0)

  1. この記事へのコメントはありません。

ブログの女の子を作る #76 MTreeでTerrainの木を作る (1) 注意点と作業手順まとめ【Unity】

ブログの女の子を作る #78 Crest Ocean System HDRPで池と海を作る【Unity】

最近のコメント

だーしゅ
IT関係のお仕事してます。
VRは楽しいですね。

[当ブログについて]