DO3DControllerアップデート[Papervision3D]

おそらく自分用になっているであろうDO3DControllerです。
久しぶりにPV3D触っているので利用していたのですが、使いにくいところがあったので機能追加しました。

Profileの表示の更新タイミングがsetしたときか、キー操作したときだったのですが、ENTER_FRAME回して更新するようにしました。
なるべく処理的に負荷をかけたくなかったので、ENTER_FRAME使っていなかったのですが、tweenさせたときとかに更新されないのは不便ですよね。

  • setメソッドの第3パラメータに移動量を指定できるようにしました。デフォルトは1です。
  • isActiveプロパティを追加しました。false指定でDO3DControllerのキーイベントを無視します。
    一時的に機能をOFFにしたいときとか。

つまらないものですが、お役に立ちそうでしたら下記よりどうぞ。

DO3DControllerのダウンロード

[jiglibflash] 絶妙なCube

miniASでお話ししようと思っていたけど、できなかったものです。

このFlashをご覧ください。

自分の環境だと何度やっても、Cubeが絶妙な停止を見せるのですが、いかがでしょうか?

この時、床と接しているように見えるのですが、 collisionsプロパティには何も入っていません。
床の情報が入っていてもよさそうなんすけど。

JigLibFlashでTetris3D

これの解説編です。

WCAN mini AS vol.11でお話しした点も含めてダラダラと記述。
Papervision3D rev910とJigLibFlash。
JigLibFlash v0.32時点でのお話し。

続きを読む

Tetris3D

tetris3d

WCAN mini ActionScript Vol.11でお話しさせて頂いた時のものをとりあえずアップしておきます。

I : ブロックを奥へ移動(Z+)
M : ブロック手前へ移動(Z-)
L : ブロックを右へ移動(X+)
J : ブロックを左へ移動(X-)

十字キー : 全体を回転

コツはIMLJキーのちょい押しで落下位置を調整しつつ、落下したら完全にCubeが停止する前に地面に散らかってるCubeを落下してきたCubeで整頓するという感じです。

現状、最下段(1列目)の5×5のみ消去判定しています。
1マス40ピクセルの範囲内にCubeの中心点が入っていればとりあえず収まっていると判定しているのである程度はばらばらでも5個並んでいれば消えます。

勉強会ではjiglibflashに関してまとめるつもりがないのでメモった方がいいかもとかいいながら、お話しのかなりはじめの方で話す順番を間違えてしまい、少々焦ってグダグダになった感じなので、その穴埋めにでもBlogに”まとめる”とまではいかなくても、エントリ残すつもりです。しました。

解説編はこちら。

PV3D用ちょい便利かもクラス

先日のちょい絶Vol.8に参加させていただき、ちょいとこちらの完結編っぽいものについてお話しをさせて頂きました。
まぁ、話し終わった後の何ともいえない雰囲気は忘れるとして、その時に、PV3DのDisplayObject3D(または継承したオブジェクト)オブジェクトにキーイベントを設定して操作できるようにするクラスを作りましたと少し紹介したんですが、connect.to.blog()の人に配布しないのですか?と聞かれたので配布します。

続きを読む

PV3DのrotationとlocalRotationの違い

PV3DのrotationとlocalRotationの違い

Papervision3DのDisplayObject3Dクラスのメソッド、localRotation(X|Y|Z)とrotation{X|Y|Z)に関して、違いがわからなかったので調べてみました。
まず、サンプルのSWFを見ていただくとすぐにわかりますが、回転の方向が逆です。

文章での説明が難しく、localRotationのほうはいまいち掴み切れていないところもあるのですが、回転のベースとなる回転軸ごと回転されている感じ(わかるかな・・・)です。
なので、localRotation(X|Y|Z)の各プロパティに値を代入する順番が重要になります。
上のサンプルではX→Yですが、これを逆にすると同じ値を指定しても見え方が変わります。

また、lookAtを使うとlocalRotationの値は”0″になるようです。

rotation(X|Y|Z)は軸がぶれない!ので、各プロパティへの代入順序も関係ない。

個人的にはrotationのほうがわかりやすいです。どのような状況でlocalRotationと使い分けるのか浮かばないです。

以下、サンプルのコード。

続きを読む

心が折れそうだ・・・

pv3dbc2

前回の続き。
結論から言うとやろうとしてることが微妙にできていない。
もう、まったくわからなくて心が折れそうです。
かなり数学的なことをやろうとしてるのはわかるのですが、計算方法がわからない。
本気でわかる方に教えていただきたいです。
詳細は続きへ。

続きを読む

ラインとPV3D

ラインとPV3D

久しぶりにPV3D触ってました。
エントリも2009初だったりするぐらいAS触ってなくてゲーム三昧。
とりあえず、リロードでランダムに線の形状が変わります。
リニューアルしたいWORKSで使うかもしれない!

Papervision3D 2.0 Beta1にしました

サイトで利用しているPV3Dを2.0 Beta1にしました。
多分前はRevision629あたり。
この間、Camera3Dの変更などあったので、さすがにライブラリをアップデートするだけってのではいくはずがないので、変更した点をメモ。
旧Camera3Dクラスと同じ使い方を新Camera3Dクラスで実現するには、

camera.target = DisplayObject3D.ZERO;

とするだけですが、zoomプロパティの値も少し変わっていました。
ここの場合は11から10にしただけです。
(BasicViewを利用する場合、上記コードはたぶん必要ないです。)
Cameraクラス以外では、rotationXの向きというか方向が変わってる。
指定そのままだと、Cubeに表示されているコンテンツのテクスチャがおかしかったので、最初MaterialListが変更されたのかと思った。
rotationYに関しては変更がないです。
rotationZは利用していないので不明。

最近のPV3D2.0 GreatWhite

1ヶ月ほど前になるけど、Camera3Dがめっちゃ変わった。
(Revision645からかな)
正直、面倒な仕様変更なので実際にコード書いて確かめたわけじゃないけど、FreeCameraとかFrustumCamera3Dがなくなった。
というと正確じゃないけど、Camera3DがFreeかFrustumみたいになったというべきか。
Canera3Dのパラメータもすごく変わってます。
BasicView使う人はデフォルトでは前のCamera3Dと同じ動作になるようになっている。
(たぶん、TARGETって、それっぽい名称だし)
[code]var myBasicView:BasicView = new BasicView(width, height, scaleToStage, interactive, cameraType);[/code]
このcameraTypeパラメータが指定するところで、値は以下が使える。
CameraType.TARGET
CameraType.FREE
CameraType.DEBUG
BasicViewではデフォルトで「CameraType.TARGET」が指定されているけど、普通にnew Camera3Dすると「CameraType.FREE」になってるんじゃないかなという気がする。
んじゃ、BasicView使わないときはどうやってcameraType変更するんだってことになるけど、これまたよくわからない。
PV3DScene3Dクラスにpublicな変数でcameraTypeがあるから、これだろうか。
ここで”Free”と指定されているから、上記の気がするという件の根拠なんだけども。
[追記]
PV3DScene3Dクラスでnew Scene3D、new Viewport3Dしてる。
ほんとにすごい変わったなぁ
asdocもRevision677で出力しようとするとXSLTエラーとかでて、生成されないし。
コマンドラインとか勘弁してよ。
Flash Player10用のPV3Dも出てますよ。