logicalyze::blog

Archive for the ‘3D’ Category

[wonderFl] PV3Dの練習3(地球と月)

leave a comment

またまた、wonderFlでPV3Dのサンプルを書いてみました。
タイトルは、地球と月です。(笑)
ありふれたサンプルのような気もしますが、まあ、あくまで練習ですので・・・
今回は、BasicViewの継承ではなく基本的なスタイルで書いてみました。

ちなみに、またまたFlashDevelopのRC6が出てようです。
日本語化ファイルは、RC3のものでOKのようです。
詳細は、以下をどうぞ!

	public class PV3DEarth extends Sprite
	{
		private var viewport:Viewport3D;
		private var scene:Scene3D;
		private var camera:Camera3D;
		private var material1:WireframeMaterial;
		private var material2:WireframeMaterial;
		private var earth:Sphere;
		private var moon:Sphere;
		private var renderer:BasicRenderEngine;
		private var angle:Number;
		private var speed:Number;
		private var position:Number;
		public function PV3DEarth ():void
		{
			set_3dscene();
			init();
		}
		private function set_3dscene():void
		{
			viewport = new Viewport3D(450, 450, true, false);
			addChild(viewport);
			scene = new Scene3D();
			camera = new Camera3D();
			renderer = new BasicRenderEngine();
			camera.z = -3000;
			camera.focus = 100;
			camera.zoom = 6;
		}
		private function init():void
		{
			material1 = new WireframeMaterial(0xFFCC00);
			material1.smooth = true;
			earth = new Sphere(material1, 400, 20, 20);
			earth.rotationZ = 30;
			material2 = new WireframeMaterial(0xFF0000);
			material2.smooth = true;
			moon = new Sphere(material2, 100, 8, 6);
			moon.y = 100;
			speed = -.03;
			angle = 0;
			position = 700;
			moon.z = Math.sin(angle) * position;
			moon.x = Math.cos(angle) * position;
			earth.addChild(moon);
			scene.addChild(earth);
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		private function move_moon():void{
			moon.z = Math.sin(angle) * position;
			moon.x = Math.cos(angle) * position;
			angle += speed;
			moon.rotationY += 5;
		}
		private function onEnterFrame(e:Event):void
		{
			earth.rotationY -= 1;
			move_moon();
			renderer.renderScene(scene, camera, viewport);
		}
	}
}

PV3D なんとなく地球と月的な・・・

Read the rest of this entry »

Written by admin

6月 12th, 2009 at 4:00 am

久々のwonderFl・・・PV3D練習2(スパイラル)

leave a comment

久々にwonderFlやってみました。

Papervision3Dを使ってスパイラル状に並べてみるやつです。

package  
{
	import flash.events.Event;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;
	[SWF(backgroundColor = "#000000", frameRate = "30")]
	public class PV3DSpiral extends BasicView
	{
		private var angle:Number = 0;
		private var num_spirals:int = 8;
		private var diffY:int = 30;
		public function PV3DSpiral(viewportWidth:Number=400, viewportHeight:Number=400, scaleToStage:Boolean=true, interactive:Boolean=false, cameraType:String="Target") 
		{
			super(viewportWidth, viewportHeight, scaleToStage, interactive,cameraType);
			init();
			startRendering();
		}
		
		private function init():void
		{	
			var total:int = 80;
			var one_angle:Number = ((Math.PI*2) * num_spirals) / total;
			for (var i:int = 0; i < total; i++)
			{
				var material:WireframeMaterial = new WireframeMaterial(0xFF0000);
				material.doubleSided = true;
				var plane:Plane = new Plane(material, 200, 200, 2, 2);
				scene.addChild(plane);
				plane.x = Math.cos(i * one_angle) * 400;
				plane.z = Math.sin(i * one_angle) * 400;
				plane.y = diffY*i;
				plane.rotationY = (-i*one_angle) * (180/Math.PI) + 270;
			}
		}
		override protected function onRenderTick(event:Event = null):void 
		{
			super.onRenderTick(event);
			var distX:Number = (stage.mouseX - stage.stageWidth * 0.5) * 0.0004;
			var distY:Number = (stage.mouseY - stage.stageHeight * 0.5) * -0.2;
			angle += distX;
			camera.x = Math.cos(angle) * 800;
			camera.z = Math.sin(angle) * 800;
		        if ((camera.y + distY) < -1500 || (camera.y + distY) > 3500)
			{
				distY = 0;
			}
			camera.y += distY;
		}
	}
}

