Navigation


RSS: Articles



PV3Dサンプル 表・裏のある平面とマテリアル

05-11-2008 @ 21:53,Papervision3D,kayama, Leave comment - 1

久しぶりにPV3Dです.tutorialがなくなったので,サンプルを参考に作ります.
今回は,裏表の異なる平面です.
Two Sided Plane with Images and Text
を参考にさせていただきました.但し,マウスイベントは入れていません.




新規にFLAファイルを作りましょう.名前はDoubleSidedPlane.flaくらいで.
前回のBasicMovement.asファイルをDoubleSidedPlane.asとして別名保存しましょう.
DoubleSidedPlane.flaのドキュメントクラスの設定をお忘れなく.

方法は,平面のベースとなるDisplayObject3Dに表・裏のPlaneを貼り付けます.
表・裏のマテリアルはColorMaterialだけでは面白くないので,表にはテキスト,裏には画像を貼り付けることにしました.

まず,適当なビットマップ画像を用意しましょう.大きさは400x400くらいが適当です.
私の場合は,babyPiaの画像の関係で624x450になっています.
Flashのファイルメニューからライブラリに読み込んでください.
読み込んだ画像はリンケージ設定で適当なクラス名を付けます.私の場合は"BabyPia"です.

表のマテリアル:
ここでは,ベースとなるSpriteを生成し,色を付けて,TextFieldを貼り付けました.
SpriteやMovieClipなどからマテリアルを生成する場合はMovieMaterialクラスを使います.

裏のマテリアル:
ライブラリに追加したBitmapクラスから生成します.このときはBitmapAssetMaterialクラスを使うことになります.
外部の画像ファイルを直接読むこともできます.その場合はBitmapFileMaterialクラスです.
Materialクラスについては,後日,まとめることにしましょう.

さて,import宣言です.今回は,flash.textパッケージのクラスと,papervision3d.materialsパッケージのクラスが加わります.
パッケージ宣言・インポート


クラス名がDoubleSidedPlaneですから,コンストラクタもDoubleSidedPlane()です.

クラスのメンバー変数(フィールド)としては,表・裏のPlaneとそれらを貼り付けるためのベースとなるDisplayObject3Dを用意します.表・裏のマテリアルはそれぞれMovieMaterialとBitmapAssetMaterialです.

クラス宣言と変数


初期化メソッドのうち,initPapervision()とinitListeners()はそのまま使いますが,initMaterials()とinitObjects()は変更が必要です.

マテリアルの初期化メソッド


オブジェクトの初期化メソッド


回転させて仕上げです.


なお,babyPiaというのは,情報メディア学科のマスコットキャラクターipia(アイピア)誕生直後のお姿です.

<<続き>>にコードがあります.


More

Papervision3D その4 BasicMovement

02-04-2008 @ 23:18,Papervision3D,kayama, Leave comment - 0

しばらく期末試験の採点等々で更新できませんでしたが,ぼちぼち再開します.
今回は,
6. Basic Movement in 3d
です.前回までは平面を1つ描画しただけで,全く3Dらしくなかったのですが,今回はそれを回転させます.

前回のColorPlaneSample.asファイルをBasicMovement.asとして別名保存しましょう.回転のアニメーションを作るということは,対象を少しずつ回転させながら描画(renderScene)を繰り返すということです.Flashで繰り返し処理といえばEvent.ENTER_FRAMEイベント登場ですね.
まず,イベント処理が加わりますから,flash.events.Eventクラスをimportします.
パッケージ宣言・インポート

クラス名をBasicMovementに変更しましたから,コンストラクタもBasicMovement()です.
init()メソッド内に,イベント処理を初期化するinitListeners()メソッドを追加します.今後,様々なイベント処理の初期化がこのinitListeners()メソッドに追加されていきます.今回はrenderを繰り返すので,その代りにinitRender()をコメントアウトしておきましょう.
初期化メソッド

イベント処理の初期化メソッドinitListeners()では,Event.ENTER_FRAMEイベントのリスナーメソッドをenterframeListenerとして,直接(rootに)addEventListenerします.
イベント処理初期化メソッド

