Home > Away3D

Away3D Archive

AwayPhysicsを使って衝突判定をしてみる


Away3D 4とAwayPhysicsを使って衝突判定をしてみました。

AwayPhysicsは、GitHubからダウンロードしました。

GravityBall

AwayPhysicsのサンプルの中にあるGravityTest.asを、ちょっと古いWindowsXPのマシンで動かしてみたら、FPSの値が一桁しか出なかったり…

マシンによって、かなりの速度差がありますね。

ソースは、ここに置いておきます。

もっといい書き方がありそうだけど、最初なのでこんなところで…

しばらくAwayPhysicsで遊ぼうっと!

★追記(2011/12/04)

オブジェクト(球体)の数を増やすとFPSがどのくらい出るのかを検証してみたので、追記しておきます。

2年くらい前に購入したWindows7の安いノートPCでの結果です。(細かい数値は切り捨て)

オブジェクト数 FPS ポリゴン数
100 60 6万
250 50 15万
500 25 30万

enableParserを使って、ファイルサイズを抑えてみる


前回のエントリで、以下のようなコードがありました。

Parsers.enableAllBundled();

enableAllBundledを使うことで、各種ファイル形式のパーサーを一度に読み込んで使えちゃうんですが、これだとファイルサイズが肥大化してしまうみたいです。

away3d.loaders.parsers>Parsers.asファイルに、英語のコメントが書かれています。

ざっくり意訳してしまうと、以下のような感じになるかと…

enableAllBundledを使うと、全てのパーサークラスを読み込んでいるので、SWFのファイルサイズが50~100KB増えちゃいます。読み込むファイル形式を制限して、個別にAssetLibrary.enableParser()を使ってあげると、SWFのファイルサイズはいい感じになりますよ

検証してみた

SWFのファイルサイズがどれだけ違うのか、検証してみました。

検証したデータは、先の英語の記事からDL出来るもの(Loader3Dを使って.awdファイルを読み込む)です。FlashDevelopを使って、デバッグとリリースの両方で試してみました。

//Parsers.enableAllBundled();
//enableAllBundledではなく、個別にファイルを読み込む
Loader3D.enableParser(AWDParser);
Loader3D.enableParser(AWD2Parser);
  デバッグ リリース
Parsers.enableAllBundled() 255K 113K
Loader3D.enableParser(AWDParser) 210K 92K
Loader3D.enableParser(AWD2Parser) 204K 90K

サンプルではLoader3Dを使っていたので、それで検証してあります。

AWDParserとAWD2Parserでの違いですが、AWDParserはAWD1ParserとAWD2Parserのラッパークラスなので、その分若干ファイルサイズに違いが出ているっぽいです。

FlashDevelop 4とAway3D 4でStage3Dを試してみる


FlashBuilder4.5とAway3D 4を使ってStage3Dを試す方法が、Developer Connection(US)に掲載されています。

この記事をFlashDevelopで試してみることに…

FlashDevelopのセッティング

FlashDevelop側のセッティングですが、簡単です。

FlashPlayerもインストール

FlashDevelopをインストールする際、FlashPlayerにチェックを入れておくと、FlashPlayerも同時にインストールしてくれます。

デバッグ版のFlashPlayerもインストール

デバッグ版のFlashPlayerも一緒にインストールしてくれるので、後で別途インストールしなくていいので、楽チン!(インストールにかなり時間は掛かりますが…)

あとFlashBuilderだとglobalplayer.swcをダウンロードして…とかしなければいけませんが、FlashDevelopはインストールの際にDevelop側が勝手にやってくれます。

params.wmode = “direct”;もFlashDevelopでは、デフォルトでその設定になっています。

プロジェクトの設定を、FlashPlayer11に

プロジェクト設定から、対象プレイヤーをFlashPlayer11に変更しておきます。

コンパイラオプションの設定

コンパイラオプションの設定を追加しておきます。(-swf-version=13)

Away3D 4をダウンロード

先の記事に書かれているGitHubにあるAway3Dのページから、ソースをダウンロードしてきます。

GitHubからダウンロード

Away3D 4をやってみる

ソースコードなどは先の記事に詳しく書かれているので、ここでは割愛しますが、コード内に以下の記述があります。

Parsers.enableAllBundled();

これを記述することで、away3d>loaders>parsersの中にある以下のクラスが使えるようになります。

  • AC3DParser
  • AWDParser
  • Max3DSParser
  • MD2Parser
  • MD5AnimParser
  • MD5MeshParser
  • OBJParser

これにより、.awd、.3ds、.objファイルなどを扱えるようになります。(TweenerのSpecial Propertyみたいな感じですかね?)

