Unityでインディゲームを作る!

Unityでのゲーム制作を目指し、それに関わる話題についてのブログ

BlenderでFBX出力時の座標軸設定とUnityインポート時の設定について

FBX export settings_cover

 今回は、Blenderで制作したモデルをFBXとして出力してUnityにインポートする際の、特に座標系の重要な設定について書きます。

 

 UnityとBlenderを使う上で注意すべきことは、Unityは左手系であり、Blender右手系であるということです。これは座標系の違いですが、Blenderでは更に画面上はZ軸が上方向でY軸が奥方向となっているので、またここで混乱が生じます。

 この混乱において出力されたモデルは、Blender上では立っていたのに、Unityでは寝そべったりするものだから、困惑とストレスは限界に・・・。

 

 UnityのためにBlenderを使う上で、ここは一番のストレスの元だと思っています。Blenderで楽しくモデリングして、完成したものをそのままUnityで使いたい、動かしたいだけなのです。よって、本記事では出来るかぎり簡単な手順を確立したいと思います。

 

 なお、Blenderファイルを直接Unityに取り込むこともできますが、今回の記事ではそのケースについては触れないのでご了承ください。

 

画面に見たままを設定する

Blender_Apply_Operation

 Blender上で3Dモデルが完成し、Unityへ出力する準備が整いました。まずはCtrl + AApplyを実行し、Transformを初期化します。そして、対象オブジェクトを選択した状態で、File > ExportメニューからFBXを選択すると出力ダイアログが出て、右側に設定メニュー群が表示されます。

FBX_export_settings

 今回は選択したオブジェクトを出力したいのでLimit toはSelected Objectsを選択します。Object typesは"Mesh"を選択。ボーンがあるモデルの場合は、Armatureも複数選択します。Apply Scalingsは"FBX Units Scale"にすると、Unity上で変換やスケール調整をする必要がなくなります。

 

 さて問題の軸の選択です。Blenderは右手系ですが、実際の画面上ではZ軸が上方向にに向けられています。例えば、画面上でモデルを立たせると、座標軸の正しい向きを考えるとモデルは実は寝そべったような向きになっている、ということになります。

 ただでさえ右手系ということに混乱しているのに、この座標軸の関係性は考えれば考えるほどよく分からなくなってきます。

 

 なので単純に考えます!画面に映ったまま、見たままの状態でそのモデルはどこを上としているか、前方にしているかを見ることで、それを設定していきます。

Blender_XYZ

そのモデルの頭はどの軸を指していますか?

そのモデルはどっちを向いていますか?

Wood Horse for export test

向きが分かりやすいように木馬

 よって、Forwardは-Y Forward、UpはZ Upとなります。Apply UnitとUse Space Transformationはチェックを入れたままにします。モデルに埋め込まれるアニメーションが無ければ、Bake Animationのチェックは外しましょう。GeometryやArmature項目は必要であれば各種設定します。

 

 というわけで、Blender上で見たままの状態をそのまま出力する、という方針の下で設定をしました。とにかくBlender上での状態をそのままに、シンプルに設定するということです。最後に出力先のパスを選択とファイル名の入力を行い、Exportを押します。

 

Unity上でのインポート設定

WoodenHorseImported

インポートした時点での木馬は逆さ立ちしています

 出力したfbxファイルをUnityにインポートして、対象のモデルを選択してインスペクターを開きます。

 それでは第二段階目のインポート設定へと移ります。マテリアル、アニメーション、ボーンについては省略。

Import Settings for model

 インポート設定の一番左のタブ、Modelを開きます。今回の記事におけるキーとなる設定が、上から二番目のBake Axis Conversionです。

 これにチェックを入れると、Unityとは違う座標系を持つソフト、つまりこの場合はBlenderで作られたモデルの座標系を変換してくれます。チェックを入れてApplyで変更を適用すると、プロジェクト・ビュー上のモデルの向きが変わるはずです。

 