PV3D_Spirals

Read the rest of this entry »

Written by admin

6月 7th, 2009 at 11:34 pm

はじめての「wonderFl」体験・・・PV3D練習1

leave a comment

遅ればせながら、「wonderFlサービス」に入ってみました。
wonderFlは、ActionScript 3.0 のコーディングとその実行結果がすぐ確認できるのでハードコーダーにとってはかなり便利なWebサービスかもしれません。

ただ、1クラス(例えばFlashCS3以降で言うところのドキュメントクラス)で完結するというコーディングスタイルなのと外部データ(イメージとか)が読み込めないようなので、使い方としては、新手のライブラリの動作を確認するとか、アルゴリズムを確認するとか、ちょっと限定されるかもしれませんね。(何がどこまで可能なのかについては未確認です)
後は、初心者がActionScript 3.0をマスターするのにも良いかもしれません・・・

パワーユーザーになって使いまくるかと言うと・・・う~ん、微妙なところです。(笑)

■ とりあえず、一発目としてPaperVision3Dを使ったText回転サンプルを作ってみました。

package
{
    import flash.events.Event;
    import org.papervision3d.materials.special.Letter3DMaterial;
    import org.papervision3d.typography.Font3D;
    import org.papervision3d.typography.Text3D;
    import org.papervision3d.typography.fonts.HelveticaRoman;
    import org.papervision3d.view.BasicView;
	[SWF(backgroundColor = "0x000000", frameRate = "30")]
    public class Text3D_01 extends BasicView
    {
        private var text3D:Text3D;
        private var material:Letter3DMaterial;
        private var font3D:Font3D;
        public function Text3D_01 ()
        {
            init();
            startRendering();
        }
        private function init():void
        {
            material = new Letter3DMaterial(0xFFFFFF);
	    material.doubleSided = true;
            font3D = new HelveticaRoman();
            text3D = new Text3D("Hello WonderFl.", font3D, material);
            text3D.scale = 5;
            scene.addChild(text3D);
        }
        override protected function onRenderTick(event:Event = null):void
        {
            super.onRenderTick(event);
            text3D.yaw(0.5);
            text3D.roll(0.1);
        }
    }
}

Read the rest of this entry »

Written by admin

5月 11th, 2009 at 3:10 am

進化した「BumpTop 3D Desktop」

leave a comment

2年ぐらい前のエントリ「TileUI の作り方」で紹介した驚きのデスクトップが名前も新たに3D仕様になって帰ってきました・・・(まあ、ずっと開発はしてたんだろうけど)

今度は、壁に貼り付けたりもできるようです。
このデスクトップインターフェイスに対する探求心には恐れ入ります。(笑)

■ BumpTop 1.0 – 3D Desktop Zen
Read the rest of this entry »

Written by admin

4月 9th, 2009 at 8:33 pm

PicLensアドオンで3Dギャラリーインターフェイスを体感する

leave a comment

PicLens」は、ブラウザ(IE、Safari、Firefox)のアドオンで画像共有サイトの画像一覧や、イメージ検索で収集した画像一覧、ビデオ共有サイトの検索ビデオ一覧を上図のような3Dフラットギャラリースタイルでフルスクリーン表示してくれます。ちなみに上の図はYouTubeで「smooth jazz guitar」で検索した一覧をPicLens(Firefox)で表示したものです。

当然ながら、PicLensのインターフェイス上で選択したビデオを再生することができます。

これは、ブラウザのアドオンですが、Flashと3Dフレームワークを使ってもほぼ似たようなことができます。

3Dギャラリーのインターフェイスだけで言えばすでに同様のインターフェイスで表示するFlashコンポーネントが有償($79.95)ですが存在しています。(これはPaperVisionを使ってるようですが)

→ FlashLoaded 3D Wall

Displays images on an engaging interactive 3D wall using the Papervision3D engine. The wall can be flat or set at any curvature to create a truly unique look. The viewer can also scroll, tilt and zoom the wall freely. Includes a built-in preloader for seamless transitions between thumbs and large images. Over 60 parameters to customize your wall ensures unlimited number of looks and an enticing viewer experience. Available for ActionScript 3.0 (Flash CS3) only.

有償コンポーネントとは言え、これだけのスタイルが出ていると、自分が3Dフレームワークを使っていちからコーディングしたとしても、このコンポーネントを使ったと思われそうですね。(笑)

Written by admin

4月 24th, 2008 at 8:26 pm