Home -> PHP/ming 0.3a MENU

コンバータ・テスト3D

Last modified: 2004/3/22
<<マウスを動かすと回転します。>>


obj2draw3d.phpを改良しました。
面(m.setFace)が4点の場合でも表示されるようにしました。2004/3/22

「draw3d.as」を使うためのコンバータ(obj2draw3d.php)をPHPで作り、メタセコイヤで作ったOBJファイルをコンバートしたテストSWFです。
コンバータ(obj2draw3d.php)は、Macromedia Flash MX or 2004でも使えると思います。

ヨットらしきものは、メタセコイアで「面の生成」->「三角」で作りました。
OBJファイルは3点だけの面表示ですので、「三角面」で作っていかないと穴があいてしまいます。


使い方 :

obj2draw3d.phpの13行目の
$fp = fopen("yacht.obj", "r" ); の"yacht.obj"を変換したい.OBJファイル名に書き換える。

そして

#>php obj2draw3d.php > hoge.as

でhoge.asに変換されたデータができあがります。

次に、テキストエデタで、hoge.asの一番下の「m = new Draw3D (XX , XX);」を削除して一番上に移動させる。
あとは、draw3d.asと同じように

    // get as from external file(s)
    $strAction = join("", file("hoge.as"));
    // add actionscript to movie
    $movie->add(new SWFAction(str_replace("\r", "", $strAction)));

と書いて、ming 0.3aから呼び出すようにします。

ポリゴン数が多いと動きが鈍くなりますので、ほどほどの数でご使用ください。



/////////////////////// test3d.php ///////////////////////
<?
ming_setScale(20.00000000);
ming_useswfversion(6);
$movie = new SWFMovie();
$movie->setDimension(400,400);
$movie->setBackground(0xff, 0xff, 0xff );
$movie->setRate(31);

// get as from external file(s)
$strAction = join("", file("draw3d.as"));
// add actionscript to movie
$movie->add(new SWFAction(str_replace("\r", "", $strAction)));

// get as from external file(s)
$strAction = join("", file("hoge.as"));
// add actionscript to movie
$movie->add(new SWFAction(str_replace("\r", "", $strAction)));

///// mx actionscript /////
$strAction = "
theta = 0;

m.scene.onEnterFrame = function () {
	with (_root) { 
		my = ((m.scene._ymouse) / 190);
		m.clearTransform();
		m.rotateZ (0);
		m.rotateY (theta);
		m.rotateX (my*180*0.0174);
		m.applyPerspective (500);
		theta += 0.02;
		if (theta > 6.282) theta -= 6.282;
		m.render ();
	}
}; 
";
$movie->add(new SWFAction(str_replace("\r", "", $strAction)));
$movie->save("test3d.swf");
?>
//////////////////////////////////////////////