Papervision3D – ポリゴンにSWFファイルを貼り付ける方法 (AS3.0)

  • hatena bookmark
  • Twitter
  • Delicious
  • Blogger Post
  • Evernote
  • Google Bookmarks
  • Share/Bookmark

Papervision3D(PV3D)でポリゴンにSWFファイルを貼り付ける方法を以下の順に書いていきたいと思います。

  1. MovieMaterialクラスで貼り付ける
  2. MovieAssetMaterialクラスで貼り付ける


1. SWFファイルをMovieMaterialクラスで貼り付ける

MovieMaterial は外部のファイルを読み込んで反映します。
仕様については以下のリンク先の公式ドキュメントにまとめられています。
MovieMaterial

package{

	import flash.events.*;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import flash.geom.Rectangle;

	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.view.*;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.materials.MovieMaterial;

	public class main extends BasicView {

		public function main():void {

			var loader:Loader = new Loader();
			loader.load( new URLRequest( "SWFファイルパス" ) );

			var renderer:BasicRenderEngine = new BasicRenderEngine();
			var scene:Scene3D = new Scene3D();
			var viewport:Viewport3D = new Viewport3D( 0, 0, true );
			var camera:Camera3D = new Camera3D();

			var material:MovieMaterial = new MovieMaterial( loader, true, true, true, new Rectangle(0, 0, 200, 150) );
/*			material.allowAutoResize = true;*/
			material.doubleSided = true;

			this.addChild( viewport ); 

			var object:Plane = new Plane( material );

			scene.addChild( object );

			addEventListener( Event.ENTER_FRAME,
				function():void {
					object.pitch(1);
					object.yaw(1);
					renderer.renderScene( scene , camera, viewport );
				}
			);

		}

	}

}

18行目、19行目でURLRequestでSWFファイルを読み込みます。
26行目でMovieMaterialでマテリアルとして、反映します。

MovieMaterialの厳密な書き方と解説:
var material:MovieMaterial = MovieMaterial(
	movieAsset:DisplayObject = loader,
	transparent:Boolean = false,
	animated:Boolean = false,
	precise:Boolean = false,
	rect:Rectangle = 任意
);
第1引数 movieAsset 読み込むムービークリップのクラス名を指定します。(初期値:null)
第2引数 transparent 透過の有無(true/false 初期値:false)
第3引数 animated アニメーションの有無(true/false 初期値:false)
第4引数 precise 貼り付けたテクスチャの歪みを軽減する(true/false 初期値:false)
第5引数 rect Rectangleでムービークリップの再配置、サイズ変更をする( 初期値:null)

※第5引数について、貼り付けるSWFファイルをポリゴンにぴったり合わせたい場合は、
28行目のコメントを切り、allowAutoResizeを使用する事で実現が可能です。

2. MovieAssetMaterialクラスで貼り付ける

MovieAssetMaterial はシンボルに登録されているムービークリップを反映します。
1のソースをベースに、変更する箇所を書いています。

仕様については以下のリンク先の公式ドキュメントにまとめられています。
MovieAssetMaterial

a. 13行目の読み込むクラスをMovieAssetMaterialクラスへ変更します。
import org.papervision3d.materials.MovieAssetMaterial;

“*”にしてしまっても問題はないです。

import org.papervision3d.materials.*;
b. 19行目、20行目のロード部分を削除します。

ロードの必要がないのでこの部分を削除します。

c. 27行目のMovieMaterialをMovieAssetMaterialに変更します。

以下の例ではMovieClipのクラス名MovieClip0を指定しています。

var material:MovieAssetMaterial = new MovieAssetMaterial ( "MovieClip0", true, true, true, true );
MovieAssetMaterialの厳密な書き方と解説:
var material:MovieAssetMaterial = MovieAssetMaterial(
	linkageID:String = "MovieClip0",
	transparent:Boolean = false,
	animated:Boolean = false,
	createUnique:Boolean = false,
	precise:Boolean = false
);

※MovieMaterialとプロパティの設定が異なっているので注意が必要です。

第1引数 linkageID 読み込むムービークリップのクラス名を指定します。(初期値:null)
第2引数 transparent 透過の有無(true/false 初期値:false)
第3引数 animated アニメーションの有無(true/false 初期値:false)
第4引数 createUnique 複数のMovieClipを入れ替えたりする場合、最初のMovieClipを維持しない(true/false 初期値:false)
第5引数 precise 貼り付けたテクスチャの歪みを軽減する(true/false 初期値:false)

また、movieMaterialの引数で実現できたムービークリップの再配置、サイズ変更は以下のような形で実現が可能です。

material.rect = new Rectangle(0, 0, 200, 150);
  • hatena bookmark
  • Twitter
  • Delicious
  • Blogger Post
  • Evernote
  • Google Bookmarks
  • Share/Bookmark
関連する記事:
  1. Papervision3D – primitiveとColladaファイル(.dae)の表示方法 (AS3.0)
  2. Flashで別ドメイン(クロスドメイン)にある画像の表示方法(AS3.0)
  3. GoogleMaps API for Flash – 3D表示できるMap3Dクラスを試してみました (AS3.0)
  4. Flashで作ったウィジェットを出力する方法(Perl/PHP出力付き)
コメント 停止中