Wooden Horse completed

 これで、そのモデルをシーンビューにドラッグしてヒエラルキーに追加すると、冒頭の画像のようにBlenderで見たままの姿で表示されているのが確認できます。

 

今回説明した手順を再確認!

Blenderで『見たまま』モデル基準から上方向、前方向を設定する。

Forward : -Y Forward

Up : Z Up

 

・Unityにインポートし、インスペクター上のModelタブでBake Axis Conversionにチェックをいれ適用する。

 

まとめ

 というわけで、出来る限りシンプルに、間違えにくい、2つの手順をまとめてみました。何度やっても、ちょっと忘れると直ぐに混乱してしまうポイントなので、今回の記事で出力の手順を確立できたらな、と思います。

 

Unity使いがGodotを触ってみた感想を率直に語る!

GODOT Game Engin_Cover

 最近話題のオープンソースゲームエンジンGodotをとうとう触ってみたので、その率直な感想を書いてみたいと思います。はっきり言って、Godotかなり良いです!『Unityでインディゲームを作る!』というタイトルのブログをやっていますが、Godotに肩入れしたくなるほどには、かなり良い印象を持ちました。

 

 なお、今回のレビューについては、ファースト・インプレッションを大事にしたいという狙いがあるので、そこまで深くGodotを触っていません。公式の2Dゲーム・チュートリアルを終え、2Dに関する主要な機能をとりあえず使えるようになったくらいです。期間としては大体一週間程度でしょうか。

 なので理解が足りない部分が多くあるはずですが、あくまでファースト・インプレッションという点をご了承ください。Godot 4.1.3を使用しています。

 

Godotとは!?

 現代において一般人も使うことのできる代表的な汎用ゲームエンジンと言えば、UEとUnity、そしてGodotになるかと思いますが、Godotについて自分は名前こそ知っていたけれど、一度も触ったことがなかったのでした。ここ数年Unity一筋、というか自分はそもそもゲームエンジンを触り出したのもUnityが初という来歴です。

 

 これには理由があって、単純にUnity以外のゲームエンジンを触っている余裕が時間的にも精神的にもなかったというのがあります。Unityの使い方を覚えるのに精一杯だったし、他のエンジン触るならUnity触っとけよ、という話です。

 あとGodotを『簡易』ゲームエンジンのようなものだと思い込んでた、ということもあります。今回、触ってみて、いや全然色んなこと出来るし機能性十分じゃん!と正直驚きました。3.x以前がどうだったのかは知りませんが、Godot 4.1.3はしっかりしたゲームエンジンでした。

 

 Godotはオープンソースで無料で使うことができ、ライセンスフリーであり、これで作ったゲームは完全にあなたのモノであることを謳ったゲームエンジンです。自分はUnity Asset Storeなどを含む、巨大なUnityコミュニティを頼りにしたかったのでUnityを使い始めたわけですが、自分で色々出来る人にしたらGodotを使わない理由が無いように思えます。

 

