Papervision3D – ポリゴンにSWFファイルを貼り付ける方法 (AS3.0)
Papervision3D(PV3D)でポリゴンにSWFファイルを貼り付ける方法を以下の順に書いていきたいと思います。
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);

