ゲームエフェクトデザイナーのブログ (新)

レポート記事とか色々。C#とかも触ったり。

数学が苦手な人向けのCG数学シリーズ

少し前の私のように「数学の知識が中学生止まり」だけど「テクニカルアーティスト方面に興味があって3DCGで知ってると便利な数学を理解したい」人向けに、私が学習を経て理解していった部分を備忘録を兼ねてメモしておきたいと思います。

ターゲットは数学が苦手なCGアーティストです。

ただし、数学をちゃんと勉強してきた方や今現在で活用している方にとっては「初学者はこういうところで躓くのか‥」といったあたりで参考になるかも知れません。

CGをやっていると数学の利用目的がハッキリしている(シェーダーの計算とか3Dソフト内のツール制作とか)ためモチベーションが維持しやすいのと、スクリプト等ですぐに試せるので1つの関数を知ると表現できることがぐっと増えていき、非常に楽しめます!これは大人の特権というやつではないでしょうか。

例えば、pythonのような言語が扱えなくても、大人ならみな慣れ親しんでいるであろうエクセルのセル内に関数を使って計算式を書けばとてもお手軽に計算を試せます。

そうやって試してみることと楽しむことが何より大事だと思います。

今からでも遅くありません。あなたも、ぜひ!

目次


中学レベルで必要な知識について
 ・四則演算
 ・分数の計算
  ・通分と約分
  ・分数の割り算を掛け算に変換すること
 ・式の展開
 ・ルート(√ / 平方根)と三平方の定理
 ・パイ(π / 円周率)

「エクセルのセル内で計算してみる」
 ・四則演算、ルート、乗数、パイ

割り算の3つの考え方 
 ・A ÷ Bの場合‥
  ・AをB等分する
  ・AにBが何個入るか
  ・Bに対してAの割合

「パーセンテージと割合」
 ・100%は1、50%は0.5(百分率と割合)
  ・RGBA値もUVもfloatなら0~1が基本の範囲になる
  ・xyz座標のグリッドのメモリは単位とも言える
 ・最大の値に割合をかけると現在の値が分かる
  ・三角関数の理解に繋がる
 ・何かの単位の最大値を、1を100%とした単位にするなら1に対して割る
  ・1日24時間なので 1 ÷ 24 = 0.041666..
   つまり「1時間は 0.041666..日」になる

「三角形の合同条件と三角関数
 ・三角形の合同条件は?
 ・なぜ直角三角形なのか?
 ・xyのグラフと単位円での考え方
 ・sinによる高さの求め方、cosによる底辺の求め方
 ・プログラムでのsin関数とcos関数
 ・余弦定理

三平方の定理とアークタンジェント
 ・三平方の定理でxy座標から斜辺の長さを出す
 ・xy座標からアークタンジェントで角度を出す
 ・底辺の長さと角度から斜辺の長さを出す
 ・プログラムでのルートとアークタンジェント

「度数とラジアン
 ・ラジアンとは
  ・3DCGの内部の角度計算では360°みたいな度数は使われないらしい
   なのでラジアンと度数を変換する必要がある場面に遭遇する
   (ユーザーが入力したり表示するのは度数、計算はラジアンで行うなど)
 ・プログラムでのラジアン関数
  ・度数をラジアンに変換、ラジアンを度数に変換
  ・パイ関数とラジアン関数を使ったパイの求め方

「正規化」
 ・正規化(ノーマライズ)とは
 ・A ÷ A のように同じ値で割ると正規化できる

「ベクトル」
 ・ベクトルは向きと大きさ
  ・角度と半径で表せるし、原点からのxy座標でも表せる
 ・座標とベクトルとスカラー
 ・ゴールから現在地を引くと距離が分かる例
 ・単位ベクトルは正規化したベクトルのこと

内積
 ・内積とは
 ・結果はベクトルではなくスカラー
 ・正規化した内積の利用
  ・Lambertの拡散反射率の例、45度は0.5じゃないよという話

外積
 ・外積とは
 ・結果は内積とは違ってベクトル
 ・外積の利用
  ・平面から垂直な法線を求める例

「行列」
 ・行列とは
 ・座標の移動とスケールと軸に対する反転
 ・座標変換(ワールド座標とローカル座標みたいな)
 ・回転行列
  ・理解のための三角関数の加法定理

「いろいろな記号」
 ・シグマ(Σ)は for 文
  5分で分かる!総和記号「Σ(シグマ)」の計算方法 | あぱーブログ
 ・ファンクション( f )
  関数f(x)[意味・使い方・読み方] / 数学I by ふぇるまー |マナペディア|
 ・---