- 2008-06-03 (火) 20:24
- ActionScript3.0

どうも。
ちょっと思いついたのでメモ。
最近 Papervision3D の勉強とかをしてたりして、カメラ(Camera3D)の移動がよくわからなかったの考えていたら思いついた。
ある 3D オブジェクトを Scene3D に addChild して、その回りをカメラが回転したいときの技。
よくやる手としては カメラを回すのではなく、Scene3D に DisplayObject3D を追加してそいつを回転させる。
そうすることでカメラがその回りを回転しているように見える。
でも、この方法では本当にカメラが回転しているわけではない。
じゃあカメラを原点中心目線で回転させる方法は?
camera.rotationY とかをいじっても回転しない。
何でだろうとか色々調べてもわからなかった。
わかる人は教えて欲しいのだが、わからなかったので自分なりに回転する方法を考えた。
Scene3D に DisplayObject3D を addChild して、 さらにそれに DisplayObject3D を addChild する。
Scene3D に addChild した方を仮に cameraWorld としておく。
cameraWorld に addChild した DisplayObject3D は仮に targetCamera とする。
cameraWorld.yaw(angle) で回転させて、
camera.copyPosition(targetCamera.world) とすると
camera が原点中心目線で回転する。
計算は DisplayObject3D がやってくれるので書くほうとしては新たになんか式を考える必要も無くて便利だと思った。
- Newer: FlashDevelop の CustomArguments
- Older: 1=2
Comments (Close):2
- dune 09-07-02 (木) 14:07
-
1年前の記事なので既に解決しているかもしれませんが、
Viewを作るときにFreeカメラを作成する必要があるようです。view = new BasicView( 480, 480,true,true,CameraType.FREE );
これで作成した場合
view.camera.rotationX などが機能しました。FREEにすると、camera.targetはnullになるようですのでご注意を。
(どこを見るかが自由になるからtargetがいらないのですかね?) - jc 09-07-03 (金) 8:04
-
dune さん
ありがとうございます!
もう若干PV3D を忘れてしまっているので、次に勉強する時には参考にさせていただきます!
ありがとうございました!