この記述を書かないと、エラーが発生します。

エラーが発生

本当にStage3D?

きちんとStage3Dで動いているのかな? と思いますよね?

日本のDeveloper Connectionに以下の記事が掲載されています。

記事内のイラストを見ると、DisplayObjectが最前面にあって、その後ろ側にStage3Dのレイヤーがあるそうです。

先のAway3Dのコードに、以下の記述を追記してみます。

//初期化あたりに書いておく
_sp = new Sprite();
_sp.graphics.beginFill(0x00FF00);
_sp.graphics.drawRect(0, 0, 800, 600);
_sp.graphics.endFill();
addChild(_sp);
//この後にAway3Dの記述があります

これを実行すると、画面全体が緑一色になります。

最前面のレイヤー(DisplayObject)に緑のBOXが表示されているからですね。

//初期化あたりに書いておく
_sp = new Sprite();
_sp.graphics.beginFill(0x00FF00,0.2);
//以下略

これを実行してみると、DisplayObjectの背後のレイヤーでStage3Dが動いているのが理解出来ます。

Away3DのView3Dクラスの中を見ると分かるのですが、away3d>core>managers>Stage3DManagerやaway3d>core>managers>Stage3DProxyを使うことによって、Away3Dの描画処理をStage3D側で行う設定になっているみたいです。

Away3Dのテンプレートを作ってみた


Away3DLiteには、away3dlite>templatesフォルダの中に、Away3DLiteを始めるのに簡単なテンプレートファイルが幾つか入っています。

これを使うことで、ちょっとAway3DLite試してみるか…といった事が簡単に出来ちゃいます。

でもこのテンプレートファイルは、Away3Dにはないんですよねぇ…

前々から「Away3Dにもテンプレートファイルがあったら、便利だよなぁ」と思っていて、日曜日にFlashup 第12回に参加してきたこともあったので、テンプレートファイルを作ってみました。

作ったと言っても、(Away3DLiteと同じ感じで使えるようにする為)8~9割はAway3DLiteのテンプレートと同じコードなんですけど…

ダウンロード

使い方

BasicTemplate.asというファイルをダウンロードしてきて、同一階層にMainというクラスファイルを作成。

package 
{
	import away3d.primitives.Cube;
	
	/**
	 * @author flabaka
	 */
	
	public class Main extends BasicTemplate 
	{
		
		private var cube:Cube
		
		override protected function onInit():void {
			cube = new Cube();
			scene.addChild(cube)
		}
		
		override protected function onPreRender():void {
			scene.rotationY += 2;
		}
		
	}
	
}

これをコンパイルすると、Cubeがくるくる横に回転します。

ちょっと試したいんだけど、View3DとかScene3DとかCamera3Dとか毎回作るの面倒くさいよね! って人には、ちょっとだけ便利かも…

それは、まぁ、僕なんですけど…

Away3D Synthax


久しぶりにAway3Dでも触ってみようかなぁ…と思って、公式サイトのDownloadのページをみていたら、気になるものが…

Current syntax highlight for Flash IDE CS3/CS4というmxpファイルがあったので、早速インストールしてみました。

Component installerと書かれていたので、インストールしたら、ウィンドウ>コンポーネントに何か表示されるのかなぁ…と思っていたんですが、どうやらそうではないみたい。

で、これ(mxp)をインストールしたらどうなるの? ってのを、調べてみました。

★mxpでインストールされるもの

  • Cドライブ>Documents and Settings>User Name>Local Settings>Application Data>Adobe>Flash CS3>ja>ConfigurationのExtensionsフォルダにmxiファイル
  • ConfigurationのActionsPanel>CustomActionsフォルダにAway3D_synthax.xmlファイル

で、このAway3D_synthax.xmlをエディタで開いてみると、colorsyntaxのidentifierがイロイロ定義されています。

ここから判断すると、識別子のカラーリングがどうにかなるのかな? と思って、早速Flash IDEのアクションパネルを開いてみました。

比較したソースは、getting startedからダウンロードしたlessonsフォルダのLesson_Basic_01_HelloAway3D.flaのソースです。

mxpがONの時

mxpがonの場合

Away3D_synthax.xmlファイルに定義されているidentifierがカラーリングされています。

mxpがOFFの時

mxpがoffの場合

identifierはカラーリングされていません。

Flash IDEのアクションパネルでソースを書いていく方は、これを入れておいた方が便利なんじゃないかなぁ…と思います。

ホーム > Away3D

Search
Feeds
Meta

flashDevelopスポンサー

Return to page top