「Real-Time 3D Graphics with WebGL2」を読んだ
WebXRやりたい
Chrome79で正式サポートが始まったものの、まだまだ発展途上中のWebXR Device API。 XR関連企業でWeb開発をメインを働いているものとしてはかなり興味深いトピックです。
いざ触ってみようとなるとサンプルが欲しくなるところですが、WebXR Device APIのサンプルはこちらが充実しています。こちらではThree.jsやBabylon.jsといったライブラリを使用せず、WebGLでレンダリングエンジンを実装したうえでのものとなります。
これはWebGLそのものをある程度理解しておかないと調べてもあまり身につかなさそうだぞ、と思い参考となりそうな書籍を探してみました。その中で比較的最近出版されたもので次のものを読んでみました。
対象読者はBrowser JavaScriptに多少慣れ親しんでいること、といったところでしょうか。3Dグラフィックスプログラミングについての知識がなくても読み進められると思いますが、基本的な線形代数の知識(行列の計算)は事前におさえておいたほうがいいかもしれません。
本の内容としては、WebGL APIの使い方からはじまりポリゴンのレンダリング、簡単な反射モデルについてのシェーダ実装、カメラ、トゥイーンアニメーション、アルファブレンディングなど、3Dグラフィックスの基礎はだいたい抑えられているかと思います。さらに書籍に沿ってサンプルを実装していくとシーングラフ、ライト、マテリアルといった抽象概念を実装した簡易なレンダリングエンジンができるようになっています。UnityやUE4の経験があるならば、そういったソフトウェアがどのような実装になっているかイメージする手助けになるかもしれません。
非常に丁寧に解説されている書籍ですが、やはりWebGLが低レイヤに近いこともあり板ポリ1枚をレンダリングするだけでもなかなかのコード量になります。そうなるとやはりライブラリを使いたくなりますが、一番メジャーなのはやはりThree.jsでしょうか。
こちらは昔ちらっと読んだだけなので内容は記憶の彼方です。日本語版も出版されていますが、内容は第2版のものようです。