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

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

 
前回の記事では、ライトを消して夜にしてみました。
 
今回は、以前からずっと気になっていた「Terrainの木」を改善します。
 
いま使っている木は、Unityの Standard Assets に入っていた「モバイル版の木(Broadleaf_Mobile)」なんですが、HDRPに切り替えた後、色合いが変わってしまったからか、見た目があまり良くありませんでした。そもそも、モバイル版なのでリアルさに欠けるということもありますし。
 
いろいろ木のアセットを試した結果、自由に木を作れるMTreeというアセットを使うことにしたのですが、木のビルボードが真っ白になったり、プロジェクトが壊れたりで、使えるようになるまでかなり時間がかかってしまいました。
 
いまは手順が分かってますので、短時間でいろんな種類の木が作れるようになりましたよ。
自由に作れるのは素晴らしいですね!
この記事では、「注意点と作業手順まとめ」を書いています。
MTreeのインストールや設定方法、困った時の対応方法は別の記事にあります。
よろしければそちらもご覧くださいね。



開発環境

・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を使う場合の注意点です。
 

Unity 2020.3のHDRPに対応してない!

FAQサイトの「What Unity versions are supported by Mtree ?」に対応状況が書いてあります。
 
4/30現在、MTreeは「Unity 2020.2以上のHDRP」に対応してません。
2020.2のHDRP」は Coming soon なんですが、いまメインで使っているプロジェクト「2020.3のHDRP」の対応はもっと後になりそうです。
 

別プロジェクトでPrefabを作る方式で

それでもMTreeで作った木を使いたいので、今回は「別のプロジェクトを作ってそこでMTreeを操作する」方法にしました。
MTreeで最終的に作られるのは Prefab なので、この方法でも全然問題ありません。
 

(2) 作業手順まとめ ※Unity 2020.2以上+HDRP環境の場合

以下に書いている手順は、Unity 2020.2以上+HDRP環境の場合の手順ですので、別プロジェクトを作ったり、Prefabをエクスポートしてインポートしたりなど、かなり面倒なことをしています。
 
対応しているUnityバージョンであれば、説明サイトに書かれている方法通りで問題ないと思います。
 

1. 必ずプロジェクトのバックアップを取る!

ここが一番大事な手順です。
 
ファイルコピーやSVN・Gitなど何でも良いので、プロジェクトが正しく動いている状態のバックアップを取っておきましょう。
私も今回の記事を作成するまでに、3回ほどプロジェクトを壊してしまいました。。。
そんな時でもバックアップがあれば安心です。
 

2. [今のプロジェクト]にMTreeをインストールする

以降、いつも開発で使っているプロジェクトを「今のプロジェクト」と書いています。
 
今のプロジェクトで「MTreeアセットを操作してPrefabを作る」ことはないのですが、インポートした木のPrefabが「MTreeのシェーダーやテクスチャ画像」などを使いますので、事前にMTreeをインストールしておく必要があります。
 
と書いていましたが、手順6,7でunitypackageファイルをエクスポートしてインポートする時に、「MTreeフォルダ以下のシェーダーとテクスチャファイル」を含めていれば、今のプロジェクトにMTreeをインストールする必要は無い気がしてきました。
 
とはいえ、その場合でも、インポート先のプロジェクトに既にシェーダーファイルがある場合、再度インポートしない方が良いとは思います。このあたりは気を付けて作業するのが良さそうです。
 

3. [今のプロジェクト]で「Save as Prefab」ボタンは押さない!

2番目に大事なことです。
手順ではないのですが、注意点として書いておきます。
 
環境によるかも知れませんが、今のプロジェクト(Unity 2020.3)でMTreeの「Save as Prefab」ボタンを押してしまうとプロジェクトが壊れたような状態になりました。
 
今のプロジェクトではMTreeアセットを操作しないので、このボタンが表示されることはありませんが、念のため。
 

4. Prefabを作るための[MTree専用プロジェクト]を作る

4/30時点のFAQサイトによると、Unity2020+HDRP環境でMTreeが対応している最新バージョンは「Unity 2020.1+HDRP 8.3.1」でした。
 
今回は「Unity 2020.1.17f1」で、MTree専用のプロジェクトを作成しました。
 

5. [MTree専用プロジェクト]にMTreeをインストールして木を作る

MTree専用プロジェクトに、MTreeをインストールします。
 
ここで、MTreeの「サンプルシーン(Assets/MTree/examples)」を開いて、そこで自分が作りたい木を作っていきます。通常であれば、「Unityのデフォルトシーン(Assets/MTree/examples)」を使えば良いのですが、デフォルトシーンで木を設定してPrefabを作ると、木のビルボードが白くなる現象が起きました。
 