繰り返し処理のリスナーメソッドenterframeListenerでは,planeのY軸まわりの回転と描画を行います.
リスナーメソッド

initRender()メソッドは利用していないので,一応コメントアウトすれば変更は終わりです.前回も利用したPlaneSample.flaのドキュメントクラスをBasicMovementにするか,新規の.flaファイルをBasicMovement.asと同じフォルダに作成し,ドキュメントクラスとしてBasicMovementを指定してください.
プレビューすると赤いPlaneが回転しているはずです.
でも,しばらくの間,Planeが見えなくなる時がありますよね.それは,裏面に色が付いていないからです.裏を同じ色にするなら,initMaterials()メソッドに次の1行を追加しましょう.
material.doubleSided = true;
表裏を異なる色にするのは後日ということで.

<<続き>>にコードがあります.


More

Papervision3Dその3 ColorPlaneSample

01-20-2008 @ 14:22,Papervision3D,kayama, Leave comment - 0

今回は,
5.Applying Materials to a pv3d 3D Object(Skinning/Texturing)
をやりましょう.Materialとはオブジェクトの表面の光沢や明るさ,透明感など,いわゆる質感のことです.
前回のPlaneは既定のMaterialであるワイヤーフレームでした.ここでは,先ずColorMaterialをオブジェクトに適用します.

新規.asファイルで,クラス名をColorPlaneSampleにしましょう.フィールド(属性,プロパティ)にはColorMaterialクラスのmaterialを追加します.
それに伴って,ColorMaterialクラスをimportする必要があります.
インポート文とクラス宣言


コンストラクタは名前がColorPlaneSample()となり,初期化メソッドinit()にMaterialの初期化メソッドinitMaterials();を追加します.
但し,オブジェクト(Plane)の初期化initObjects()でMaterialオブジェクトを利用するので,initObjects()の前にinitMaterials()を挿入します.
初期化メソッド


Materialの初期化メソッドでは,color値を引数として,ColorMaterialクラスのコンストラクタを呼び出し,ColorMaterialインスタンスを生成します.
Material初期化メソッド


オブジェクトの初期化メソッドinitObjectsでは,Planeのインスタンス生成時にコンストラクタの引数としてMaterialのインスタンスを渡します.
オブジェクト初期化メソッド

以上で変更は終わりです.前回に作成したPlaneSample.flaのドキュメントクラスをColorPlaneSampleにするか,もしもColorPlaneSample.asファイルを前回とは別のフォルダに保存した場合は,そのフォルダに新規のColorPlaneSample.flaファイルを作成し,ドキュメントクラスとしてColorPlaneSampleを指定してください.
プレビューすると赤いPlaneが表示されるはずです.
ColorPlaneSampleクラス
参考:コンストラクタの引数としてmaterialを渡さずに,3Dオブジェクトのmaterialプロパティに代入してもOKです.
plane = new Plane();
plane.material = material;

<<続き>>にコードがあります.


More

Papervision3Dその2 PlaneSample

01-14-2008 @ 10:17,Papervision3D,kayama, Leave comment - 0

授業が始まると書き込みができなくなるのですが,少しずつでも更新することが大事ですね.

今回はhttp://pv3d.org/pv3d-20-tutorial-list/の
3. Creating a pv3d 2.0 Skeleton Class
4. Creating Your First pv3d 3D Object
を合わせてやりましょう.
プログラムコードは若干変更してあります.

前回に準備したFlashCS3で,新規のflaファイルを作成します.
適当なフォルダにPlaneSample.flaとして保存してください.
次に,このflaファイルのドキュメントクラスを作成していきます.
新規ActionScript3.0ファイルを作成し,PlaneSample.asとして先のflaファイルと同じところに保存します.
以下,最初のお約束です.

パッケージ宣言とインポート文

