非デザイナーでもBlenderで作れる次世代ローポリ樹木

3Dのスマホゲームで使用されている木というと、下記のような3Dモデルを思い浮かべるのではないでしょうか。
いわゆる「ローポリモデル」と呼ばれるもので、Unityのアセットストアでも"lowpoly tree"で検索すると、このようなアセットがたくさん販売されています。
このようなローポリの樹木がスマホゲームに使用されるようになって、ずいぶんと経ちました。このアセットもリリースから既に7年が経過しています。
また、一時期はこのローポリなスタイル自体がもてはやされて、広告などでも非常に多く使用されていました。いつかのAmazonのプライムデーの広告がこのスタイルだったと記憶していますが、それも遠い過去の話です。
その間、スマホの性能は飛躍的に向上し、もっと豊かな表現力を持つアセットが気軽に使えるようになりました。
ですが、いわゆるローポリ系とハイエンド系の中間に位置するような、いい感じのアセットは意外に少ない印象です。
実はBlenderで簡単に作れる
タイトル画像に使用した画像は、Unityエンジニアである筆者がBlenderで制作しました。
実はこのような木の制作過程は非常に簡単で、職人的な技術はまったく必要ないので、制作過程を解説しようと思います。
Sapling Tree Gen アドオンをインストール
まずはPreference > Add-onsで"Sapling Tree Gen"というアドオンをインストールします。

木の幹をシーンに生成
Add > Curve > Sapling Tree Genを実行すると、木の幹と枝がシーンに生成されます。

上記のスクショの画面左下に表示されている"Sampling: Add Tree"というボタンをクリックすると、詳細な設定項目が表示されます。
各項目の設定については、すでにこちらの記事が非常に細かい解説をして頂いているので、ここでは詳述を控えます。
https://horohorori.com/blender-note/add-ons/about-add-curve-sapling-tree-gen/
Ico Sphere
Mesh > Ico Sphereを実行すると、三角形で構成された球体を生成できます。
これの位置とスケールを調整して、枝のあたりに移動します。
ちなみにこの状態で、いわゆる「ローポリ」の木としては完成です。
このオブジェクトのコンテクストメニューからShade Smoothを実行すると、葉面のカクカク感がなくなります。

葉を作成
葉はパーティクルとして上記の球体の表面に生成しますので、まずはそのパーティクル要素を自作します。
重要なのは背景が透明な葉のテクスチャを使用することです。
Unityに取り込んだ時にこの透明部分はマテリアルのカットオフを適用して切り抜きます。
半透明なテクスチャは描画の負荷が非常に高いですが、透明部分をスパッと切り抜くカットオフは、それに比べてはるかに描画の負荷が軽くなります。
単純に一枚の板ポリだけでも十分ですが、下の画像のように3枚の板を組み合わせると色々な方向からより自然に見えるようになります。

厳密にいうと葉のテクスチャはPhotoshopなどで切り抜く必要がありますので、「非デザイナーでも作れる」は盛りすぎたかも知れません。
ですがそう謳ってしまった以上、この記事を読んで頂いた方がまず試せるように、下記に葉のテクスチャを添付しておきます。
透明部分が白く表示されているので何が貼られているのかよく分かりませんが、背景を透明に切り抜いた葉に、最低限の影を描画しています。
また、制作過程のキャプチャ画像では緑の葉を使用していますが、エンジニアの方ならきっとUnity側で色調整されたいでしょうから、添付した画像は白くしています。

葉のパーティクルを球体の表面に適用
球体のオブジェクトに対して、上記で作った葉のパーティクルを適用します。
パーティクルについては、こちらの記事が非常に詳しく解説されています。
https://vook.vc/n/5872

パーティクルをメッシュに変換
パーティクルのメッシュはそのままではFBXファイルにエクスポートできませんので、メッシュに変換します。

球体に葉のテクスチャを適用
球体の方にも葉のテクスチャを適用すると、パーティクルの隙間から球体が露出してしまっている箇所をいい感じに隠せます。
逆にいうと、球体の表面は完全にパーティクルで覆う必要はありません。
設定次第では、パーティクルを大幅に減らして、球体の大部分が露出している状態でもかなり自然に見せることができます。
どちらかというと、パーティクルは葉全体の輪郭線を自然に見せるための役割の方が大きいです。

球体に使用する方の葉のテクスチャも添付しておきます。こちらも白にしておきました。Unityにインポート後、マテリアルの設定からお好みで色を適用して頂ければと思います。

法線を調整
最後、これが一番重要なステップです。
パーティクルから生成した葉のメッシュの法線はバラバラなままなので、下の画像の左側の球体のように、黒い影が葉に強く当たりすぎて、板ポリ感が丸出しになってしまいます。
そのため、法線を調整する必要があります。
葉全体より少し大きい半球をシーンに追加して、その法線を葉のメッシュに転送します。
これにより、画像右側の葉のように影が目立たなくなり、板ポリ特有のチープな存在感が消え失せます。
また、球体表面が露出している部分も全く気にならなくなっているかと思います。
これこそが先ほど球体全体をパーティクルで覆う必要は無いと書いた理由です。使用環境が求める要件次第では、パーティクルの数をかなり減らしても自然に見えます。

Unityにインポート
上記で作成した木をFBXファイルとしてBlenderから書き出して、Unityにインポートします。
葉のマテリアルにアルファ値のカットオフ(例:Alpha Clippingをオンにする)を実行すると、下の画像のようになります。

いかがでしたでしょうか。
3Dモデリングの操作は一切不要で、思い通りの樹木を作ることができます。
Sapling Tree GenやParticle Systemの設定値をするだけで、無限のバリエーションを試せることも魅力的です。
ぜひ試してみてください!
1,000社以上の事業成長を支えた圧倒的な『スピードと柔軟性』で、御社のアイデアを最短で形にします。まずは無料で壁打ちしませんか?
無料相談はこちら「Unity3DTech」の関連記事

次世代AR技術を使用したバーチャル水槽
次世代AR技術であるVPS (Visual Positioning System)を使用したバーチャル水槽アプリの紹介です。 一度設置した水槽の位置をアプリが記憶しているため、次回起動時に同じ位置に水槽を再び表示することができます。

現実世界の地図データを活用したオープンワールドの自動生成
弊社で開発中のゲームJoggleで使用しているオープンワールド生成技術の紹介です。 地図データを取り込み自然なオープンワールドを自動生成することができます。

遅ればせながらChatGPTの回答を3Dキャラに喋らせて会話してみた
今盛り上がっているChatGPTを使って、ベタですが3Dキャラクターと対話可能なデモアプリを開発してみました。利用している技術について紹介します。