Unityとの違い

 Unityとの比較論となると、抽象度が違う、という言い方が相応しいのかもしれません。GodotはUnityよりもゲームの構造に対して、もっと抽象度を高く捉えていて、それがより直感的な使い心地を生んでいると思います。

 

 どちらも結局は『汎用ゲームエンジン』なのであり、出来ることやユーザーがゲーム制作において繰り返していく作業に本質的な違いが出るわけがありません。ゲーム構造への切り口や捉え方が異なっていて、それが使い心地を違うモノにしている、ということです。(もちろんUIの違いもありますが)

 

 具体的な差異で言えば、UnityではGameObjectという入れ物に色んなコンポーネントを組み込んで、様々なオブジェクトを作り、時にはそれをPrefabにして、ゲーム空間であるSceneにそれらを満たしていくことでゲームを構成しようとします。

 それに対して、GodotはとにかくSceneにNodeをツリー構造として組み込んでいき、そのScene同士でツリー構造を作り、それをゲームとする、というエンジンです。

 

 ここで注意が必要なのはUnity SceneとGodot Sceneでは微妙に立ち位置や扱いが異なるという点です。GodotのSceneはSceneとしても使えるしPrefabのようにも使える、UnityのSceneよりも柔軟な(抽象度の高い)存在であり、Sceneファイルを読み込んでInstantiate(生成)する、というPrefabのような使い方もされます。個人的には、Sceneという単語から生まれるイメージに反する概念だと感じます。

 つまり、GodotシーンはSceneでもあるし、GameObjectのような働きもするということになり、これはUnity使いからすると混乱します。GDObjectとかにした方が良くない?とか思いつつも、自分としては『面白い』扱い方だなとひとまず飲み込みました。

 Unity視点からすれば、Unityゲームの三大構成要素であるScene、GameObject、コンポーネントをGodotではより抽象化し、ゲーム構造を更に単純化していると捉えるべきなのかなと現状考えています。

 

 Godotでは全てはSceneによって構成されており、SceneはNodeのツリー構造によって構成されている、ということです。ここでNodeとはなんなのか、ということになりますが、Unityのコンポーネントのようであり、しかし、そのまま独立して存在もできるので、GameObject的な性質も持っていることになります。

 自分としては、必要なコンポーネントを組み込み済みの既成のGameObject、というのがGodotのNodeに近い存在かなと思いました。UnityはどんなコンポーネントもなんらかのGameObjectに組み込まなければいけないので、ここはかなり大きな違いです。

 

 Godotは抽象度が高いというのはこういうことで、Unityよりもゲーム構造が簡略化されており、よりモダンで軽快なUXになっています。エディター自体も軽量で良いですね。少なくともちょっと触る分にはGodotの方がかなり直感的に素早くゲームを作れるだろうなと思いました。ここはある程度大きくて複雑なゲームを作った時にどうなるか、という懸念もあるかとは思います。しかし、現状の自分ではそこは分かりません。

 

GDSciptが最高だった件

 GDScriptとはGodot独自の専用スクリプト言語です。独自言語とかめんどくさいし、覚えても潰し効かなくない?と思ったソコのあなた!自分も最初はそう思っていました。しかし、その統合性の高さと使いやすさ、学習曲線の高さはGodotを使う理由にすらなるくらいです。

 公式ドキュメントに『とりあえず3日間試してくれ!良さが分かるから!』と書かれていますが、この言葉を信用してぜひ使ってください。UnityでC#を使っている人なら、チュートリアルを通してすぐに覚えることが出来るはずです、たぶん。

 

 自分はGDScriptに対しての興味はあまりありませんでしたが、評判が良いしせっかくGodot触るならまぁ・・・という程度のモチベでした。正直、あるゲームエンジンを試しに触るとして、その専用言語を覚えようという気になる人はほとんどいなくて当然ではあります。

 しかし触り始めて2日目ほどで、いやこれはむしろC#よりも良くね?というほどになりました。今では、GodotでわざわざC#使う意味なくね?なんかメリットあるの?くらいに思います。

 

 それくらい使いやすくGodotとの統合性も高いんです。動的言語についてはPythonをちょっと触ったことがある程度でしたし、Pythonも特に好きな言語でもなかったのですが、このGDScriptの抽象度の高さがスクリプト言語としてはやっぱちょうどいいんですよね。Python風とされていますが、Luaの影響も受けており、自分はLuaに興味はあったのでGDScriptに触って結果的にかなり良かったです。

 

 UnityにおけるC#もかなり良いんですけど、ちょっとしたことをやろうと思った時にC#がやや重たい(処理が重い、という意味でなく)時があるのは事実です。GDScriptならちょっとしたことを本当にちょっとしたコードで書けるようになります。

 もちろん動的言語のパフォーマンスについては考慮する必要はありますが、それについてはGodotはC++を使うこともできるので、そこは簡易ゲームエンジンではないということです。

 

 というわけで、自分のGodotについての良い印象の半分くらいはGDScriptが占めている、ということが伝わればなと思います。

 