先ずPV3Dで重要となる要素はscene,camera,viewportです.
3次元のオブジェクトが配置されたsceneをcameraの視点から見てviewportの2次元キャンバスに描画するということになります.
Scene3D,FreeCamera3D,Viewport3Dはそれぞれのクラスで,cameraには別のクラスも用意されています.
scene,camera,viewportのオブジェクトから実際に2D描画するのがrendererで,最後のimport文は,平面を作るためのクラスです.

PlaneSampleクラスを宣言して,scene,camera,viewport,renderer,planeを用意します.
クラスとフィールド宣言


初期化メソッドをinit()として,コンストラクタから呼び出すようにしましょう.
コンストラクタ


初期化メソッドでは,PV3Dの準備とオブジェクトの準備をし,
2D描画(レンダリング)をします.
外部からこの初期化メソッドは呼ばないので,privateにしておきましょう.
初期化メソッド


PV3Dの準備用メソッドですscene,camera,viewport,rendererの各オブジェクトを生成し,viewportはディスプレイリストにaddChild()しておきます.
PV3D初期化


オブジェクトの準備メソッドです.今回は平面が一つだけ.
平面を生成して,sceneにaddChild()します.
オブジェクト初期化


viewportに描画します.renderScene()メソッドを呼び出し,scene,camera,viewportを引数で渡します.
レンダリング


一応,これでできました.PlaneSample.flaファイルのドキュメントクラスとしてPlaneSampleを設定し,プレビューしてみましょう.以下のようにPlaneが表示されると思います.
大きさ,表示位置は設定していないので既定の値になります.色はプレビューの度に変化します.
PlaneSampleプレビュー
<<続き>>にはプログラムコードがあります.



More

Papervision3Dの勉強も始めましょう

01-04-2008 @ 18:00,Papervision3D,kayama, Leave comment - 0

Papervision3DはActionScriptで3Dを扱うためのライブラリです.
pv3d.org:http://pv3d.org/
現在,Ver.2.0のAlpha版が配布されていますので,その使い方を1から勉強します.
pv3d 2.0 Tutorial List:http://pv3d.org/pv3d-20-tutorial-list/
内容を訳しながら説明していきます.
1.Papervision3D 2.0 Alphaの環境設定
必要となるもの:PC(あたりまえ)
Flash CS3 または Flex2.FlashDevelopというフリーのソフトも使えます.
なお,このブログではFlashCS3を使うものとして説明します.
1) まず,PV3D2.0はまだアルファ版なので,正式でない版(サブバージョン)のソフトを
取得するために,TortoiseSVNというソフトをインストールする必要があります.
http://tortoisesvn.net/downloads
からダウンロードしてインストールします.
2) PV3D2.0をダウンロードするために,フォルダを作成します.
どこでも構わないのですが,これからActionScriptのライブラリをいろいろ使おうと
思っている人はドキュメントフォルダにaslibなどの名前でフォルダを作成して,
その中にPapervision3Dというフォルダを作成しましょう.作成した
Papervision3Dフォルダを右クリックすると,
1)でインストールしたTortoiseSVNの機能で,SVN Checkout...というメニューが
出てくると思います.これを選択し,ダイアログのURL of repository:に
http://papervision3d.googlecode.com/svn/
と入力してOKを押します.すると,ダウンロードが始まりますので,ダイアログに
Completedと出たら完了です.
3) FlashCS3の環境設定をします.
Flashを起動し,編集→環境設定でダイアログを出し,ActionScriptのカテゴリで
言語:ActionScript3.0設定ボタンを押します.下図のようなクラスパスの設定ダイアログが
出たら,空欄に赤の部分のようにPapervision3Dのフォルダへのパスを入力します.
なお,上の赤丸のターゲット参照ツールを使うと簡単です.
クラスパス設定ダイアログ
私の環境はVistaで,D:ドライブにドキュメントフォルダを移動しているので,
XPなどの場合は,適当に修正してください.通常なら,
C:¥Documents and Settings¥kayama¥My Documents
¥aslib¥Papervision3D¥trunk¥branches¥GreatWhite¥src
となるでしょう(もちろん,kayamaは個人のアカウント名に書き換えます).
これでOKボタンを押せば環境設定の終了です.