困った。Papervision3Dの変更の影響でFLARToolKitが動かなくなっている・・・。
FLARToolKitでは、Papervision3Dの「FrustumCamera3D」を継承した「FLARCamera3D」と言うクラスを使ってPapervision3Dのカメラ(3Dモデルを表示するためのカメラ)とWebカメラ用のパラメータを調整していたんだが、Papervision3Dの変更によりFrustumCamera3DがCamera3Dに統合され、無くなってしまったようだ。
なので、Camera3Dを使って何とかしなくてはいけないのだが、難しすぎて俺にはきつそうだ。
取り敢えず、現状の問題点としては、「コンパイルが出来ない」と言う事に尽きる。
そして、「親クラスをCamera3Dにしても、上手く表示されない」という問題点もある。それについては画像を用意してみた。
- 元の表示

- 取り敢えず親クラスをCamera3Dにしてみた結果・・・逆だ。

これは、コンボボックス型の拡張現実型メタセコビューワをコンパイルしなおして表示してみたものだが、違いは一目瞭然だと思う。見た感じだと、座標軸が逆になっているようだ。少なくともZ方向は逆だ(理由不明)。あと、前後方向(Yかな?)も逆っぽい。また、赤四角を見ると、マーカと大きさが一致していない。つまり、拡大率が違うと言う事だろう。と言う事で、現在最も簡単な解決策は「FrustumCamera3DがあるPapvervision3Dを使用する」だ。その方法を書いておこう。
古いバージョンのPapervision3Dを使う
古いバージョンと言っても、アルファ版のGreateWhiteの使用をやめる訳ではない。「SubversionからFrustumCamera3Dが削除される直前のリビジョンのPapervision3Dを使う」と言うのが正確だ。リビジョンとは、Subversion中のソース管理の番号だ。ソースを変更し、コミットを行うたびに変わる。まぁ詳細は適当に調べて欲しい。今回行う具体的な作業内容は、
「FrustumCamera3Dが無くなった時のリビジョン番号を調べ、その1つ前のリビジョンをチェックアウトする」
となる。
Subversionでは、ファイルが更新されたとか追加されたとか削除されたとかは、ログとして全部残る。なので、ログを見ていけばどこでFrustumCamera3Dが無くなったか一目瞭然だ。ログは、チェックアウトしたフォルダで右クリックするか、リポジトリブラウザでログを見たい部分のフォルダを右クリックすると表示できる。
で、ログを見る限りだと、FrustumCamera3Dがなくなったのは、この部分。
作者: tim.knip
日時: 1:33:04, 2008年7月11日
メッセージ:
Camera unification - initial commit - bombs away!
----
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/cameras/Camera3D.as
追加 : /trunk/branches/GreatWhite/src/org/papervision3d/cameras/CameraType.as
追加 : /trunk/branches/GreatWhite/src/org/papervision3d/cameras/DebugCamera3D.as
削除 : /trunk/branches/GreatWhite/src/org/papervision3d/cameras/DebugFrustumCamera3D.as
削除 : /trunk/branches/GreatWhite/src/org/papervision3d/cameras/FreeCamera3D.as
削除 : /trunk/branches/GreatWhite/src/org/papervision3d/cameras/FrustumCamera3D.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/core/components/as3/core/PV3DUIComponent.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/core/components/as3/flash9/PV3DScene3D.as
追加 : /trunk/branches/GreatWhite/src/org/papervision3d/core/culling/FrustumCuller.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/core/culling/FrustumTestMethod.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/core/geom/TriangleMesh3D.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/core/proto/CameraObject3D.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/objects/DisplayObject3D.as
削除 : /trunk/branches/GreatWhite/src/org/papervision3d/objects/special/Frustum3D.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/objects/special/Sound3D.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/render/BasicRenderEngine.as
変更 : /trunk/branches/GreatWhite/src/org/papervision3d/view/BasicView.as
リビジョン639だ。
よし!ではリビジョン638をチェックアウトだ。チェックアウトの方法はこちらを参考にして欲しい。
今回は、「http://papervision3d.googlecode.com/svn/trunk/branches/GreatWhite」からチェックアウトを行う。
で、特定のリビジョンをチェックアウトする方法だが、
- 特定リビジョンをチェックアウトする

こんな感じ。リビジョン選択画面で、「リビジョン」を選択し、欲しいリビジョン番号を記入する。これで、後はFlashDevelopでクラスパスにこっちを指定してやればOK。
感想
取り敢えず、俺のほうでもコードを追ってみている。何とかして元に戻してやりたいが、いかんせん知識不足なので結構時間がかかるかもしれない。なので、その間にSaqooshaさんが何とかしてくれるかもしれない。
全く、勉強会とか電脳フィギュアとか忙しい時に限ってこれだからな。参ったよ。
そう言えば、ウチの「あわせて読みたい」に電脳フィギュアの社長のブログが入ってた&電脳フィギュアの社長のブログの「あわせて読みたい」にウチが入ってたことにビックリしたよ。




おーっと。
なるほどなるほど。
ざっと最新の Camera3D ながめてみたけど、機能的には問題ないみたい。
ちょっと今時間がとれないから直せないけど時間できたらトライしてみまーす。
コメント by Saqoosha — 2008年8月3日 日曜日 @ 19:55:51
Camera3DのuseProjection引数をTRUEにして、projectVertices関数でProjectionを
設定するのかな?
うーむ。ActionScript3はよくわからんのです…。
コメント by A虎@ — 2008年8月4日 月曜日 @ 23:23:17
>Saqoosha さん
お、いけそうですか?
勿論俺も頑張りますが、期待してます!
>A虎@ さん
コンストラクタ引数のuseCullingをtrueにしてFrustumを実現する所まではギリわかるんですが、
Projectionの設定が難しいですね。
projectVerticesは、Projectionを使用する際に使う物のような気もしますけど・・・。
AS3は何とか読めても、3Dの知識がないんです…。
コメント by 太郎 — 2008年8月5日 火曜日 @ 0:19:50
でけた。
http://www.libspark.org/changeset/969
projection matrix の扱いがかわっちゃってて外から変更できなくなってるので、org.papervision3d.cameras.Camera3D そのものにもちょっとだけ変更を加えないといけないのだけど、いちおうこれまでどおりの動きになりましたよー。
コメント by Saqoosha — 2008年8月14日 木曜日 @ 2:36:47
>Saqoosha さん
ご対処ありがとうございます!
ちょっと遅れましたが、変更方法について記事を書いてみました
http://blog.tarotaro.org/archives/212
つか、やっぱPV3Dに変更要りますか~。
誰か、PV3Dに言ってくれませんかねぇ?protectedにしろって。
コメント by 太郎 — 2008年8月21日 木曜日 @ 23:48:56