フレームアクションでPapervision3Dを簡単に

090113_cube

Papervision3D 2.0 Greate White にはより短いコードで3Dが扱えるBasicViewというクラスがあります。これが非常に便利で3Dの面倒な初期化スクリプトを書く必要がなく、自分は3Dの表示部分だけ作る事に専念できます。

そこで、この便利なBasicViewを Flash CS3/CS4 のフレームアクションに移植してみました。最短8行で3Dの球面が表示できます。

使い方は簡単

一番簡単な使い方として球面を作ってみます。次のスクリプトをAS3プロジェクトのroot第一フレームにコピペしてパブリッシュしてみてください。

前提としてPapervision3Dが必要となります。Google Codeからダウンロードしてきたライブラリで.flaファイルと同じ階層に「nochump」「org」フォルダを設置下さい。

090113_folder

次のコードはサンプル1のフレームアクションです。

[source:javascript]
// 初期化ASファイルを読み込みます
include “FS_BasicView.as”

// 初期化
init3D();

// 球面の作成
var sphere:Sphere = new Sphere(new WireframeMaterial())

// 3D空間に表示させる
scene.addChild(sphere)

// 毎フレーム時に回転させる
addEventListener(Event.ENTER_FRAME, function(e:Event){
sphere.rotationY += 1
});

// レンダリングを開始
startRendering();
[/source]

FS_BasicView (フレームスクリプト ベーシックビュー)の使い方

説明するとFS_BasicView.as が今回私が作った物で、フレームアクション化したBasicViewです。これをインクリュードするだけで、Papervision3Dの基本設定が初期化されます。

  • camera : 3D空間のカメラ
  • scene : 3Dシーンオブジェクト、3D空間のrootはsceneでこれにaddChildして3Dオブジェクトを表示させます
  • startRendering() : レンダリング開始の関数です。一度実行すればレンダリングが毎フレーム時に行われるようになります。
  • stopRendering() : レンダリング停止の関数です。
  • viewport : ビューポートとは例えるならテレビのモニタです。PV3Dでレンダリングした3D空間を映し出すモニタと考えればよいでしょう。深く立ち入らなければ特に使う事は少ないと思います。
  • renderer : レンダリングエンジン。内部的に使用しますが深く立ち入らなければ特に使うことはないかも。

初期化のカスタマイズ方法

初期化メソッドは init3D です。include “FS_BasicView.as”を呼び出した直後に指定します。ディフォルトの設定は画面サイズにフィットするようになり、XYZ原点が画面中央になるように設定されてます。

カスタマイズする場合は、
[source:javascript]
init3D(横幅, 縦幅, 画面にフィットさせるか, インタラクティブを扱うか, カメラモード )
[/source]
という設定になります。例を示すと 300×200 の固定サイズでカメラの向きを自由に設定でき、マウスイベントを拾えるようにするには

[source:javascript]
init3D(300, 200, false, true, CameraType.FREE_CAMERA)
[/source]

と設定下さい。詳しくはBasicViewクラスコンストラクターと同じ引数となりますので、BasicViewの設定が参考になると思います。

これで楽しくパブリッシュ

フレームアクションであると言っても使用できない機能があるわけではないので、色々試せると思います!

ちなみに当ブログで紹介しているPV3Dのデモの9割はBasicViewでかいているので、フレームアクションへの移植も比較的に容易にできると思います。

使用する際の注意点

  • 基本的に1フレーム内にスクリプトを書くように設定ください。フレームをまたいで記述すると色んな原因でコンパイルエラーに悩まされると思います。
  • BasicViewの機能をもつだけでなく、できる限り多くのクラスをimportしています。これはフレームアクションでできる限りスクリプトの記述量を減らすためです。
  • BasicViewクラスのプロパティ「cameraAsCamera3D」と「cameraAsDebugCamera3D」は省いています。理由はsetter/getterの移植が面倒だったということですが、特に使う事がないと思います。。

最後に

フレームアクションで移植したのはPV3Dに取っ付き易くするためですが、より深く使ってみたい、フルフラッシュでがつがつやってみたい、という方はぜひ本来の使い方であるクラスベースで使用されることをオススメします。というよりアクションパネルが使いずら過ぎるので正直フレームアクションだと長いコードを書くのが辛いと思うのです。Flex BuilderかFlashDevelopを使えば、とても効率よくスクリプトを書けるので、ちょっと慣れてきたらぜひFlash CS3/CS4の他にエディターを使ってみると良いと思います。

参考サイト

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加