トップページgamedev
1001コメント322KB

【3Dゲームエンジン】Unity 8

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2012/01/23(月) 13:42:14.72ID:nCTiWtyJ
3Dゲームエンジン「Unity」のスレです。

公式サイト(英語)
ttp://unity3d.com/unity/

Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。

wiki
ttp://www24.atwiki.jp/unity2ch/

前スレ
【3Dゲームエンジン】Unity 7
http://toro.2ch.net/test/read.cgi/gamedev/1324320163/
0421名前は開発中のものです。2012/02/03(金) 21:54:37.93ID:+oF89WrW
>>416
ちなみにさらに補足すると、クォータニオンは立場として、ベクトルやスカラでなく、行列の側のもの。
「何度の回転」と言う言葉は暗黙のうちに、「何の軸で」が隠されている。

単純なxyzの三軸を考える時、それぞれの軸について、それらを中心に回転させるだけなら簡単だが、
「任意のベクトルを軸にして」となると途端に複雑になるうえ、
それぞれオイラー角を順番掛け合わせても、正しく回転できなくなる角度がある(ジンバルロック)

クォータニオンは行列での単純かけあわせでなく、ある軸におけるネジ方向の回転を得る数学的な意味での関数オブジェクト

より詳細はぐぐってくれ。移動中にスマホで各のはつらい
0422名前は開発中のものです。2012/02/03(金) 21:56:17.71ID:PpA5+TGi
Quaternion.AngleAxis(45,Vector3.forward); ==> (0,0,1)軸の周りに45度回転を表すクオータニオン
Quaternion.AngleAxis(45,-Vector3.forward); ==> (0,0,-1)軸の周りに45度回転を表すクオータニオン
Quaternion.AngleAxis(-45,Vector3.forward); ==> (0,0,1)軸の周りに-45度回転を表すクオータニオン
Vector3 a, b;
Quaternion q;
とすれば、
b = q * a;
ベクトルaをqのクオータニオンで回転したのがベクトルb
0423名前は開発中のものです。2012/02/03(金) 22:00:47.88ID:6DLGQUri
>>420
Directionにセットしているのは、その上で出ているベクトルと全く関係ない、新しいベクトル

先に作成した回転関数を使って、新しいベクトルを回転させ、それを代入しているのだ

数学は慣れだぜ
0424名前は開発中のものです。2012/02/03(金) 22:01:13.48ID:PpA5+TGi
transform.rotation = q;
this.Direction = q * -Vector3.forward;

リンク先をまったく見てないけど。
カメラはローカル座標で(0,0,1)方向を向いているのがUnityの鉄則
これはカメラとは正反対の方向(0,0,-1)をワールド座標に変換(q)してDirectionに格納している。
カメラの後ろ方向を保存しておいて後で何か必要になるんでしょ

0425名前は開発中のものです。2012/02/03(金) 22:07:13.44ID:Q6CK7I7v
あ、大事なこと忘れた。
クォータニオンは、そんなわけで「何の軸での回転なのか」だから、生まれるには必ず軸を表す正規化(ノーマライズ)されたベクトルが必要。

最初に渡してるベクトルはそれ。

次に掛けてるベクトルは、クォータニオンに変化させてもらいたいベクトル。
両者はまったく別の立場
■ このスレッドは過去ログ倉庫に格納されています