teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

間違い修正

2018/12/22 07:44

投稿

katsuko
katsuko

スコア3601

answer CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  とりあえず指向を変え、ヒントとなるworldUpからどのようにローカルのY軸を決定できるか、説明しましょうか。私の回答の「外積を2回求めるだけ」という部分についてです。
24
24
 
25
- まず前提として、Z軸/Y軸/Z軸というのは、お互い直角に交わっていなければなりません。(わかっていることとは思いますが、今回の肝ですので、確認しておきます。)
25
+ まず前提として、Z軸/Y軸/X軸というのは、お互い直角に交わっていなければなりません。(わかっていることとは思いますが、今回の肝ですので、確認しておきます。)
26
26
 
27
27
  外積について、ご存知かもしれませんが説明します。
28
28
  2つのベクトルの外積で何が求められるか。それは、お互いが共に垂直に交わるベクトルが求まります。

1

ローカルのY軸を求める説明を追加

2018/12/22 07:44

投稿

katsuko
katsuko

スコア3601

answer CHANGED
@@ -12,4 +12,39 @@
12
12
  ですので、「worldUp is only a hint vector」なんです。
13
13
  LookAtメソッドでは、**worldUpをヒントに、上方ベクトルがtargetへのベクトル、workdUpベクトルと同じ平面上になるように設定します。**
14
14
 
15
- まぁ、横に傾げる事がなければ、Vector3.upを指定しておけば間違いないというのは、他の回答者さんの言うとおりです。
15
+ まぁ、横に傾げる事がなければ、Vector3.upを指定しておけば間違いないというのは、他の回答者さんの言うとおりです。
16
+
17
+ ---
18
+
19
+ > すみません、「targetへのベクトル、worldUpベクトルと同じ平面」がわからなかったです。
20
+
21
+ そこを突っ込みますか。まぁ、自分でも説明が下手だなぁと思っていたところなんですがw
22
+
23
+ とりあえず指向を変え、ヒントとなるworldUpからどのようにローカルのY軸を決定できるか、説明しましょうか。私の回答の「外積を2回求めるだけ」という部分についてです。
24
+
25
+ まず前提として、Z軸/Y軸/Z軸というのは、お互い直角に交わっていなければなりません。(わかっていることとは思いますが、今回の肝ですので、確認しておきます。)
26
+
27
+ 外積について、ご存知かもしれませんが説明します。
28
+ 2つのベクトルの外積で何が求められるか。それは、お互いが共に垂直に交わるベクトルが求まります。
29
+
30
+ さて、targetへのベクトル=ローカルのZ軸と、ローカルのY軸…のヒントとなるworldUpの2つのベクトルの外積を求めると何が求まるか。
31
+ ローカルのZ軸とローカルのY軸(のヒント)が垂直に交わるベクトル、ですから、**ローカルのX軸**になるわけです。
32
+
33
+ 更に、ローカルのZ軸と、今求めたローカルのX軸の外積を求めると、何が求まるか。
34
+ ローカルのZ軸とローカルのX軸が垂直に交わるベクトル、ですから、これが**本当のローカルのY軸**になります。
35
+
36
+ このように、targetへのベクトルとY軸のヒントとなるベクトルの2つで、ローカルのY軸(と、ついでにローカルのX軸も)求めることができるのです。
37
+
38
+ * [TransformのLookAtをUnity APIを使わずに書く](http://edom18.hateblo.jp/entry/2018/04/18/104054)
39
+
40
+ 上記のページの、
41
+
42
+ ```cs
43
+ Vector3 z = (target - transform.position).normalized;
44
+ Vector3 x = Vector3.Cross(Vector3.up, z).normalized;
45
+ Vector3 y = Vector3.Cross(z, x).normalized;
46
+ ```
47
+
48
+ が、私がいま説明した内容ですね。(worldUpがVector3.up固定になっていますが)
49
+
50
+ これらの内容は、カメラ行列を作るための常套手段なので、その辺りを勉強すると良いかもしれません。