VRエンジン作成日記

ひたすらVRエンジンを作っていきます

猛烈にVRエンジンが作りたくなった

最近VTuberとか流行ってるし、時代はVRだと思いこんでVRエンジンを作ることにした。ちょうど数学の勉強もしたかったので、幾何を覚えたら得をするのではないかという目論見もある。

何から手をつけていいやら分からないので、とりあえず基礎からしっかり覚えようと考え、3Dの描画エンジンをWebGL上に構築することにした。今までUnityならコンテンツの1つや2つは作ることができるくらいは使っていたんだけど、Unityだと便利すぎて行列やらクォータニオンのイメージすらできない程度にしか3Dのことが分からない状態になっていた。Matrix4x4クラスを自力で作ることはできるのか?というようなところから出発している。 

思いついてすでに3週間は経過していて、Githubにもリポジトリを作ってみた。

github.com

なぜtea.jsなのかというと、最近お茶ばっかり飲んでるなみたいなことと、Unityという単語の最後にtyって付いてるし、似たようなことを実現しようとしてるからTeaで良いやみたいな感じでとりあえずの名前をつけた。

 

現状、疑問に思っていた行列とクォータニオンについては定義に従ってオブジェクト指向的にクラスを作ることはできた。このブログを書いている時点では3次元空間内での当たり判定が気になっている。まるぺけさんというかたのサイトによると、どうやらAABB(座標軸に揃ったバウンディングボックスという名の箱)というものと直線、線分等が衝突するというところから考えるのが基礎になっているらしい。正直今のところよく分からないのでGame Programming Gemsという鈍器のような本を入手した。

Game Programming Gems

Game Programming Gems

 

15年ほど前、プログラミングの方法を覚えるためにVisual Basicアルカノイドのようなブロック崩しゲームを作っている時、すでにGame Programming Gemsの存在は知っていて、自分には難しすぎると感じていたんだけど、今になってみれば頑張れば読める程度の難易度であるというような認識に変わっていた。当時の自分が知れば成長に驚くだろうとも感じるけど、成長が遅すぎたような気もする。

こういう色々なことをtea.jsを作っている最中に思い出したりする。書き留めていないともったいないような気がするので、また何か思い出した時にでも都度書き残しておきたい。

続くかどうか分からないけど、このブログを見つけてくれた人は続編にご期待ください。突然やめる可能性もある。