Godotをサブエンジンとして

 『Unityでインディゲームを作る!』というブログをやっていることのアイデンティティが揺るぎそうですが、Godotをサブエンジンとして採用することは確定しました。

 

 2023年のRuntime Fee問題という悲しい事件が起こった時、自分としては結構リアルに目の前が真っ白になりました。かなりUnity使えるようになってきてて、いよいよゲーム作るぞーー!となった時に、Unityの将来を危ぶむ事態になって正直落ち込みました。

 『ひとつのツールに依存しすぎるのが悪い』『永遠に存在するソフトウェアなんてない』というのは正論ではあるんですが、色々使うよりも一つのツールを使い続けて練度を上げることによって得られるモノも実際あるじゃないですか。とは言え、今回の件でUnityに何かがあった時はどうするか、という問題について考えざるを得なくなりました。

 

 Runtime Fee問題は一応の決着を迎えたとは言え、汎用ゲームエンジンを巡る状況は色々な観点から楽観視できないものになったと思います。なので、保険的な意味合いからもGodotをとりあえず触ったわけですが、Godot自体との出会い以上に思ってもみない収穫もありました。

 

 それは自分で思っていた以上にGodotを使えるようになるまでのスピードが速かったということです。これはGodotのUI/UXがかなり良い、ということもありますが、単純に自分の中のある、Unityでの経験が活きたということだと思います。

 『Unity(ゲームエンジン)だけ使えてもしょうがない』とはよく言われていることですが、ゲームエンジンとは乱暴に言えば、ゲームで良く使われる機能の集合体なのであって、Unityも当然汎用的な機能を汎用的な形で提供しているのであり、それらを真に使いこなせるならば、普遍的な能力は身に付いているはず、と思うのですがどうでしょうか?

 

 例えば、UnityにはPro Builderという3Dモデリング・ツールやグラフ形式のシェーダー作成ツールShader Graphがありますが、自分はBlenderモデリングやシェーダー制作の基礎力を鍛えたことでUnity内でこれらのツールを使えるようになりましたし、そして、またUnityで覚えたことをGodotでも活用出来たのです。

 

 つまり、『Unityだけ、ゲームエンジンだけ使えてもしょうがない』のではなく、Unityの各機能を使いこなせるようになれば、ちゃんと他のソフトでもその経験は活かせるのだ、と確証を得られたのです。もちろん現実的にはUnityの全ての機能に汎用性があるわけではないでしょうが、それでもUnityを使い続けてきたのは間違いではなかったなと思いました。

 なので、Godotをサブエンジンとして少しずつ触っていくとは思いますが、今後も間違いなくUnityをメインエンジンとして使っていくつもりです。なので『Unityでインディゲームを作る!』というスタンスは変わりません。それはUnityにきちんと向き合えば、その経験がGodotにも活かせると分かったからです。

 

まとめ!

 Godotについて、ひとまず触ってみた感想をまとめました。サブエンジンとしては迷いなく採用です。Unityとは異なる考え方を持ったゲームエンジンに触ったことで、視野も広がりました。

 UnityのRuntime Fee問題はUnity使いとしてはもう大ダメージを喰らう事件だったのですが、結果としてGodotにスポットライトが当たったことはインディゲーム界にとっては良かったことだったのかもしれません。

 

 というわけで、Godotについては一区切りついたので自分はUnityに戻ります。2Dゲームを遊びとしてGodotで作っていくかもしれませんが、あくまで本ブログの本懐はUnityでのゲーム制作です。また気持ちを新たにして目標に向かっていきたいと思います!

 

UnityにおけるUI作成を学ぼう! Unity e-book "User-Interface design and Implementation in Unity" 感想

User Interface Design and Implementation in Unity

The best UI is the one you don't notice.

 "最高のUIとは、あなたがそれをUIだと気づかない"。という一文からこの本は始まります。良いUIというものは透明であり、良いUIよりも悪いUIについて語られることの方が多いのはこれが理由です。

 というわけで、UnityにおけるUI制作及び、新しいUIフレームワークであるUI Toolkitを解説した、Unity公式によるe-book User-Interface design and implementation in Unityのレビューを書いていきます。

 

