arusu0629のブログ

Swift初心者エンジニア

WebGLについて①

少し前から3Dについての勉強をしたくて、最近は決まってやることが無かったので、ボチボチ勉強していこうと思います。 (デザインではなくプログラミングについてです)

勉強方法は会社の先輩に教えていただいた下記サイトを読んで、自分が大事だなとかよく分からなかった箇所をメモして、ここに振り返り用にアウトプットする感じでやっていこうかなと

wgld.org

3D描画の基礎知識

座標系

OpenGL(WebGL)は右手座標系

一方でDirectX左手座標系

左手座標系と右手座標系の違いはZ座標(奥行き)の取り扱い方の違い

左手座標系では奥側がマイナスで手前に行くほどプラスの値

右手座標系はこれの逆で奥側がプラスで手前に行くほどマイナスの値を取る

3つの座標変換
  1. モデル変換(DirectXではワールド変換と呼ばれる)
    被写体となる物体が3次元空間のどの位置にあるのかを定義するための座標変換

  2. ビュー変換
    カメラの位置、向きを定義する。カメラの位置やその向けられている方角を決めるために行われる座標変換

  3. プロジェクション変換
    3次元空間のどの領域を撮影するかなどを定義する。横に幅広く描画するのか、もしくは縦長の映像を撮影するのかなど。一般的にカメラの場合はレンズの前にあるものを全て撮影し、どのくらいの遠さまでを映すかは意識しない。しかし、プログラムでは一番手前はここまで、一番遠くはここまで、と領域を決めて処理する

まとめ

プログラムが3次元空間を描画する時、最終的に2次元データに変換する必要がある。WebGLDirectXでZ座標の扱いが異なる。3次元空間の情報を2次元の情報に変換するには、モデル、ビュー、プロジェクション変換が組み合わさって最終的にディズプレイに描画される

【続き】 arusu0629.hatenablog.com