環境によるかも知れませんので、デフォルトシーンで問題なければそちらで良いですね。
 

6. [MTree専用プロジェクト]のMTreeでPrefabを作り、unitypackageファイルにエクスポートする

手順1でバックアップしましたが、ここで再度バックアップしておきましょう。
 
次に、MTreeオブジェクトで「Save as Prefab」ボタンを押して、Prefabファイルを作成します。
 
そして、「Prefabファイル」と「xxx_meshesフォルダ」を「Export Pacage…」でエクスポートするんですが、その際、MTreeフォルダ以下をExport内容から外した方が良いかも知れません。
今のプロジェクトの場合、シェーダーファイルを含めてしまうと、インポート先のプロジェクトでエラーが発生しました。
 
ですが、手順4で「今のプロジェクトにMTreeをインストールしなかった」場合は、これらはむしろ必要なファイルですね。環境によって、やり方を変えるのが良さそうです。
 

7. [今のプロジェクト]にunitypackageファイルをインポートする

インポートすると、木のPrefabファイルが使えるようになります!
 


(3) Terrainの木を変更する

先ほどの手順1~7で、今のプロジェクトで自分で作った木のPrefabを使えるようになりました。やや面倒ですが、作業用のプロジェクトを分けるので、何か問題が起きた時に被害が少ない、というメリットもありそうです。
 
ここからは、Terrainの設定で木のオブジェクトを変更していきます。
 

現在使ってる木を確認する

今のプロジェクトで使っているTerrainの木を確認しておきましょう。
 
葉の色合いがあまり良くありません。全体的に暗い感じです。
 
URPの時の画像と比べてみると、この時は光が当たっている個所がかなり明るめに表示されていました。
MTreeでこんな感じになると良いのですが。
 
モバイル版のオブジェクトなので、木の幹がカクカクしてますね。
ポリゴン数が少ない分、負荷も低くて良いのですが、近づいてみると違和感あります。
 
下から上を見上げてみました。
 
葉がもっさり生えてる感じは好きなんですけどね。
 
もう一つの欠点は、HDRPに変えてからビルボードの木が表示されなくなったことです。
 
この状態ではLOD3あたりのオブジェクトが表示されてますが、もう少し離れてみると、
 
こんな感じになりました。本来であればビルボードが表示されるはずが、何も表示されません。
ビルボードに使っているテクスチャ画像がHDRPで対応していない形式、とかでしょうか。
 

MTreeで作った木に変更する

Terrainの木を「MTreeで作った木」に変更しましょう。
 
Treesでオブジェクトを選択し、「Edit Trees…」ボタンをクリックします。
 
Edit Tree」の「Tree Prefab」に作成したPrefabをD&Dすると、
 
Terrainの木が変わりました!
かなり良い感じですよ。
 
そして、ビルボードの木も表示されるようになりました!
ビルボードの色が暗いのが気になりますが、まずはこれで作業を進めましょう。
 

近くで見てみる

作った木を近くで確認してみます。
 
木と枝がリアルな感じです。
 
ポリゴン数が増えたので、幹もなめらかになりました。
 
木の根本が無い?と思っていると、地面に埋もれてました。
木を設置した場所にもよりますが、今回はTerrainで木を設置後に「木のオブジェクト」を変更したので、高さがずれてしまったようですね。そこまで違和感ありませんのでこのままで。
 

かなりキレイになりました

池の周りの木です。
 
光が当たっているところと当たっていないところの明暗が良くでています。
 
やはり葉の色はこんな感じが良いですね。
 
夏っぽい。

光が葉を透けて見える!

もう一つ、このアセットで素晴らしい機能があります。
それは「光が葉を透けて見える」ということ。
 
上から見た場合は普通なんですが、
 
下から見てみると、光が透けて見えるのが分かります。
 
Subsurface Scattering的な何かの技術なんでしょうか。
もしかしたら、HDRPだけの機能かも知れませんね。
 
こんな木が簡単に作れるのは素晴らしい!
 

まとめ 

MTreeアセットで作った木をTerrainに設定してみました。
 
UnityのバージョンやHDRPに切り替えていたこともあり、手順が分かるまでは苦労しましたが、最終的には良い木のPrefabができて良かったです。今回は一種類の木を作っただけですが、このアセットを使うといろんな種類の木が作れるので、場所によって木を変えて見るのも良いですね。
 
スポンサーリンク

コメント

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

  • コメント (0)

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

ブログの女の子を作る #75 夜をポイントライトで明るくする【UnityのHDRPライティング6】

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

最近のコメント

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

[当ブログについて]