【Papervision3D】原点を中心に任意度カメラをまわす

| | comments(0) | truckbacks(0)

閃いたので書きなぐる。後でまとめる。実装するまでのドラフト


/*
* キモの部分。
* 細かい条件分岐などは割愛
* 以下全体を render で呼んどいてENTER_FRAME しとく
*/

// 現在の角度
var nDegree:Number = 現在の角度;

// 目標の角度
var dDegree:Number = 例えば45とか;

// 1フレームで回転する角度(その都度目的角度までの2/1度)
var rad:Number = ((dDegree - nDegree)/2)*Math.PI/180;
        
// 現在の座標
var pX:Number = camera.x;
var pZ:Number = camera.Z;

// 回転後の座標
camera.x = pX*Math.cos(rad) - pZ*Math.sin(rad);
camera.z = pZ*Math.cos(rad) + pX*Math.sin(rad);

無理かなぁ...

デザイン固まったら試す。

---------- 追記。 ----------

// 1フレームで回転する角度(その都度目的角度までの2/1度)
var rad:Number = ((dDegree - nDegree)/2)*Math.PI/180;

これダメ。
処理がおっつかん。
というかそもそもなんか間違ってるんだろうな。

結局、目的の角度までまわして、目的の角度に達したら回るのやめ、ていう条件分岐の問題ですねこれ。てかカメラのまわし方くらいこないだ購入した Papervision3Dではじめる Flash3Dアニメーション に載ってるし。なんか調子こいてエントリ書いたのが情けなす。

とはいえ実装せんと仕事にならんので引き続き調べる。


 

---------- 追記。 ----------

camera.target = DisplayObject3D.ZERO
の状態で、ターゲットを中心に右だ左だ、と任意の角度までカメラを移動させたい。で、移動するスピードをイージングしたかったけど今の自分の数学力(算数力?)ではまだ無理。
ということで、camera は scene に設置された時点で 90° の位置にあり、左へ 90° 回転したあとは 0° スタートのマイナス角度になり、 右へ 90° 回転した後は 180° スタートのマイナス角度になる。(下図参照)

なので、例えば mode = " MOVE " の間だけ ENTER_FRAME が適用されるようにしておいて、その状態でカメラを等速度で回転させ、現在の角度( nDegree )の値が、目的の角度( dDegree )の値より大きくなったか小さくなったか、を判定して mode の値を " STOP " なりなんなり " MOVE " 以外に変更して、ENTER_FRAME を止める、と。

一番しあわせなのは、加法定理を Tweener に適用して、ぐりぐりイージングとか出来ることだけど、そんなのどうやって計算すればいいんだろう...。

勉強あるのみです。


 

ちなみに、カメラのその時の角度は次の関数呼べば角度で return されてきます。

private function cameraDegree():Number
{
	var cameraXfromCenter:Number = 0 - camera.x;
	var cameraZfromCenter:Number = 0 - camera.z;
	var radian:Number = Math.atan2(cameraZfromCenter, cameraXfromCenter);
	var degree:Number = radian * 180 / Math.PI;
	return degree;
}

 

---------- 追記。 ----------

回転速度をイージングしようと思ったら、投げる rad を毎フレーム 0.5 とかかけて、徐々に減らしていけばいいのか。


 

---------- 追記。 ----------

イージング、実験成功。
注意すべきなのは、右回りにしろ左回りにしろ、上の図で180°地点を通過するとき。

成功した swf 貼りたいけど クライアントの許可おりないだろうから、また時間が出来たら再現 swf つくる(かもしれない)。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 【Papervision3D】原点を中心に任意度カメラをまわす

このブログ記事に対するトラックバックURL: http://www.nrd-studio.com/mt/mt-tb.cgi/200

コメントする

このブログ記事について

このページは、Biz_Rが2009年10月 5日 01:08に書いたブログ記事です。

ひとつ前のブログ記事は「【jQuery】 ボックスのセンタリング雑感」です。

次のブログ記事は「Firefox での swf」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。