UIについて学ぶ

 Unityの新しいUIフレームワークとして正式版のUI Toolkitが出たのが2022年。その年末に出されたのがこの本ですが、実は純粋なUI Toolkit解説書というわけではありません。しかし、出発点としては非常にためになったのでオススメしたいです。

 そして、このe-bookとセットとなる公式デモプロジェクトがあります。2Dサンプル・プロジェクトとして出されていた"Dragon Crushers"を題材にUI Toolkitで作り直されたUIを含み、C#スクリプトによるコントロールなどを学ぶことが出来ます。具体的な実装についてはこのサンプルで学習することになるでしょう。

 

構成について

 純粋なUI Toolkit解説本ではないと書きましたが、まずはゲームにおけるUIの意義についてから始まり、プロダクションにおけるUIの作業工程などについても解説されます。UIに関わる全般的な知識も含まれているということです。結果として、UI Toolkitの解説が薄くなってる、という側面が無くもないですが。

 昨今のゲームでは珍しくもなくなった、没入感を高めるDiegetic UIについても語られますが、同時に戦略性やデータの重要度が高いゲームにおいてはシステマチックなUIが推奨されるだろう、というようなことも語られます。つまり、ゲーム性に合わせたUIを!というデザイン論も語られているということです。

 

 そして、UI作成はUI用の素材を用意することが主な仕事なのでアセットの準備に関する章も含まれます。PhotoShopを始めとした各ソフトウェアの解説が記されているので実践的です。テクスチャなどのアセットの注意点などもここで扱われます。

 

2種類のUIシステム

 Unityにおいては2種類のUIフレームワークが存在しています。従来のUnity UIと新しいUI Toolkitです。UI ToolkitはUnity UIと比べると現状出来ない部分もあるので、この2つを状況に上手く使い分けるということもあるでしょう。この本はこの2つのシステムを比較しつつ各々解説しています。

 

 まずはUnity UIの解説から始まります。Unity UIは本質的にはゲームオブジェクトなので、スクリーン上のオーバーレイではなくシーン中に置いたりUI Toolkitでは出来ないことも可能です。3つのレンダリング・モードなどの各種設定がここで解説されます。

 ここで重要なのはPPU(Pixel Per Unity)などについての解説でしょうか、アセット制作において直接的に影響を与える要素なので確認しておきたいです。

 

 そして本題のUI ToolkitですがWeb技術を下敷きにしているので、HTMLやCSSの経験があれば活かすことが出来ます。これは大きな利点であり、HTMLなどを少しでも触ってて良かったなと思いました。

 

 ただこの本の少し残念な所は、C#とUI Toolkitの連携についての具体的な解説が少ないという部分です。そこはデモプロジェクトのサンプルコードを見てくれ!という感じなのでしょうが、もう少しあっても良かったと思います。

 サンプルプロジェクトへの言及や解説もこの本の後半ありますが、技術的な解説というよりかは各UIでやってることをハイレベル視点から解説、紹介という感じで詳細や実装に関してはサンプルで確認してね!という感じになっています。ここら辺はちょっと駆け足気味ではありますね。

 

まとめ

 というわけで、個人的な不満もないわけではないですが、基本的にはUnityにおけるUI作成を学ぶことができ、UI Toolkitの入門書的な役割を持つ本書はスタート地点にふさわしい一冊だと思います。

 UI Toolkitについては本ブログで積極的に取り上げていきたいトピックなので、その際の参考資料として、この本を活かしていきたいです。

 

良いソフトウェア・デザインとは? " A Philosophy of Software Design " 書籍レビュー

A Philosophy Of Software Design_Cover

 コーディングが出来たとしても、ソフトウェア・デザインとなるともっと大きな視野が必要になる・・・と悩んでいた時にちょうど巡り合えた一冊についての感想をまとめたいと思います。とても良い本ですが、残念ながら日本語版は現在出ていません。

 

 この本、A Philosophy of Software Designソフトウェア・デザインに関する本です。そして、その主なテーマは『複雑性』となります。

 

