note.x

[Papervision3D] 原点にカメラがあるとフリーズする件

Qreatureさんが指摘してくださった、「原点にカメラがあるとフリーズする」件を、改めて調べてみた。

Papervision3Dメモ #27のデモを対象に、MacOSX(PowerPC)10.4.10、FireFox2.0.0.9の環境で、FlashPlayer9のいくつかのリビジョンについて検証。結果は以下のようになった。

9.0 r16 問題なさそう
9.0 r28 しばらく放置するとフリーズ
9.0 r45 いきなりフリーズ
9.0 r47 問題なさそう

9.0 r28、r45に関して明らかにフリーズすることが確認できた。特にOSX版のr45に関してはswfを読み込んだ瞬間に固まる。なんというブラクラ。Win環境は調べてないけどたぶん同じような感じかと。

暫定的な解決方法としては、Qreatureさんのおっしゃる通り「とにかく原点(x:0,y:0,z:0)にカメラを置かない」ってのが一番簡単かつ確実っぽい。原点にさえカメラを置かなければいいので、(x:0,y:0,z:1)とか、任意の一軸だけでもずらしておくと上記の問題は起こらない。
24時間耐久テストとかやったらどうなるかわかんないけど、とりあえず15〜20分くらい放置してても問題なかった。

07/11/14追記
Qreatureさんにコメント欄で指摘していただいた仮説に基づき、Camera3Dではなく、FreeCamera3Dを使うことで解決するという手もある事が判った。こっちのほうが考え方としてもスッキリするかな。Qreatureさん感謝です!

ということで、Papervision3Dメモ #27のデモとソースを修正した。9.0 r28、r45をお使いのみなさまにはご迷惑をおかけしました。
それにしてもコレ、ほんとにFlashPlayer側の問題として片づけちゃっていいのか超不安。


Trackback URL : http://blog.r3c7.net/as3-software-rendering/124/trackback/

COMMENTS

  1. qreature - 2007.11.14 2:18:10

    私はソースを読むのが苦手なので憶測ですが、PV3Dのカメラが注視点を
    原点に向けていることが原因のひとつなのではないかと思います。
    カメラが(x:0,y:0,z:100)などにある時は原点(x:0,y:0,z:0)の方向を向くことが
    できますが、原点にある時は自分がそこにいるから向く方向がわからなくて~
    みたいな状態なのかな~と。

  2. rect - 2007.11.14 2:49:23

    >qreature さん

    自分も同じこと考えて、試しにFreeCamera3Dを使ってみたら問題なく動きました。
    良く使われるCamera3Dは、 原点(正確には、原点に配置された空のDisplayObject3D)をターゲットとして指定しますが、FreeCamera3Dはターゲット指定がありません。qreature さんの仮説正しそうですよ。
    ただ、Playerによっては何事もなかったように動くのが逆に謎ッス。

  3. qreature - 2007.11.16 7:52:30

    そうですね。最新版FlashPlayerしか正常に動かないというわけではなく、
    r16でも正常に動いていたというのであればさらに謎です。。。
    ひょっとしたら次のバージョンアップで再び・・・なんてことも。
    でもまぁFlashPlayerのプログラムにまで介入すると収拾つかなくなりそう
    なので、今回は回避策で(苦笑
    こちらこそ色々と検証していただいて感謝しております。

Leave a Reply