「接線ベクトル」の版間の差分
Administrator (トーク | 投稿記録) |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| 5行目: | 5行目: | ||
* そしてZ軸は「Normalベクトル([[法線ベクトル]])」と呼ばれます。 | * そしてZ軸は「Normalベクトル([[法線ベクトル]])」と呼ばれます。 | ||
== 計算式 == | |||
TangentベクトルとBinormalベクトルの計算については、あらかじめUV座標と法線ベクトルはわかっている(頂点データとして保持している)前提となっているのが一般的です。 | TangentベクトルとBinormalベクトルの計算については、あらかじめUV座標と法線ベクトルはわかっている(頂点データとして保持している)前提となっているのが一般的です。 | ||
== Tangentベクトルの計算 == | === Tangentベクトルの計算 === | ||
大雑把に1行で書くと以下のようになります。NormalベクトルとUpベクトルのクロス積を取ればTangentベクトルになります。 | 大雑把に1行で書くと以下のようになります。NormalベクトルとUpベクトルのクロス積を取ればTangentベクトルになります。 | ||
Vector3 tangent = Vector3.Cross(normal, Vector3.UnitY); | Vector3 tangent = Vector3.Cross(normal, Vector3.UnitY); | ||
| 23行目: | 24行目: | ||
Tangentベクトルの計算については、わりと重めの処理であり、かつ頻繁に変化する値でもないので、あらかじめCPU上で計算しておき、頂点データのひとつとして保持する方法が主流です。 | Tangentベクトルの計算については、わりと重めの処理であり、かつ頻繁に変化する値でもないので、あらかじめCPU上で計算しておき、頂点データのひとつとして保持する方法が主流です。 | ||
== Binormalの計算式 == | === Binormalの計算式 === | ||
NormalベクトルとTangentベクトルの2つがわかっているならば、その2つのクロス積を取るだけです。 | NormalベクトルとTangentベクトルの2つがわかっているならば、その2つのクロス積を取るだけです。 | ||
Vector3 binormal = Vector3.Normalize(Vector3.Cross(normal, tangent)); | Vector3 binormal = Vector3.Normalize(Vector3.Cross(normal, tangent)); | ||
Binormalベクトルの計算については、わりと軽めの処理なので、頂点データを節約すべく、GPU上でリアルタイムに計算する方法が主流です。 | Binormalベクトルの計算については、わりと軽めの処理なので、頂点データを節約すべく、GPU上でリアルタイムに計算する方法が主流です。 | ||