2018-4-18
モデルビューワーメモ
勉強のために、モデルを回転・拡大・移動させる簡易ビューワーを作成した。
その際に詰まったことや学んだことのメモ。
マウスの座標を取得
Input.mousePosition
で取得可能。
ウィンドウの左下を(0, 0, 0)として現在のマウスポインタのピクセル座標を Vector3 として返却。(z は常に 0)
C#には static なローカル変数が無い
JavaScript とか C#で static ローカル変数の代わり - Qiita
一応上記のように無理やり同様の事をやることはできるが、素直にフィールドに変数用意してやるほうが素直でいいと思う。
Quaternion の合成に関して
とあるオブジェクトの角度を(90, 90, 0)にしたい場合
this.transform.rotation = Quaternion.Euler(90, 90, 0);
とやると、当然(90, 90, 0)になる。
ところが、
this.transform.rotation = Quaternion.Euler(0, 45, 0);
this.transform.rotation = Quaternion.Euler(90, 0, 0) * this.transform.rotation;
this.transform.rotation = Quaternion.Euler(0, 45, 0) * this.transform.rotation
とやると目的の角度にならない。
これは実際に指を使って「X 軸中心に 45 度回転し、Y 軸中心に 90 度回転した後、更に X 軸中心に 45 度回転」という事をやってみると直感的には理解できた。
ただまだ直感的な理解しか出来ていないので、ひとまず「Quaternion の*演算子による合成は、直感と異なる結果になりやすいので極力避ける」という形で対応することに。
ローカルで HTTP サーバーを用意
Node.js のhttp-server
を使えばいい
DOTween でなめらかに動かす
カメラを初期状態に戻す際に使用。jQuery の animate や CSS Animation みたいな感じで手軽に使える。
基本ワールド座標を基準に行われ、ローカル座標を基準に行いたい場合はDOLocalMove
等 Local をつける必要があるので注意。