複雑性とは

 この本は『複雑性 (Complexity)』について書かれた本です。良きソフトウェア・デザインにおいては、複雑性の発生を抑え、存在する複雑性をコントロールすることが重要であると著者は説きます。

 プログラミングは自由度がかなり高いので、なんらかの指針が必要になるわけですが、その指針のひとつが「複雑性」ということですね。

 

 この本ではまず複雑性そのものについての解説から始まり、その性質やそれにより引き起こされる問題、発生する原因について語られます。そして、じゃあこの複雑性をコントロールするためにはどうすればいいか?を探っていく、という構成です。

 

 しかし、例えば『短いコードの方が良い』みたいな直接的なことはあまり書かれていません。もちろん結果的に短いコードが複雑性の低いコードになることが多いでしょうが、それよりももっと広い視野からの普遍的な『考え方』を示しているのが、この本の良い部分だと思います。ただ、そのようなアプローチだと、内容はどうしても抽象的なものになってしまうでしょう。

 

地に足ついた抽象論

 著者は大学でソフトウェア・デザインのクラスを長年担当しており、この本はその生徒達とのやり取りの中で培われた知見を元に書かれたものです。

 前書きで「抽象的で分かりにくいかも・・・」と著者自身が注意書きしていたりしますが、しかし実際に読み進めるとかなり分かりやすく明快な文章でソフトウェアデザインの抽象的な部分を解き明かしていっています。

 

 もちろん理解する上で、ある程度のプログラミング経験が必要になるとは思います。しかし、地に足ついた抽象論というか、とにかく内容は分かりやすく生徒達に慕われているんだろうなぁと分かるくらいに物腰の柔らかい文章なので、読んでいてとても面白いしストレスはありません。

 

 ここはまさに本の中でも書かれている、ただ動くだけのコードではなく、それを読む人のためのコードでなければならない、というソフトウェアデザインの哲学をこの本自身が体現していると言えます。

 

Deep Moduleと抽象化

 この本で一番画期的な概念だと思ったのは、Deep Moduleというものです。直訳すると『深いモジュール』となりますが、モジュールはオブジェクト指向プログラミングではクラスやメソッドを指すので『深いクラス』を作ろう!というような話になります。

 クラスをどう設計するべきかをこれほどまでに端的に言い表す言葉はそうそうないんじゃないかと感銘を受けました。この本を読んで良かったなという部分です。

 

 つまり、クラス内部にはたくさんの知識が収納されていて機能性が充実しているが、そのインターフェイスが狭く絞られているべき、というのが『深いクラス』なわけですが、これは抽象化とカプセル化の重要性を同時に示しているとも言えます。

 この本に書かれている主なテクニックは『抽象化』であり、抽象度のコントロールです。複雑で猥雑な部分を如何に抽象化して、人間にとって分かりやすくしていくか、という考え方を示す本になっています。

 

コメント

 あとこの本の良い所が、とにかくコメントの重要性を強く訴えている部分です。おそらく全体の三分の一近くはコメントについて書かれています。それくらいコメントの重要性を強調しているので良い刺激になります。

 

 本著ではロバート・マーティン氏によって書かれた『クリーン・コード』について、二回ほど明確な批判をしているのですが、名著と言われる『クリーン・コード』の中で『コメントとは失敗である』とマーティンさん書いていたんですね。

 それに対して、コメントにはコードだけでは達成できない別の働きがある!コメントとはそんなネガティブなものではない!と著者は強く反論します。ここはなんか笑ってしまいましたね。

 

 このくらいにコメントについて強い想いを持っていますし、コメントこそが複雑性への対抗手段であると書いています。

 コメントは今までどうしても軽視したり、後回しにしがちな部分だったので、このくらい言ってもらえた方がコメントに向き合う気持ちにはしてくれますね。コードをただ書くだけでは駄目だ・・・と痛感していたので、この本は良い薬でした。(良薬は口に苦し)

 

