DirectX 12 の魔導書 3D レンダリングの基礎から MMD モデルを踊らせるまで

ダイレクトエックスジュウニノマドウショ スリディーレンダリングノキソカラエムエムディモデルヲオドラセルマデ

DirectX 12 の魔導書 3D レンダリングの基礎から MMD モデルを踊らせるまでの表紙
その他
著者:
川野 竜一(カワノ リュウイチ)
価格:
¥5,060
出版社:
翔泳社
出版日:
2020年02月13日頃
ISBN:
9784798161938
在庫:
1
判型:
単行本
中級者向け
3Dグラフィックスデザイン・グラフィックスC++DirectX3DCGゲームプログラミンググラフィックスプログラミングアニメーションポストエフェクトMMDコンピュータグラフィックス

なぜ注目されているか

総合276位 言及 3 件

書籍紹介

複雑なライブラリも、
一歩ずつ進めれば怖くない。

「DirectX 9〜11 に比べて超高機能 / 高性能だと聞いたけれど、
複雑すぎて何をしているかわからない」

「ゲームエンジンのメンテナンスをするために、
最新の DirectX の基礎を知りたい」

「フルスクラッチで MMD のモデルを
表示 / アニメーションさせてみたい」

そんな C++ プログラマーに向けた、
DirectX 12 の「導きの書」がついに登場!

◆3D グラフィックスの基礎
◆グラフィックスパイプラインとステージ

◆PMD データの読み込みと描画

◆VMD データの読み込みとアニメーション再生

◆IK

◆ポストエフェクト

など、本当に知りたかった
DirectX 12 プログラミングの基本がこの 1 冊に!!

DirectX は初めてという人も、
DirectX 9 や 10 で止まってしまっている人も、

本書を心強い相棒にして、挑戦の旅へと出掛けましょう!

技書の森解説

DirectX 12 は、GPU への命令の組み立てやリソースの管理を開発者側に委ねる設計になったことで、三角形を一つ表示するまでに必要な準備が DirectX 9〜11 の時代より大幅に増えた API です。『DirectX 12 の魔導書 3D レンダリングの基礎から MMD モデルを踊らせるまで』 (川野竜一 著、翔泳社、2020 年 2 月刊) は、その準備を一つずつ順番に積み上げ、ウィンドウの表示と画面クリアから始めて、MMD (MikuMikuDance) のモデルデータを読み込み、モーションデータでアニメーションさせるところまでを一本の道筋で到達させる C++ プログラマー向けの解説書です。版元の紹介文が DirectX 12 の「導きの書」と呼ぶとおり、目次は理論、実践、応用、ライブラリ活用の順に段階を踏む構成になっています。

全 5 部 18 章の構成、画面クリアから MMD モデルのアニメーションまで

構成は全 5 部 18 章です。Part 1 の基礎理論編 (Chapter 1〜2) で本書が使う C++ の機能と数学、初歩的なレンダリング理論、ハードウェアの基礎知識、DirectX の歴史を押さえたうえで、グラフィックスパイプラインとシェーダーの役割を整理します。Part 2 の実践編 (1) にあたる Chapter 3〜6 は、最初のプロジェクト作成と Direct3D の初期化、画面クリア、頂点バッファーとシェーダーを経て三角形ポリゴンを表示し、テクスチャの貼り付け、行列による座標変換と回転アニメーションまで進みます。Part 3 の実践編 (2) にあたる Chapter 7〜13 が本書の中核で、PMD 形式のモデル読み込みと表示、法線と深度バッファー、マテリアルとトゥーンシェーディング、コードのリファクタリング、スキニングと VMD 形式のモーション再生、インバースキネマティクス (IK)、マルチパスレンダリング、影行列とシャドウマップを扱います。Part 4 の応用編 (Chapter 14〜15) はマルチレンダーターゲットによるディファードシェーディング、ブルーム、被写界深度、スクリーンスペースアンビエントオクルージョン (SSAO) へ、Part 5 のライブラリ編 (Chapter 16〜18) は imgui、Effekseer、DirectXTK による文字列表示と、周辺ライブラリの組み込みを案内します。サンプルコードは付属データとして版元サイトから提供されています。

