□技術メモ - AdobeFlash ※管理人の個人的な技術メモです。このページの内容を実行した結果について 管理人はいかなる責任も負いかねますのでご自身の責任でお試しください。 ----------------------------------------------------------- ○用語 ・FrameRate フレームレート 単位時間あたりのフレーム数、コマ数のこと。 単位はfps(frames per second) ・シェーディング(shading) 明暗のコントラストで立体感を与える技法。ポリゴンの法線と光源の角度で明暗を付ける、光源からの距離で明暗を調整するなど。 ・滑らかなシェーディング ポリゴンの頂点の法線が正しくなるように計算して、ポリゴン内の各ドットの法線の角度を補間すれば立体の表面が滑らかな表示になる。 グーローシェーディング(gouraud shading), フォンシェーディング(phong shading)などの手法がある。 ○パブリッシュの手順(Adobe Flash Pro CS5/CS5.5) ・Flash Player 11 の出力用の機能拡張をしていない場合は、.mxpファイルをダウンロードして、 機能拡張マネージャから.mxpファイルをインストールする。(CS6は不要) ・asファイルを新規作成して、ActionScriptのコードを記述して保存する。 その際、ファイル名とクラス名を揃える。 ・flaファイルを新規作成する。画面右側のクラス名記入欄に上記のクラス名を設定。 ・次に「ActionScript3.0の設定」を選択。ダイアログが開くのでソースパス(フォルダまで)と ライブラリのパスを設定する。 ・ファイル - パブリッシュ設定 - 出力ファイルの設定画面で、 FlashとHTMLにチェックが入っていることを確認する。 ・Flashタブにて、プレイヤーに「Flash Player 11」、Scriptに「ActionScript3.0」を選択。 ・HTMLタブにて「Flash WMode Direct」を選択。(CS6の場合はダイアログ下の方にてダイレクトを選択) ・Publishを実行すると、HTMLファイルと.swf(shockwave flash)ファイルが出力される。 ・HTMLをブラウザで開くと動作確認できる。 ○Altanativa3D使用時の処理手順概要 ・Altanativa3Dを使用するにあたっては少なくとも以下について定義が必要。 Stage3D, View, Camera, Scene(3D空間) ・処理手順概要 --Mainクラス(Spriteクラスより拡張とする)にて以下を定義 public Function Main() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; --Stage設定 --stage3dをstageより作成 //Flashのステージ? stage3d=stage.stage3Ds[0]; stage3d.addEventListener(Event.CONTEXT3D_CREATE, 初期設定関数); //Context3Dのインスタンス初期化完了時に呼ばれる関数を定義 stage3d.requestContext3D(); //Context3Dのインスタンスを初期化 } 初期設定関数 { --View view=new View(stage.W, stage.H); //view addChild(view) --Camera camera=new Camera3D(1, int.MAX_VALUE); camera.view=view //カメラとviewを関連付ける --Scene scene=new Object3D; //3D空間 scene.addChild(camera); //3D空間にカメラを置く --プリミティブ(標準図形)を使用する場合の例 box=new Box(width, length, height, 各種設定値...); scene.addChild(box); //3D空間に直方体を配置 --Upload for each (var resource:Resource in scene.getResource(true)) { resource.upload(stage3D.Content3D) //3D空間にあるものすべてをリソースにUpload } --レンダリングの直前に呼ばれる関数を定義 addEventListener(Event.ENTEWR_FRAME, 関数A); } --図形の位置などを変更 関数A(event:Event):void { box.rotationY += Math.PI / 180; //単位はラジアン。フレームあたり1度回転 camera.render(stage3d); } ○Altanativa3D Bitmap形式データの作成 ・Apache Flexをインストールできない場合等に、.jpgファイルなどの外部ファイルを リソースとして使用できない場合がある。そんな場合等に 単色bitmapデータおよびそれを使ったマテリアルを作成するコードの例は以下の通り。 import flash.display.*; var bmd:BitmapData = new BitmapData(128,128,true,0xFF778899); //width, height, 透明度サポート有無, color(16進で明度,R,G,B) var material:VertexLightTextureMaterial = new VertexLightTextureMaterial(new BitmapTextureResource(bmd)); //ライトにより明暗のできるマテリアルを作成 ○Altanativa3Dが動作する条件(2115.01.21記) --------> この範囲は推測を多く含みます ・Altanativa3Dを使用するコードを実装したswfファイルを、別のswfファイルから起動させようとしたが、どうも動作しない。 ・参考書などのサンプルコードをパブリッシュしてもswfファイルをブラウザから単体で動かすことはできない。 WModeDirectでパブリッシュしたhtmlから起動すること。 ・パフォーマンスはPaperVision等他のエンジンの1000倍程度あるとのことだが、その分動作条件は厳しいのかもしれない。 <-------- ○Away3D (調査中)