まとめ

 というわけで簡単にですが、A Philosophy of Software Designを読んだ感想をまとめてみました。より高い視点からプログラミングを考える、という内容ですが全然堅苦しくないし、文量もそこまで多い本ではないので割と直ぐに読める本だと思います。

 著者自身も読者がプログラミングを楽しくできるようにしたい!という気持ちから書いた本なので、気軽に読んでほしいとオススメしたい一冊です。

 

Unity e-book "The Universal Render Pipeline : CookBook Recipes for Shader and Visual Effects"を読んだ感想

URPcookBook_Cover

 URP(Universal Render Pipeline)をより高度に使いこなすための12個のレシピをまとめたe-bookが、今回取り上げる"The Universal Render Pipeline :  CookBook Recipes for Shader and Visual Effects"です。

 

 中級者から上級者までの一定以上のUnity経験を持つ人が対象であり、基本的な機能の説明も含むにしろ、応用的な内容を多く含みます。しかし、間違いなく実践に使える、ヴィジュアルを確実に向上させるテクニックが記載された一冊となっています。

 著者による公式サンプルプロジェクトGitHubで公開されており、本e-bookはこれを土台にして各テクニックについて解説していくという形式です。なので、詳細はサンプルプロジェクトを直接確認する必要があります。

 

 個人的にはまだついていけてない内容もあるのですが、この本をきっかけによりハイレベルなテクニックに触れることが出来たのが良かったです。

 

各テクニックについて

 ステンシル(Renderer Feature)、インスタンシング、トゥーンレンダリングおよびアウトライン、アンビエント・オクルージョン、デカール、ウォーターシェーダー(シェーダグラフ)、LUT(カラー・シェーディング)、Lighting、影描画、Light Probe、スクリーン・スペース・リフラクション、ボリューメトリック(シェーダーで雲を作る)

 というのが、この本で解説されるテクニックの全てです。対象は中級者以上ということですが、人によっては既に知っている内容が多くあるかもしれません。デカールの章なんかは単純に新機能の紹介、という感じです。

 

 Unity公式から過去に公開されたテクニックの再収録もあります。例えば、ボリューメトリックの章における雲シェーダーは動画が既に公開されていますし、他の章もなんらかの形で公開されているはずです。

 とは言え、今回はそうしたテクニックを一冊の本としてひとまとめにしたことに価値があると思うので、自分の気になった部分や知らなかった情報だけを読む、で全然良いと思います。各章はそれぞれ独立しており、互いに参照しあってるということもありません。

 

サンプル・プロジェクトについて

 2023年9月上旬にMITライセンスが追加され、その範疇で自由に使えるようになったようです。これは活用しない手は無いと思います。

 トゥーン・レンダリング及びアウトライン・シェーダーのサンプルに関してだけは不満がありますが、それ以外は色々触ってるだけでも勉強になり、そこまで複雑なプロジェクトではないので扱いもしやすいです。

 

感想

 この本については直接的かつ具体的なテクニックをまとめたモノであり、それに対応したサンプルプロジェクトも公開されているので、それを自分で触って確かめることが大事だと思います。なので、感想を挟む余地はあまりないのですが少し書きます。

 

 まずは、だいぶURPも仕上がってきたな、という点。この本で作られているシェーダーはシェーダーグラフを使って作られているし、基本的な機能でも十分なグラフィックス・クオリティが出せるということをこの本で証明していますよね。(HLSLをCustom Functionノードに書き込んでたりはしてますが)

 URPは将来的に既存のビルトイン・レンダーパイプラインと置き換わる予定なので、単純にその機能や性能が向上していることは嬉しいし、期待はどんどん高まります。

 

 現状、この本に含まれている内容で理解が追いついていない分野があったので、そこを確認でき今後の課題に出来たのも収穫でした。プログラマーとしての更なるレベルアップを目指すうえで指針を示してくれる一冊だと思います。

 というわけで、今回はUniversal Render Pipeline CookBookについての感想を書きました。Unityさんには今後とも価値あるe-bookをどんどん発行して頂きたいです。