「接線ベクトル」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
8行目: 8行目:
 
TangentベクトルとBinormalベクトルの計算については、あらかじめUV座標と法線ベクトルはわかっている(頂点データとして保持している)前提となっているのが一般的です。
 
TangentベクトルとBinormalベクトルの計算については、あらかじめUV座標と法線ベクトルはわかっている(頂点データとして保持している)前提となっているのが一般的です。
  
=== Tangentベクトルの計算:Normalベクトルを使う方法 ===
+
=== 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上で計算しておき、頂点データのひとつとして保持する方法が主流です。
 
=== Tangentベクトルの計算:頂点座標とUV座標を使う方法 ===
 
// 頂点エッジ
 
Vector3 edge1 = v1 - v0;
 
Vector3 edge2 = v2 - v1;
 
// UVエッジ
 
Vector2 delta1 = u1 - u0;
 
Vector2 delta2 = u2 - u0;
 
// 接線ベクトル
 
Vector3 tangent = normalize( (delta2.Y * edge1 - delta1.Y * edge2) / (delta1.X * delta2.Y - delta2.X * delta1.Y) );
 
  
 
=== Binormalの計算式 ===
 
=== Binormalの計算式 ===
38行目: 28行目:
 
  Vector3 binormal = Vector3.Normalize(Vector3.Cross(normal, tangent));
 
  Vector3 binormal = Vector3.Normalize(Vector3.Cross(normal, tangent));
  
Binormalベクトルの計算については、わりと軽めの処理なので、頂点データを節約すべく、GPU上でリアルタイムに計算する方法が主流です。
+
Binormalベクトルの計算については、わりと軽めの処理なので、頂点データを節約すべく、GPU上でリアルタイムに計算する方法が主流です。ただGPUが貧弱なモバイル環境などではTangentベクトルと同様に事前に計算しておいても良いと思います。モバイル向けの[[ローポリゴン]]で頂点データのサイズが問題になることはまずないと思います。
 
 
ただGPUが貧弱なモバイル環境などではTangentベクトルと同様に事前にCPU上で計算しておいても良いと思います。モバイル向けの[[ローポリゴン]]で頂点データのサイズが問題になることはまずないと思います。
 

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)