研究室生活のメモ・・・だった過去の遺産。移転先→http://negimochix2.blogspot.com/
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
あまりにも意味がわからなかったので,
そのままタイトルにしてしまったw
Papervision3D 2.0で追加されたBasicViewクラスはカメラやViewPortといった,描画でかならず必要となるクラスをまとめて宣言してくれるすぐれもの.
Spriteクラス→AbstractViewクラス→BasicViewクラス
という継承なのでSpriteとしても使えるところが便利.
で,BasicViewクラスでカメラを"CAMERA3D"で宣言して自由にカメラを動かそうと思ったときに気づいたことなんだけど・・・.
カメラを設定するために以下のようなコードを書いた.
上のコードを実行すると,
(;・∀・)あれ?
targetが未定義だと怒られた.
CAMERA3Dを指定したんだし,targetはCamera3Dクラスでpublicなんだから,当然Camera3Dクラスのプロパティは使えるはずだよね?
で,ソースを読んでみた.
どうやらスーパクラスのAbstractViewクラスでカメラのプロパティ_cameraを宣言して,getterを使ってcameraでプロパティアクセスができるようになっていたのだけど・・・
_cameraプロパティがCameraObject3Dクラス!?
カメラにはCamera3Dクラス,FreeCamera3Dクラス,FrustumCamera3Dクラスの3つあって,CameraObject3Dを継承している.
で,BasicViewクラスではそれらをnewして_cameraに代入しているのだけれど・・・_cameraプロパティがCameraObject3Dクラスだったら,継承したプロパティ(target)なんかあるはずねぇよw
まだまともにPapervision3D始めて1日も経ってないのに,いきなりバグ発見?
ヾ(・∀・;)オイオイいくらベータとはいえこんな初歩っぽいところで間違っててこれでいーのか.
まあ,でもまだバグって決まった訳じゃないし・・・.
AbstractViewクラスの_cameraプロパティがCameraObject3Dクラスである理由が分かる方がいたら是非教えて頂けるとありがたいです.
とりあえず,対策としてAbstractViewクラスを次のように編集してどうにかしてみた.
追記:
自己解決.
よく見たら,BasicViewクラスにこんな記述が.
つまり,
でも,そうすると_cameraのsetterが全く持って意味がないよね.
そういうところってちゃんと整理しておかないとダメだと思うんだけどなぁ.
そのままタイトルにしてしまったw
Papervision3D 2.0で追加されたBasicViewクラスはカメラやViewPortといった,描画でかならず必要となるクラスをまとめて宣言してくれるすぐれもの.
Spriteクラス→AbstractViewクラス→BasicViewクラス
という継承なのでSpriteとしても使えるところが便利.
で,BasicViewクラスでカメラを"CAMERA3D"で宣言して自由にカメラを動かそうと思ったときに気づいたことなんだけど・・・.
カメラを設定するために以下のようなコードを書いた.
basicView = new BasicView(container.stage.stageWidth,
container.stage.stageHeight,
true,
true,
"CAMERA3D");
// カメラの位置
basicView.camera.x = 0;
basicView.camera.y = 0;
basicView.camera.z = -1800;
// カメラの視点
basicView.camera.target.x = 100;
basicView.camera.target.y = 0;
basicView.camera.target.z = 0;
(本来はBasicViewをextendした方がスマートかもね)上のコードを実行すると,
(;・∀・)あれ?
targetが未定義だと怒られた.
CAMERA3Dを指定したんだし,targetはCamera3Dクラスでpublicなんだから,当然Camera3Dクラスのプロパティは使えるはずだよね?
で,ソースを読んでみた.
どうやらスーパクラスのAbstractViewクラスでカメラのプロパティ_cameraを宣言して,getterを使ってcameraでプロパティアクセスができるようになっていたのだけど・・・
protected var _camera:CameraObject3D;
public function get camera():CameraObject3D
{
return _camera;
}
(;・∀・)ハッ?_cameraプロパティがCameraObject3Dクラス!?
カメラにはCamera3Dクラス,FreeCamera3Dクラス,FrustumCamera3Dクラスの3つあって,CameraObject3Dを継承している.
で,BasicViewクラスではそれらをnewして_cameraに代入しているのだけれど・・・_cameraプロパティがCameraObject3Dクラスだったら,継承したプロパティ(target)なんかあるはずねぇよw
まだまともにPapervision3D始めて1日も経ってないのに,いきなりバグ発見?
ヾ(・∀・;)オイオイいくらベータとはいえこんな初歩っぽいところで間違っててこれでいーのか.
まあ,でもまだバグって決まった訳じゃないし・・・.
AbstractViewクラスの_cameraプロパティがCameraObject3Dクラスである理由が分かる方がいたら是非教えて頂けるとありがたいです.
とりあえず,対策としてAbstractViewクラスを次のように編集してどうにかしてみた.
protected var _camera;
public function get camera()
{
return _camera;
}
追記:
自己解決.
よく見たら,BasicViewクラスにこんな記述が.
public function get cameraAsCamera3D():Camera3D
{
return _camera as Camera3D;
}
コレ使ってアクセスしろというわけですか.つまり,
basicView.cameraAsCamera3D.target.x = 100; basicView.cameraAsCamera3D.target.y = 0; basicView.cameraAsCamera3D.target.z = 0;とすればよかったのね.
でも,そうすると_cameraのsetterが全く持って意味がないよね.
そういうところってちゃんと整理しておかないとダメだと思うんだけどなぁ.
PR
この記事にコメントする
Infomation
・くさもち
・ボカロ廃大学院生
・βからのニコ厨
・もちろん非リア充
・ミクZ4 第二期個人スポンサー
【メール】
・negimochi.tabetai(゚Д゚)gmail.com
(゚Д゚)→@
【その他やってるもの】
・Twitter
・これは痛いピアプロ
・過去の遺産smart.fm
【作ったもの】
・製作に参加したDTX GDPメインサイト
で,実際に作ったIRページ
・これは痛いピアプロ
・過去の遺産smart.fm
【作ったもの】
・製作に参加したDTX GDPメインサイト
で,実際に作ったIRページ
カレンダー
| 09 | 2025/10 | 11 |
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
カテゴリー
VOCALOID Ranking Watcher
新曲は常にチェックすべし。
おすすめ記事
jubeat ripples
今更やってみる
最新記事
(05/02)
(01/08)
(11/26)
(11/24)
(11/13)
(11/06)
(11/06)