DirectX 12 が難しい理由と、部品を一つずつ足していく本書の設計

DirectX 11 までの API は、描画に必要な状態の組み合わせやメモリの整合性をドライバー側がある程度面倒を見てくれる設計で、開発者は比較的少ない手順で絵を出せました。DirectX 12 はその隠れたコストを取り除き、パイプラインステート、ルートシグネチャ、リソースをシェーダーへ見せるための記述子、コマンドリストとその実行順序の制御を開発者が明示的に組み立てる代わりに、CPU 側のオーバーヘッドを減らし、複数のスレッドで描画命令を並列に用意できる自由を得ました。学習上の難所は、この明示的な部品がそろわないと最初の三角形すら出ないことで、個々の部品の意味を知らないまま初期化コードを写すと、どこを変えれば何が起きるのかが分からなくなります。本書が Chapter 3 と 4 で初期化、画面クリア、頂点バッファー、シェーダー、パイプラインステート、ルートシグネチャと部品を一つずつ足しながら三角形へ到達させるのは、この依存関係を順番に体験させるためです。ゴールを MMD モデルに置いた設計にも学習上の効果があり、PMD と VMD という公開されたデータ形式を扱うことで、頂点 / インデックス / マテリアル / ボーン / モーションといった 3D モデルを構成する要素が、抽象的な説明ではなく実データの読み込みとして順番に登場します。

スキニングと IK、マルチパスから SSAO へ広がる後半の読みどころ

ポリゴンが出た後の章にこそ本書の厚みがあります。Chapter 10 のスキニングでは、ボーン情報からツリーを構築し、頂点シェーダーでボーン行列の配列を扱い、クォータニオンと回転行列の関係を踏まえて VMD のポーズとアニメーションを再生し、ベジェ曲線による補間まで実装します。Chapter 11 は余弦定理を用いた簡易的な IK から CCD-IK へと段階を上げ、PMD のデータに合わせた実装へつなげます。Chapter 12 以降のマルチパスレンダリングは、レンダリング先をテクスチャに切り替える発想を土台に、ポストエフェクト、シャドウマップ、ディファードシェーディング、ブルーム、被写界深度、SSAO へと同じ仕組みの応用として展開されるため、個別のテクニック集ではなく一つの考え方の広がりとして理解できます。Part 5 で imgui の GUI、Effekseer のエフェクト、DirectXTK の日本語を含む文字列表示を組み込む章は、自作の描画基盤を実際の ゲーム開発 の道具として使える形へ近づける実務的な締めくくりです。

C++ と数学の前提、DirectX 12 を独学する人の向き不向き

前提として、C++ でクラスやポインター、標準ライブラリを使ったコードを読み書きできること、行列とベクトルの基本を思い出せることが求められます。本書は Chapter 1 で使用する C++ の機能と数学を自ら補いますが、言語そのものの入門は目的にしていません。DirectX は Windows 向けの API なので、Windows 上で開発環境を用意できることも前提です。一方、Unity や Unreal Engine のようなゲームエンジンの上で作品を完成させたい人には、ここまで低い層を自分で組む必要は通常なく、遠回りになります。刊行は 2020 年 2 月で、その時点の DirectX 12 の基本機能を扱っており、レイトレーシングのような後続の拡張機能は目次に含まれていません。

自前の描画エンジンやツールを作りたい人、ゲームエンジン内部の描画層を保守する立場になった人、そして版元の紹介文にあるとおり DirectX 9 や 10 で学習が止まっている人にとって、初期化からスキニングと IK、シャドウマップまでを一貫したコードで組み上げる経験は、他の低レベルグラフィックス API を学ぶときにも転用できる土台になります。MMD のモデルを自分のプログラムで踊らせるという到達点は、写経が続く学習の途中でも手を止めにくい具体的な目標です。本書で基礎を組み終えた後は、技術評論社の『Direct3D12 ゲームグラフィックス実践ガイド』のように、より進んだ描画手法へ踏み込む本へ進む道筋も見えてきます。

言及した記事 (3 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: