アーカイブ

2009 年 5 月 のアーカイブ

Papervision3d はじめの六歩 Camera について学ぶ。

2009 年 5 月 29 日 コメントはありません
Clockさんのエントリーが分かりやす過ぎるので、説明するまでもないですね!あざっすあざっす。
あと、実際にカメラのrotationとかxとかどうゆう風になってんだ。イメージがわかないよ(;_;)って思ったら、
合わせてy_tti さんのここも使うといいよ!

わーい!!Clockさん課題できました!たのすぃwwかっこよす



3Dだと0~360度で一周するのでマウスの位置を全体の割合でわって360度でやってやれるのも素敵

targetRot = ( mouseX / stage.stageWidth ) * 360;

Papervision3d はじめの五歩 BasicView に頼らない

2009 年 5 月 22 日 コメントはありません
今回はPapervision3dのBasicViewに頼らないで制作したいと思います。

moriBlogさんのエントリーによると

BasicViewの継承関係は。
BasicView→AbstractView→Spliteとなっています。
そしてAbstractViewクラスは
Scene3D,
CameraObject3D,
Viewport3D,
BasicRenderEngine
といった基本的な3D描画に必須なクラスのオブジェクトを持っているようです。

BasicViewはこんな感じの便利クラス!なのですが、こんな便利なクラスに頼りきっていると後々しっぺ返しがくるので、
今のうちに、どのように全体が回っているのかを理解しときましょう。
続きを読む…

新検索エンジン Wolfram Alpha がすごい!

2009 年 5 月 19 日 コメントはありません
Wolfram Alpha がすごい面白い!そして、Googleとはまた違った便利さがあるのです。
Wolfram Alphaを作ったStephen Wolfram氏はMathematicaも作った有名人で、

15歳にして素粒子論の学術論文を執筆し、オックスフォード大学を17歳で卒業。その後カリフォルニア工科大学(CalTech)に進み、高エネルギー物理学、場の理論、宇宙論の研究を行った。
20歳で理論物理学の研究により、カリフォルニア工科大学においてPh.D. の学位を取得。
その一方で、コンピューターを用いた代数計算の方法を検討していた。1981年にこのアイディアを具現化した数学ソフト(Mathematicaの前身のSMP(Symbolic Manipulation Program))を商業リリース。
1982年より、現在では『複雑系』に分類される自然界の複雑さについて研究。セル・オートマトンに関する革新的研究を行った。


どんだけ!まさに天才・・・

例えば、sineとWolfram|Alphaで検索すると以下の画像のようになる。おおー。
これは、Flashとか勉強する際に簡単に色々取り出せそう!

sine-wolfram-alpha_1242714607371

GoogleTrend?みたいに2つのキーワードを入れると、

ibm-apple-wolfram-alpha_1242715000722

こんな感じになる!んーおもろ!

Papervision3d はじめの四歩 マウスイベント

2009 年 5 月 16 日 コメントはありません
クリックすると拡大するのを作成してみた。



  • コツはBasicViewとかのView系?のものが存在するのかわからないけど、そのinteractiveプロパティと
    Material系のinteractiveプロパティをtrueにしてやるとマウスイベントを受け取る下準備ができる。
  • 次に、InteractiveScene3DEventでaddEventListenerできるようになる!
    BasicViewの場合は、第4引数をtrueにしてやることでinteractiveプロパティをtrueにする。

bmm.interactive = true;
var basicview:BasicView = new BasicView(640, 480, true, true);
_plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, clickHandler);



