「接線ベクトル」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
8行目: | 8行目: | ||
TangentベクトルとBinormalベクトルの計算については、あらかじめUV座標と法線ベクトルはわかっている(頂点データとして保持している)前提となっているのが一般的です。 | TangentベクトルとBinormalベクトルの計算については、あらかじめUV座標と法線ベクトルはわかっている(頂点データとして保持している)前提となっているのが一般的です。 | ||
− | === | + | === Tangentベクトルの計算 === |
大雑把に1行で書くと以下のようになります。NormalベクトルとUpベクトルのクロス積を取ればTangentベクトルになります。 | 大雑把に1行で書くと以下のようになります。NormalベクトルとUpベクトルのクロス積を取ればTangentベクトルになります。 | ||
Vector3 tangent = Vector3.Cross(normal, Vector3.UnitY); | Vector3 tangent = Vector3.Cross(normal, Vector3.UnitY); | ||
23行目: | 23行目: | ||
Tangentベクトルの計算については、わりと重めの処理であり、かつ頻繁に変化する値でもないので、あらかじめCPU上で計算しておき、頂点データのひとつとして保持する方法が主流です。 | Tangentベクトルの計算については、わりと重めの処理であり、かつ頻繁に変化する値でもないので、あらかじめCPU上で計算しておき、頂点データのひとつとして保持する方法が主流です。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Binormalの計算式 === | === Binormalの計算式 === | ||
38行目: | 28行目: | ||
Vector3 binormal = Vector3.Normalize(Vector3.Cross(normal, tangent)); | Vector3 binormal = Vector3.Normalize(Vector3.Cross(normal, tangent)); | ||
− | + | Binormalベクトルの計算については、わりと軽めの処理なので、頂点データを節約すべく、GPU上でリアルタイムに計算する方法が主流です。ただGPUが貧弱なモバイル環境などではTangentベクトルと同様に事前に計算しておいても良いと思います。モバイル向けの[[ローポリゴン]]で頂点データのサイズが問題になることはまずないと思います。 | |
− | |||
− |