« ROXIKの城戸さん | メイン | いまさらTweener »

ActionScript3.0で3Dしてみる 01

del.icio.us it!   hatena bookmark

城戸さんの話しを聞いて1から3Dをやってみることにした。

とりあえずこれをAS3に移植してみる。

Webデザインとグラフィックの総合情報サイト - MdN Interactive - 第1回 3D表現とは?
http://www.mdn.co.jp/content/view/1093/88/


http://labs.un-q.net/as3/3d/01/
package {

    import flash.display.*;
    import flash.events.*;

    [SWF(width="400",height="300",frameRate="24",backgroundColor="#FFFFFF")]            
    public class Test3D01 extends Sprite {

        private var panel:Sprite;
        private var centerX:Number = stage.width/2; // 中心点のx座標をステージの横中央に
        private var centerY:Number = stage.height/2; // 中心点のy座標をステージの縦中央に
        private var centerZ:Number = 0; // 中心点の座標を設定
        private var fl:int = 300; // 視点からの焦点(screen)までの距離を設定
        private var r:int = 100; // 回転の半径
        private var angle:Number = 0; // 回転角の初期値
        private var px:Number;
        private var py:Number;
        private var pz:Number;
        private var rad:Number;
        private var scale:Number;
        
        function Test3D01() {

            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;

            addEventListener(Event.ENTER_FRAME, loop);

            init();

        }

        private function init():void {
            panel = new Sprite();
            panel.graphics.beginFill(0x000000);
            panel.graphics.drawRect(0,0,50,50);            
            addChild(panel);
        }

        private function loop(e:Event):void {
            
            angle += 5;
            rad = angle / 180 * Math.PI; // 角度をラジアンに変換
            px = Math.cos(rad)*r; // 半径、ラジアンをもとに仮想3D空間のx座標を計算
            py = 0;
            pz = centerZ - Math.sin(rad) * r; // 半径、ラジアンをもとに仮想3D空間のz座標を計算
            scale = fl / (fl+pz); // 透視変換の比率を計算
            panel.x = px * scale + centerX;
            panel.y = py * scale + centerY;
            panel.scaleX = panel.scaleY = scale;
            
            panel.x += 150;
            panel.y += 150;

        }
    }
}



トラックバック

このエントリーのトラックバックURL:
http://un-q.net/mt-tb.cgi/196

コメント (4)

kaya:

おおーありがとうございます!
AS3の勉強になります^^

>kayaさん
いえいえとんでもないです。
記事書かれてる方から直々にコメントでびっくりしました。

結構前から
http://www.procreo.jp/
は知っていて、すごいなーと思ってました。

時間を見つけて3DのやつAS3に移植していきまーす

はじめまして。
AS3.0 による 3D 表現なら、friends of ED から出ている次の書籍が役立つんではないかと思います。
"Foundation Actionscript 3.0 Animation:Making Things Move!"
本を買わずともソースが落とせるのがありがたいところ。
friends of ED 様々です。
ch15~17が 3D 表現に関わるコードが格納されたディレクトリです。

> Aquiouxさん
コメントありがとうございます。
Blogのほういつも購読させてもらってます。

ソースがダウンロードできるんですね。
参考になりそうです。
ありがとうございまーす

コメントを投稿

crossreview