package myproject
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.InteractiveObject;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLRequest;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;
	import org.papervision3d.events.InteractiveScene3DEvent;
 
    public class Index extends Sprite
    {
		private var _plane:Plane
        public function Index():void 
        {
 
			var loader:Loader = new Loader();
			var urlReq:URLRequest  = new URLRequest("http://blog.yaimo.net/wordpress/wp-content/uploads/2009/05/ramen1.jpg");
 
			if (stage != null) {
				loader.load(urlReq);
				loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
			}
        }
 
		private function completeHandler(e:Event):void 
		{
			e.target.removeEventListener(Event.COMPLETE, completeHandler);
			this.addChild(e.target.loader);
			var bmp:BitmapData = new BitmapData(100, 100);
			bmp.draw(e.target.loader);
			var bm:Bitmap = new Bitmap(bmp);
			bm.x = 100;
			bm.y = 100;
			addChild(bm);
			var bmm:BitmapMaterial = new BitmapMaterial(bmp);
			bmm.doubleSided = true;
			bmm.smooth = true;
			bmm.interactive = true;
			_plane = new Plane(bmm, 100, 100, 3, 3);
			var basicview:BasicView = new BasicView(640, 480, true, true);
			basicview.scene.addChild(_plane);
			basicview.startRendering();
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
			addChild(basicview);
 
			_plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, clickHandler);
 
		}
 
		private function clickHandler(e:InteractiveScene3DEvent):void 
		{
			_plane.scale += 0.2;
		}
 
		private function enterFrameHandler(e:Event):void 
		{
			_plane.rotationX += 2;
		}
    }
}



Papervision3d はじめの三歩 テクスチャ(3)

2009 年 5 月 15 日 コメントはありません
Base64 + ということでしたが、.drawがうまくいかないようなので、
wonderFulに張り付けるのをあきらめ、今回はふつーにテクスチャーを貼り付けたいと思います。
もうタイトル関係ないですね。



BitmapMaterialの引数にBitMapDataを指定してやるのがみそですねえ。
bmm.smoothをtrueにすると回転などでおこる画像のぎざぎざがスムーズになるらしいです。

			var bmm:BitmapMaterial = new BitmapMaterial(bmp);
			bmm.doubleSided = true;
			bmm.smooth = true;
			_plane = new Plane(bmm, 100, 100, 3, 3);



たぶんこの方法より、BitmapFileMaterialを使った方が外部画像を使用する場合はお得かと思います。

package myproject
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Loader;
    import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLRequest;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;
 
    public class Index extends Sprite
    {
		private var _plane:Plane
        public function Index():void 
        {
 
			var loader:Loader = new Loader();
			var urlReq:URLRequest  = new URLRequest("img/ramen1.JPG");
 
			if (stage != null) {
				loader.load(urlReq);
				loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
			}
        }
 
		private function completeHandler(e:Event):void 
		{
			e.target.removeEventListener(Event.COMPLETE, completeHandler);
			this.addChild(e.target.loader);
			var bmp:BitmapData = new BitmapData(100, 100);
			bmp.draw(e.target.loader);
			var bm:Bitmap = new Bitmap(bmp);
			bm.x = 100;
			bm.y = 100;
			addChild(bm);
			var bmm:BitmapMaterial = new BitmapMaterial(bmp);
			bmm.doubleSided = true;
			bmm.smooth = true;
			_plane = new Plane(bmm, 100, 100, 3, 3);
			var basicview:BasicView = new BasicView();
			basicview.scene.addChild(_plane);
			basicview.startRendering();
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
			addChild(basicview);
 
		}
 
		private function enterFrameHandler(e:Event):void 
		{
			_plane.rotationX += 2;
		}
    }
}

Papervision3d はじめの三歩 Base64 + テクスチャ(2)

2009 年 5 月 13 日 コメントはありません
Base64エンコードした画像をBitmapDataにdraw使用したんですけど、
どーしても上手くいかなかった;;。
そしてごちゃごちゃやってるうちにコードがどんどん汚くなってしまいましたw
んで、おそらくBase64エンコードした画像は外部ドメインの画像を読み込む時と同じような現象で、
drawできなくなっているんじゃないかと思います。


セキュリティー的に怒られてない?から違うのかな?
内部で生成してるから怒られるのはずがないのかなーなんておもったけど。。
どうなんでしょう。