- 2009年04月19日 (日)
- Tweet
フレームアクションで覚える PV3D Vol.02 : Primitiveを理解する
小難しいスクリプトは抜きにして、Flash のフレームアクションだけで Papervision3D をやっていこうというチュートリアル、第二弾です。前回からずいぶんと日がたってしまいましたが、いろいろと落ち着いてきましたので再開していこうと思います。
前回は Papervision3D の導入方法と、最小のスクリプトで動かす方法を説明しました。今回は Papervision3D が扱える、さまざまな 3D のオブジェクトについて説明します。
PV3D の立体が試せる Primitive Generator
3D 空間のなかに表示させるオブジェクトはみな立体的な概念となり、オブジェクトの単位が「球面」や「立方体」、「平面」となります。言葉で説明するより、実際に動くものを見たほうがわかりやすいと思いますので、次の「Primitive Generator 」を作成してみました。
この Primitive Generator は Papervision3D が扱える 3D オブジェクト(プリミティブオブジェクトと言います)を表示させ、それぞれのパラメーターを調整することができるツールです。さらにフレームアクションに簡単にコピペできるように、再現できる ActionScript のソースコードが表示されます。Papervision3D を前回の記事にそって用意した Flash であれば、コピペするだけで再現させることができます。
スクリプトで primitive を扱うには
PV3D で扱えるオブジェクトは以下の 7 種類があります。
- Plane : 平面オブジェクト
- Sphere : 球面オブジェクト
- Cube : 立方体オブジェクト
- Cone : 3角コーン型のオブジェクト
- Cylinder : 円柱のオブジェクト
- PaperPlane : 紙飛行機のオブジェクト
- Arrow : 矢印のオブジェクト
それぞれのクラスファイルは org.papervision3d.objects.primitives パッケージに所属しているため利用するときは「 import org.papervision3d.objects.primitives.*; 」をアクションパネルに記述する必要があります。
たとえば、立方体のインスタンスを作るには次のように記述します。
import org.papervision3d.objects.primitives.*; var sphere = new Sphere(マテリアル, 半径, 横セグメント, 縦セグメント);
ちなみに、もっともよく使われる頻度が高いのは「Plane」「Sphere」「Cube」ですので、この3つを覚えておけばいろいろなデモを見るときに理解しやすくなるでしょう。
パラメーターについて
それぞれのオブジェクトのパラメーターについて説明します。
- width : 横幅
- height : 高さ
- depth : Cubeにおける奥行き
- radius : 半径。Sphere では球体の半径で、ConeとCylinderでは底辺の半径。
- segmentsW : 横方向の分割数
- segmentsH : 縦方向の分割数
segments (セグメント)というパラメーターは 2D にはありませんので、見慣れないパラメーターだと思います。3D では表示オブジェクトをポリゴン化して表示させるのですが、セグメントというパラメーターは大雑把にいうとポリゴンの分割数となります。
セグメントを増やすと、球体( Sphere )ではより滑らかになると思いますが、セグメントの値を大きくするととたんに再生速度(フレームレート)が下がりますので注意が必要です。
次回は
今回はそれぞれのオブジェクトをワイヤーフレームで表示していますが、画像を貼り付けたり、3D のライトで陰影を使えることができる、「マテリアル」について説明したいと思います。
書籍になりました
なお、Papervision3Dの解説はさらに詳しく書籍にもまとめています。このブログを読んでさらにスキルを高めたいという方がいましたら当ブログ管理者が執筆した次の書籍をオススメします。書籍はこちらのページで紹介してますので、興味がありましたらぜひご確認ください。
「Flash3Dコンテンツ制作のためのPapervision3D入門」
ソースコード
- Primitive Generator のソースコード (FlashDevelopで作ったFlexプロジェクト)
2009年12月16日(水) 03:42
[…] まず最初に、この記事はこちらの記事を参考にさせて頂きました。 勉強させて頂きます。どうもありがとうございます。 […]