『Unityゲーム プログラミング・バイブル 2nd Generation』のレイマーチングとTimelineの章を執筆しました

6/29発売の『Unityゲーム プログラミング・バイブル 2nd Generation』を執筆しました。

『Unityゲーム プログラミング・バイブル 2nd Generation』

『Unityゲーム プログラミング・バイブル 2nd Generation』について、公式ページから紹介文を引用します。

Unityのゲーム開発現場で最も使われた決定版書籍が、大幅バージョンアップして登場! ゲームの開発現場で即実践できるスキルが身につく!

本書は、ゲーム開発で最も使われている「Unity」の入門や初級レベルを卒業した方向けの書籍です。ゲームの開発現場で、即実践できるスキルが身につくように、「37」の最新のトピックを網羅しました。

本書には、第一線の現場で活躍している23名の著者陣が参加しており、ゲーム開発のノウハウやTipsが満載されています。またほとんどのトピックでは、サンプルゲームがダウンロードでき、実際に動かしながら、実践的に学んでいくことが可能です。

Unityでのゲーム開発のさまざまな場面で、すぐに役立つ1冊となっています。

37のトピックのうち、私は次の2つを担当しました。

  • レイマーチング:基礎から応用まで
  • Timelineによる映像制作

この記事では私の担当した内容を簡単に紹介します。

レイマーチング:基礎から応用まで

サンプル11 距離関数の応用:無限複製編
サンプル13 距離関数の応用:無限複製とブーリアン演算の合せ技

このセクションでは「レイマーチング」という手法により、グラフィックスを描画する仕組みを紹介しました。

レイマーチングと似た名前の手法にレイトレーシングがありますが、どちらもレイ、つまり光線をプログラムでシミュレーションしてカメラに映る画像を生成する手法です。

レイマーチングでは、距離関数という数式で定義した形状に対して、レイとの交差判定を行うことで照明や反射などの計算を行います。 そのため、通常のUnityの描画パイプラインではできないような表現が可能になるということが特徴です。

このセクションでは、Unityのシェーダーのコードを記述してレイマーチングを実装します。 レイマーチングの基礎から応用まで解説するために、合計13個のサンプルシーンを用意しました。 少しずつ処理を加えることで、一歩ずつレベルアップしながら理解を深められるチュートリアル形式のサンプルシーンになっています。

サンプルプロジェクトは、筆者のGitHubにて公開しています。

このセクションで学べることとそのポイントを、以下にまとめておきます。

  • レイマーチングのアルゴリズムと本質
    • レイマーチングは魔法の道具ではなく、単なる衝突判定の手法
    • 数式(距離関数)によるプロシージャルなモデリング手法
  • コンピュータグラフィックスの基礎
    • レイマーチングが扱う範囲はあくまで衝突判定
    • ライティングは通常のシェーダーとまったく同じように実装する必要がある
    • Unityエンジンのシーンやライティング機能を利用せずに、グラフィックスを描画する一連の流れを学べるため、コンピュータグラッフィックスの学習教材としても有用

執筆の裏話

執筆の裏話としては作図にレイマーチングを利用しました。

よくあるレイトレーシングの原理(スクリーン上のピクセルに対応する向きのレイを飛ばして交差判定)を解説するための図が欲しかったので、レイマーチングで作図しました。

ちゃんとアニメーションもできるように作り込んだのですが、書籍だと静止画になってしまうのが残念ですね。

Timelineによる映像制作

Timelineによる映像制作

このセクションでは、UnityのTimelineを利用した映像作品の制作について解説しました。

このセクションで学べる項目は、以下の通りです。

  • uRaymarchingを利用したレイマーチング
  • Post-processing Stackの導入からビルトインエフェクトの利用、カスタムエフェクトの作成まで
  • Timelineの基本からカスタムトラックの作成まで
  • Cinemachineの基本的な使い方から、Post-processing Stackとの連携まで

映像の作成のためには、数多くのUnityの機能とAssetを組み合わせる必要があります。

それぞれのUnityの機能とAssetにフォーカスを当てた合計12個のサンプルシーンを用意しました。 サンプルシーンはチュートリアル形式で、一歩ずつレベルアップしながら理解を深められるようになっています。

サンプルプロジェクトは、筆者のGitHubで公開しています。

サンプル12 音楽と同期して演出をブラッシュアップ

執筆の裏話

これも執筆の裏話になりますが、デモのメイキングを書籍として出版する という個人的な試みに今回はチャレンジしました。

このツイートが伏線でした。

サンプルの完成形のデモが『Secret stage BOSS』です。Revision2021のPC Demo Compoで初リリースしました。

グラフィックスは私(@gam0022)、サウンドはさだきちさん(@sadakkey)が担当しました。

『Secret stage BOSS』は『2nd stage BOSS by 0x4015&YET11』というデモシーン歴史に残る伝説級のデモのオマージュ作品です。

自機やボスが登場するシューティングゲーム風のストーリーを、自分たちなりのビジュアルと音楽のスタイルで再現しました。

GitHub上でUnityプロジェクトを丸ごと公開しているので、もし興味があれば参考にしてください。

おわりに

6年前にレイマーチングと出会ってから、レイマーチングの面白さに魅せられ続け、レイマーチングに関するさまざまな情報を発信してきました。 今回、Unityの一般ユーザー向けの書籍でレイマーチングについて解説をする機会をいただけたことをとても光栄に思います。 これまでシェーダーと縁がなかった方にもシェーダーに興味をもってもらえれば幸いです。

日本語で書かれたレイマーチングの入門情報はかなり充実してきましたが、その次のステップの情報が不足しているように感じていました。 本書ではレイマーチングの中級者向けの情報として、距離関数によるモデリングや本格的なライティングまで解説しました。 レイマーチングで球体のレンダリングはできたけど、その次のステップが分からないという方にぜひ読んでいただきたいです。

本書は定価8580円と気軽に購入しづらいかもしれませんが、フルカラーの1112ページ、扱うテーマの広さ、得られる情報の密度を踏まえると妥当(むしろお買い得!)な値段だと思います。 初版部数はAmazonでの予約数をもとに決まるそうなので、ぜひAmazonから予約をお願いします!

追記(2021-08-21)

7/29の「Unityゲーム プログラミング・バイブル 2nd Generation 出版記念トーク グラフィックス編」にゲスト出演しました。

Unityゲーム プログラミング・バイブル 2nd Generation 出版記念トーク グラフィックス編

comments powered by Disqus

gam0022.net's Tag Cloud