<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>modoki.org</title>
	<atom:link href="http://modoki.org/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://modoki.org/blog</link>
	<description>flash, actionscript, javascript, php and *</description>
	<pubDate>Sat, 28 Feb 2009 14:06:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[イベント]まいど 関西RIAセミナー2009</title>
		<link>http://modoki.org/blog/archives/191</link>
		<comments>http://modoki.org/blog/archives/191#comments</comments>
		<pubDate>Sat, 28 Feb 2009 14:01:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[イベント]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://modoki.org/blog/?p=191</guid>
		<description><![CDATA[本日Flex User Groupさん主催のまいど 関西RIAセミナー2009に参加してきました。
こういうセミナーにははじめて参加したのですが、途中で酒飲みあったりおもしろかったー。
実はmxmlは触ったことなかったのですが、ちょっとやってみようかなと思ってしまいました。
adobeさんも協賛しているらしくお土産をいっぱいもらいました。
クラス図カレンダー当った！
Flash Catalystの紹介をされてましたが、かなり高機能そうで今後に期待ですね。
あと、あのSaqooshaさんとFLARToolKitの実演がみれて感動しました。
大阪の人だったんだなあ。会社も近そうだしteracoってのにも参加してみようかな。。
]]></description>
			<content:encoded><![CDATA[<p>本日<a href="http://www.fxug.net/">Flex User Group</a>さん主催の<a href="http://seminar.genephics.co.jp/fxug/20090228/">まいど 関西RIAセミナー2009</a>に参加してきました。<br />
こういうセミナーにははじめて参加したのですが、途中で酒飲みあったりおもしろかったー。</p>
<p>実はmxmlは触ったことなかったのですが、ちょっとやってみようかなと思ってしまいました。</p>
<p>adobeさんも協賛しているらしくお土産をいっぱいもらいました。<br />
クラス図カレンダー当った！<br />
<a href="http://labs.adobe.com/technologies/flashcatalyst/">Flash Catalyst</a>の紹介をされてましたが、かなり高機能そうで今後に期待ですね。</p>
<p>あと、あの<a href="http://saqoosha.net/">Saqoosha</a>さんとFLARToolKitの実演がみれて感動しました。<br />
大阪の人だったんだなあ。会社も近そうだし<a href="http://teraco.jp/">teraco</a>ってのにも参加してみようかな。。</p>
]]></content:encoded>
			<wfw:commentRss>http://modoki.org/blog/archives/191/feed</wfw:commentRss>
		</item>
		<item>
		<title>[Papervision3D]頂点動かして布のゆらめき その２</title>
		<link>http://modoki.org/blog/archives/185</link>
		<comments>http://modoki.org/blog/archives/185#comments</comments>
		<pubDate>Sun, 22 Feb 2009 07:20:06 +0000</pubDate>
		<dc:creator>modoki</dc:creator>
		
		<category><![CDATA[Papervision3D]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://modoki.org/blog/?p=185</guid>
		<description><![CDATA[
 3dyurameki2.swf
先日のエントリーで布がゆらめくような動きが表現してみましたが、今回は縦の動きも追加してみました。
物理学的にはデタラメな動きなんでしょうけどそれなりに布っぽくなったかな。。
画面クリックでマテリアル切替。

テクスチャに使ってる画像は下記のサイトのものを利用しました。
 CG Tectures


package
{
	import caurina.transitions.Tweener;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.core.proto.CameraObject3D;
	import org.papervision3d.materials.BitmapFileMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;

	/**
	 *
	 * @author modoki
	 */
	public class Main extends BasicView
	{
		private var mainObj:Plane;
		private var si:Number = 0.5;
		private var ROWS:int = 10;
		private var COLS:int = 20;
		private var material_a:BitmapFileMaterial;
		private var material_b:WireframeMaterial;

		public function Main():void
		{
			super(400, 400, true, true, CameraType.FREE);

			//-----------------------------
			// 初期カメラ設定
			//-----------------------------
			iniCam();

			//-----------------------------
			// MATERIAL
			//-----------------------------
			material_a = new BitmapFileMaterial(&#34;./img/golira.jpg&#34;);
			material_b = new WireframeMaterial();
			material_a.doubleSided = [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/swf/3dyurameki2.swf" target="_blank"><img src="/swf/img/3dyurameki2.jpg" alt="3dyurameki2" /></a></p>
<p><img class="alignnone" src="/common/img/icon/005_71.gif" alt="" width="9" height="9" /> <a href="/swf/3dyurameki2.swf" target="_blank">3dyurameki2.swf</a></p>
<p>先日の<a href="http://modoki.org/blog/archives/124" target="_blank">エントリー</a>で布がゆらめくような動きが表現してみましたが、今回は縦の動きも追加してみました。<br />
物理学的にはデタラメな動きなんでしょうけどそれなりに布っぽくなったかな。。</p>
<p>画面クリックでマテリアル切替。</p>
<p><span id="more-185"></span></p>
<p>テクスチャに使ってる画像は下記のサイトのものを利用しました。<br />
<img alt="" src="/common/img/icon/005_33.gif" class="alignnone" width="9" height="9" /> <a href="http://www.cgtextures.com/" target="_blank">CG Tectures</a></p>
<pre name="code" class="as">

package
{
	import caurina.transitions.Tweener;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.core.proto.CameraObject3D;
	import org.papervision3d.materials.BitmapFileMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;

	/**
	 *
	 * @author modoki
	 */
	public class Main extends BasicView
	{
		private var mainObj:Plane;
		private var si:Number = 0.5;
		private var ROWS:int = 10;
		private var COLS:int = 20;
		private var material_a:BitmapFileMaterial;
		private var material_b:WireframeMaterial;

		public function Main():void
		{
			super(400, 400, true, true, CameraType.FREE);

			//-----------------------------
			// 初期カメラ設定
			//-----------------------------
			iniCam();

			//-----------------------------
			// MATERIAL
			//-----------------------------
			material_a = new BitmapFileMaterial(&quot;./img/golira.jpg&quot;);
			material_b = new WireframeMaterial();
			material_a.doubleSided = true;
			material_b.doubleSided = true;

			//-----------------------------
			// OBJECT
			//-----------------------------
			mainObj = new Plane(material_a, 600, 600, COLS, ROWS);
			mainObj.rotationY = 20;
			scene.addChild(mainObj);

			// Handler
			stage.addEventListener(MouseEvent.MOUSE_UP, clickHandler);

			// レンダリング開始
			startRendering();
		}

		/**
		 *-------------------------------------------------------
		 * カメラ初期化
		 *-------------------------------------------------------
		 */
		private function iniCam():void
		{
			// カメラ開始位置
			camera.moveBackward(4000);
			camera.moveUp(1000);
			camera.culled = true;

			// カメラ初期位置設定
			var iniCam:CameraObject3D = new CameraObject3D();
			iniCam.moveUp(400);

			// カメラ開始から初期位置まで移動
			Tweener.addTween( camera, {
				x			:iniCam.x,
				y			:iniCam.y,
				z			:iniCam.z,
				rotationX	:iniCam.rotationX,
				rotationY	:iniCam.rotationY,
				rotationZ	:iniCam.rotationZ,
				time		:5,
				transition	:&quot;easeInOut&quot;
				} );
		}

		/**
		 *-------------------------------------------------------
		 * Click
		 *-------------------------------------------------------
		 */
		private function clickHandler(e:MouseEvent):void
		{
			if (mainObj.material == material_a) {
				mainObj.material = material_b;
			} else {
				mainObj.material = material_a;
			}
		}

		/**
		 *-------------------------------------------------------
		 * onRenderTick
		 *-------------------------------------------------------
		 */
		override protected function onRenderTick(event:Event = null):void {
			si += 5;

			for ( var i:String in mainObj.geometry.vertices ) {
				var j:int = Number(i);

				mainObj.geometry.vertices[i].z = (Math.cos(Math.PI / 180 * (si * (j % (ROWS + 1)))) + 1) * 30;
				mainObj.geometry.vertices[i].y = (j % (ROWS + 1)) * ((Math.sin(Math.PI / 180 * (si + j)) + 2) * 30);
			}

			mainObj.pitch(1);

			super.onRenderTick(event);
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://modoki.org/blog/archives/185/feed</wfw:commentRss>
		</item>
		<item>
		<title>[Papervision3D]空中に浮かぶ板にズーム</title>
		<link>http://modoki.org/blog/archives/180</link>
		<comments>http://modoki.org/blog/archives/180#comments</comments>
		<pubDate>Wed, 18 Feb 2009 13:08:40 +0000</pubDate>
		<dc:creator>modoki</dc:creator>
		
		<category><![CDATA[Papervision3D]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://modoki.org/blog/?p=180</guid>
		<description><![CDATA[
 3dmawaruita.swf
Papervision3D使ってて3Dっぽい動きを表現したくて複数のPlaneをY軸回転させてみました。
こんなのが簡単につくれるからいいですね。
画像読み込んだりしたらおもしろそうだなー。
操作方法:
MOUSE:←→:左右回転
MOUSE:wheel:ズーム・ズームアウト
PlaneクリックでそのPlaneにポップアップ



package
{
	import caurina.transitions.Tweener;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.filters.GlowFilter;
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.core.proto.CameraObject3D;
	import org.papervision3d.events.InteractiveScene3DEvent;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.special.CompositeMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;
	import org.papervision3d.view.layer.ViewportLayer;

	/**
	 *
	 * @author modoki
	 */
	public class Main extends BasicView
	{
		private var myPlane:Plane;
		private var mainObj:DisplayObject3D;
		private var selectObjName:String;
		private var onPopup:Boolean = false;
		private var onMaterial:ColorMaterial;
		private var floor:Plane;

		public function Main():void
		{
			super(400, 400, true, true, CameraType.FREE);
			buttonMode = true;

			//-----------------------------
			// 初期カメラ設定
			//-----------------------------
			iniCam();

			//-----------------------------
			// MATERIAL
			//-----------------------------
			onMaterial = new ColorMaterial(0x000099, 0.8);
			onMaterial.doubleSided = true;
			onMaterial.interactive [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/swf/3dmawaruita.swf" target="_blank"><img src="/swf/img/3dmawaruita.jpg" alt="3dmawaruita" /></a></p>
<p><img class="alignnone" src="/common/img/icon/005_71.gif" alt="" width="9" height="9" /> <a href="/swf/3dmawaruita.swf" target="_blank">3dmawaruita.swf</a></p>
<p>Papervision3D使ってて3Dっぽい動きを表現したくて複数のPlaneをY軸回転させてみました。<br />
こんなのが簡単につくれるからいいですね。<br />
画像読み込んだりしたらおもしろそうだなー。</p>
<p>操作方法:<br />
MOUSE:←→:左右回転<br />
MOUSE:wheel:ズーム・ズームアウト<br />
PlaneクリックでそのPlaneにポップアップ</p>
<p><span id="more-180"></span></p>
<pre name="code" class="as">

package
{
	import caurina.transitions.Tweener;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.filters.GlowFilter;
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.core.proto.CameraObject3D;
	import org.papervision3d.events.InteractiveScene3DEvent;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.special.CompositeMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;
	import org.papervision3d.view.layer.ViewportLayer;

	/**
	 *
	 * @author modoki
	 */
	public class Main extends BasicView
	{
		private var myPlane:Plane;
		private var mainObj:DisplayObject3D;
		private var selectObjName:String;
		private var onPopup:Boolean = false;
		private var onMaterial:ColorMaterial;
		private var floor:Plane;

		public function Main():void
		{
			super(400, 400, true, true, CameraType.FREE);
			buttonMode = true;

			//-----------------------------
			// 初期カメラ設定
			//-----------------------------
			iniCam();

			//-----------------------------
			// MATERIAL
			//-----------------------------
			onMaterial = new ColorMaterial(0x000099, 0.8);
			onMaterial.doubleSided = true;
			onMaterial.interactive = true;

			var material:CompositeMaterial = new CompositeMaterial();
			material.addMaterial(new ColorMaterial(0xCCCCCC, 0.8));
			material.doubleSided = true;
			material.interactive = true;

			//-----------------------------
			// OBJECT
			//-----------------------------
			mainObj = new DisplayObject3D();
			scene.addChild(mainObj);

			floor = new Plane(new WireframeMaterial(), 800, 800, 5, 5);
			floor.rotationX = 90;
			scene.addChild(floor);

			for (var i:int = 0; i &lt; 50; i++) {
				var myPlane:Plane = new Plane(material, 50, 80, 2, 2);

				// 板配置
				myPlane.name = &quot;plane&quot; + i;
				myPlane.x = Math.random() * 600 - 300;
				myPlane.y = Math.random() * 150;
				myPlane.z = Math.random() * 600 - 300;

				// 中心に向かせる
				//myPlane.lookAt(mainObj);
				myPlane.rotationY = Math.atan2(myPlane.x, myPlane.z) * 180 / Math.PI;

				myPlane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, clickHandler);
				myPlane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, overHandler);
				myPlane.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, outHandler);

				mainObj.addChild(myPlane);
			}

			stage.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel);

			// レンダリング開始
			startRendering();
		}

		/**
		 *-------------------------------------------------------
		 * カメラ初期化
		 *-------------------------------------------------------
		 */
		private function iniCam():void
		{
			// カメラ開始位置
			camera.moveBackward(3000);
			camera.moveUp(1000);
			camera.culled = true;

			// カメラ初期位置設定
			var iniCam:CameraObject3D = new CameraObject3D();
			iniCam.moveUp(500);
			iniCam.rotationX = 20;

			// カメラ開始から初期位置まで移動
			Tweener.addTween( camera, {
				x			:iniCam.x,
				y			:iniCam.y,
				z			:iniCam.z,
				rotationX	:iniCam.rotationX,
				rotationY	:iniCam.rotationY,
				rotationZ	:iniCam.rotationZ,
				time		:5,
				transition	:&quot;easeInOut&quot;
				} );
		}

		/**
		 *-------------------------------------------------------
		 * Handler
		 *-------------------------------------------------------
		 */
		private function onMouseWheel(e:MouseEvent):void
		{
			var target :DisplayObject3D = new DisplayObject3D();
			target.copyTransform( camera );

			if (e.delta &gt; 0) {
				target.moveForward(200);
			}else {
				target.moveBackward(200);
			}

			Tweener.addTween( camera, {
				x			:target.x,
				y			:target.y,
				z			:target.z,
				time		:1,
				transition	:&quot;easeInOut&quot;
				} );
		}		

		/**
		 *-------------------------------------------------------
		 * Handler
		 *-------------------------------------------------------
		 */
		private function overHandler(e:InteractiveScene3DEvent):void
		{
			// フィルター効果つける
			var vpl:ViewportLayer = e.currentTarget.createViewportLayer(viewport, true);
			vpl.filters = [new GlowFilter(0xffffff, 0.5, 10, 10, 5)];
		}

		/**
		 *-------------------------------------------------------
		 * Handler
		 *-------------------------------------------------------
		 */
		private function outHandler(e:InteractiveScene3DEvent):void
		{
			// フィルター効果はずす
			var vpl:ViewportLayer = e.currentTarget.createViewportLayer(viewport, true);
			vpl.filters = null;
		}

		/**
		 *-------------------------------------------------------
		 * Handler
		 *-------------------------------------------------------
		 */
		private function clickHandler(e:InteractiveScene3DEvent):void
		{
			// Popアップ中
			onPopup = true;

			// Camera移動用ターゲット準備
			var target :DisplayObject3D = new DisplayObject3D();

			if (selectObjName != null) {
				// 前のオブジェクトは前の位置に戻る
				var oldObj:DisplayObject3D = mainObj.getChildByName(selectObjName);
				Tweener.addTween( oldObj, {
					y			:0,
					scale       :1,
					time		:1,
					transition	:&quot;easeOutElastic&quot;
					} );

				// 一度選択済み
				oldObj.material = onMaterial;
			}

			if (selectObjName != e.currentTarget.name) {
				// 前と違うオブジェクトをクリック

				target.copyTransform( e.currentTarget );
				target.moveBackward( camera.zoom * camera.focus - 100);
				target.moveUp(250);

				Tweener.addTween( mainObj, {
					rotationX	:0,
					rotationY	:0,
					rotationZ	:0,
					time		:1,
					transition	:&quot;easeInOut&quot;
					} );

				Tweener.addTween( camera, {
					x			:target.x,
					y			:target.y,
					z			:target.z,
					rotationX	:30,
					rotationY	:e.currentTarget.rotationY,
					rotationZ	:e.currentTarget.rotationZ,
					time		:1,
					transition	:&quot;easeInOut&quot;
					} );

				Tweener.addTween( e.currentTarget, {
					y			:e.currentTarget.y + 100,
					scale       :3,
					delay       :0.5,
					time		:2,
					transition	:&quot;easeOutElastic&quot;
					} );

				selectObjName = e.currentTarget.name;
			} else {
				// 前と同じオブジェクトをクリック

				target.copyTransform( camera );
				target.moveBackward(350);

				Tweener.addTween( camera, {
					x			:target.x,
					y			:target.y,
					z			:target.z,
					time		:1,
					transition	:&quot;easeInOut&quot;
					} );

				onPopup = false;
				selectObjName = null;
			}
		}

		/**
		 *-------------------------------------------------------
		 * onRenderTick
		 *-------------------------------------------------------
		 */
		override protected function onRenderTick(event:Event = null):void {
			if (!onPopup){
				mainObj.yaw(-(mouseX - stage.width * .5) / (stage.width * .1));
				floor.roll(-((mouseX - stage.width * .5) / (stage.width * .25)));
			}

			super.onRenderTick(event);
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://modoki.org/blog/archives/180/feed</wfw:commentRss>
		</item>
		<item>
		<title>[Papervision3D]Coolirisもどきを作ってみた</title>
		<link>http://modoki.org/blog/archives/151</link>
		<comments>http://modoki.org/blog/archives/151#comments</comments>
		<pubDate>Tue, 17 Feb 2009 12:44:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Papervision3D]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://modoki.org/blog/?p=151</guid>
		<description><![CDATA[
 3dcoolirismodoki.swf
画像検索してかっこよく一覧で表示してくれるブラウザのプラグインに「Cooliris」というものがありますが、こちらの画像表示部分の操作が気持ち良いのでFlash + Papervision3Dで同じようなものを作成してみた。
ほんとは検索部分とか実装してみたいのですが、そこはおいおい対応ということで。。
操作方法:
KEY:←→↑↓:それぞれの方向のPlaneに移動
KEY:CONTROL:ランダムなPlaneに移動
PlaneクリックでそのPlaneに移動

ターゲットのPlaneとカメラのX座標の距離が長ければカメラの角度を大きく、短ければ角度を小さくする。


package {
	import caurina.transitions.Tweener;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.events.InteractiveScene3DEvent;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;

	public class Main extends BasicView
	{
		private var mainObj:DisplayObject3D;
		private var tget:DisplayObject3D = new DisplayObject3D();;
		private	var photoNum:int = 0;
		private var oldPhotoNum:int = -1;
		private	var photoCount:int = 0;
		private const ROWS:int = 4;

		public function Main()
		{
			super(800, 600, true, true, CameraType.FREE);
			buttonMode = true;

			mainObj = scene.addChild(new DisplayObject3D(&#34;mainObj&#34;));

			// Material
			//var fmt:FogMaterial = new [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/swf/3dcoolirismodoki.swf" target="_blank"><img src="/swf/img/3dcoolirismodoki.jpg" alt="3dcoolirismodoki" /></a></p>
<p><img class="alignnone" src="/common/img/icon/005_71.gif" alt="" width="9" height="9" /> <a href="/swf/3dcoolirismodoki.swf" target="_blank">3dcoolirismodoki.swf</a></p>
<p>画像検索してかっこよく一覧で表示してくれるブラウザのプラグインに「<a href=" http://www.cooliris.com/" target="_blank">Cooliris</a>」というものがありますが、こちらの画像表示部分の操作が気持ち良いのでFlash + Papervision3Dで同じようなものを作成してみた。<br />
ほんとは検索部分とか実装してみたいのですが、そこはおいおい対応ということで。。</p>
<p>操作方法:<br />
KEY:←→↑↓:それぞれの方向のPlaneに移動<br />
KEY:CONTROL:ランダムなPlaneに移動<br />
PlaneクリックでそのPlaneに移動</p>
<p><span id="more-151"></span></p>
<p>ターゲットのPlaneとカメラのX座標の距離が長ければカメラの角度を大きく、短ければ角度を小さくする。</p>
<pre name="code" class="as">

package {
	import caurina.transitions.Tweener;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.events.InteractiveScene3DEvent;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;

	public class Main extends BasicView
	{
		private var mainObj:DisplayObject3D;
		private var tget:DisplayObject3D = new DisplayObject3D();;
		private	var photoNum:int = 0;
		private var oldPhotoNum:int = -1;
		private	var photoCount:int = 0;
		private const ROWS:int = 4;

		public function Main()
		{
			super(800, 600, true, true, CameraType.FREE);
			buttonMode = true;

			mainObj = scene.addChild(new DisplayObject3D(&quot;mainObj&quot;));

			// Material
			//var fmt:FogMaterial = new FogMaterial(0x000000);
			//renderer.filter = new FogFilter(fmt, 10, 50, 2000);
			var material:ColorMaterial = new ColorMaterial(0x666666, 0.8, true);

			for (var i:int = 0; i &lt; 52; i++)
			{
				photoCount++;

				var myPlane:Plane = new Plane(material, 80, 50, 2, 2);
				myPlane.name = &quot;photo&quot; + i;
				myPlane.x = int(i / ROWS) * 90;
				myPlane.y = (i % ROWS) * -60;
				myPlane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onObjectClick);
				mainObj.addChild(myPlane);
			}

			// 初期0番目
			movePhoto(0);

			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

			startRendering();
		}

		//--------------------------------
		// 画像へ移動処理
		//--------------------------------
		private function movePhoto(num:int):void
		{
			num = Math.min(photoCount - 1, num);
			num = Math.max(0, num);
			photoNum = num

			var tmp:DisplayObject3D = mainObj.getChildByName(&quot;photo&quot; + num);
			tget.copyTransform(tmp);
			tget.moveBackward(200);

			Tweener.addTween(camera, {
				x:tget.x
				, y:tget.y
				, z:tget.z
				, time:4.0
				, transition:&quot;easeInOut&quot; } );

			Tweener.addTween(tmp, {
				z:tmp.z - 50
				, time:1.0
				, transition:&quot;easeOutElastic&quot; } );

			Tweener.addTween(mainObj.getChildByName(&quot;photo&quot; + oldPhotoNum), {
				z:0
				, time:0.5
				, transition:&quot;easeIn&quot; } );

			oldPhotoNum = num;
		}

		//--------------------------------
		// Handler:クリック処理
		//--------------------------------
		private function onObjectClick(e:InteractiveScene3DEvent):void
		{
			movePhoto(e.target.name.replace(&quot;photo&quot;, &quot;&quot;));
		}

		//--------------------------------
		// Handler:毎フレーム処理
		//--------------------------------
		override protected function onRenderTick(event:Event = null):void
		{
			var deg:Number = Math.min(60, (tget.x - camera.x) * 0.1);
			deg = Math.max( -60, deg);
			camera.rotationY = deg;

			super.onRenderTick(event);
		}

		//--------------------------------
		// Handler:キーダウン処理
		//--------------------------------
		private function onKeyDown(event:KeyboardEvent):void
		{
			switch (event.keyCode) {
				case Keyboard.RIGHT:
					photoNum += ROWS;
					break;
				case Keyboard.LEFT:
					photoNum -= ROWS;
					break;
				case Keyboard.UP:
					photoNum--;
					break;
				case Keyboard.DOWN:
					photoNum++;
					break;
				case Keyboard.CONTROL:
					photoNum = Math.floor(Math.random() * photoCount);
					break;
			}

			movePhoto(photoNum);
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://modoki.org/blog/archives/151/feed</wfw:commentRss>
		</item>
		<item>
		<title>[Papervision3D]頂点動かして布のゆらめき</title>
		<link>http://modoki.org/blog/archives/124</link>
		<comments>http://modoki.org/blog/archives/124#comments</comments>
		<pubDate>Mon, 16 Feb 2009 13:09:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Papervision3D]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://modoki.org/blog/?p=124</guid>
		<description><![CDATA[
 3dyurameki.swf
　Paparvision3dで各ポリゴンの頂点をいじれるので、三角関数など規則性のある関数で処理してみたら布がゆらめくような動きが表現できました。なかなか面白い。
画面クリックでマテリアル切替。



package
{
	import flash.events.Event;
	import flash.events.MouseEvent;
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.core.proto.LightObject3D;
	import org.papervision3d.materials.shadematerials.GouraudMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;

	/**
	 *
	 * @author modoki
	 */
	public class Main extends BasicView
	{
		private var mainObj:Plane;
		private var si:Number = 0;
		private var material_a:GouraudMaterial;
		private var material_b:WireframeMaterial;

		public function Main():void
		{
			super(600, 600, true, true, CameraType.FREE);

			// カメラ設定初期化
			camera.moveForward(200);
			camera.moveUp(400);
			camera.rotationX = 20;

			// ライト設定
			var light:LightObject3D = new LightObject3D();
			light.x = -500;
			light.y = 500;

			// Material
			material_a = new GouraudMaterial(light, 0xFFFFFF, 0x0000FF);
			material_b = new [...]]]></description>
			<content:encoded><![CDATA[<p><a href='/swf/3dyurameki.swf' target='_blank'><img src="/swf/img/3dyurameki.jpg" alt="3dyurameki" /></a></p>
<p><img alt="" src="/common/img/icon/005_71.gif" class="alignnone" width="9" height="9" /> <a href='/swf/3dyurameki.swf' target='_blank'>3dyurameki.swf</a></p>
<p>　Paparvision3dで各ポリゴンの頂点をいじれるので、三角関数など規則性のある関数で処理してみたら布がゆらめくような動きが表現できました。なかなか面白い。<br />
画面クリックでマテリアル切替。</p>
<p><span id="more-124"></span></p>
<pre name="code" class="as">

package
{
	import flash.events.Event;
	import flash.events.MouseEvent;
	import org.papervision3d.cameras.CameraType;
	import org.papervision3d.core.proto.LightObject3D;
	import org.papervision3d.materials.shadematerials.GouraudMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;

	/**
	 *
	 * @author modoki
	 */
	public class Main extends BasicView
	{
		private var mainObj:Plane;
		private var si:Number = 0;
		private var material_a:GouraudMaterial;
		private var material_b:WireframeMaterial;

		public function Main():void
		{
			super(600, 600, true, true, CameraType.FREE);

			// カメラ設定初期化
			camera.moveForward(200);
			camera.moveUp(400);
			camera.rotationX = 20;

			// ライト設定
			var light:LightObject3D = new LightObject3D();
			light.x = -500;
			light.y = 500;

			// Material
			material_a = new GouraudMaterial(light, 0xFFFFFF, 0x0000FF);
			material_b = new WireframeMaterial();
			material_a.doubleSided = true;
			material_b.doubleSided = true;

			// DisplayObject
			mainObj = new Plane(material_a, 800, 500, 10, 5);
			mainObj.rotationX = 90;
			scene.addChild(mainObj);

			// Handler
			stage.addEventListener(MouseEvent.MOUSE_UP, clickHandler);

			// レンダリング開始
			startRendering();
		}

		/**
		 *-------------------------------------------------------
		 * Click
		 *-------------------------------------------------------
		 */
		private function clickHandler(e:MouseEvent):void
		{
			if (mainObj.material == material_a) {
				mainObj.material = material_b;
			} else {
				mainObj.material = material_a;
			}
		}

		/**
		 *-------------------------------------------------------
		 * onRenderTick
		 *-------------------------------------------------------
		 */
		override protected function onRenderTick(event:Event = null):void {
			// 回転
			mainObj.roll(-((mouseX - stage.width * .5) / (stage.width * .25)));

			// ゆらめき
			si += 10;
			for ( var i:String in mainObj.geometry.vertices ) {
				mainObj.geometry.vertices[i].z = Math.cos((si + (Number(i) * 5)) * Math.PI / 180) * 100;
			}

			super.onRenderTick(event);
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://modoki.org/blog/archives/124/feed</wfw:commentRss>
		</item>
		<item>
		<title>[WordPress]SyntaxHighlighterのActionScript対応</title>
		<link>http://modoki.org/blog/archives/86</link>
		<comments>http://modoki.org/blog/archives/86#comments</comments>
		<pubDate>Sat, 14 Feb 2009 16:54:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://modoki.org/blog/?p=86</guid>
		<description><![CDATA[技術系のブログにしたいのでコードハイライト表示はしたいよね。ってことでいろいろみてたら「SyntaxHighlighter」というプラグインが良いみたいなのでいれてみました。
みたところPHPやJavaScriptはハイライト対応しているようだけどActionScriptが対応していない。。。なんと。
なのでActionScript用のものはなにかないか～っと探したところ「SyntaxHighlighter」のAS拡張作っている人がいました。
 AS3 Syntax Highlighting (with SyntaxHighlighter)


基本的に上のサイトに書いてある通り、「SyntaxHighlighter.css」を置き換え、「shBrushAS3.js」を追加します。
その後「syntaxhighlighter.php」のlunguage設定にAS用の文字列を追加。


		$this-&#62;languages = apply_filters( &#039;agsyntaxhighlighter_languages&#039;, array(
			&#039;cpp&#039;        =&#62; &#039;shBrushCpp.js&#039;,
			&#039;c&#039;          =&#62; &#039;shBrushCpp.js&#039;,
			&#039;c++&#039;        =&#62; &#039;shBrushCpp.js&#039;,
			&#039;c#&#039;         =&#62; &#039;shBrushCSharp.js&#039;,
			&#039;c-sharp&#039;    =&#62; &#039;shBrushCSharp.js&#039;,
			&#039;csharp&#039;  [...]]]></description>
			<content:encoded><![CDATA[<p>技術系のブログにしたいのでコードハイライト表示はしたいよね。ってことでいろいろみてたら「SyntaxHighlighter」というプラグインが良いみたいなのでいれてみました。</p>
<p>みたところPHPやJavaScriptはハイライト対応しているようだけどActionScriptが対応していない。。。なんと。<br />
なのでActionScript用のものはなにかないか～っと探したところ「SyntaxHighlighter」のAS拡張作っている人がいました。</p>
<p><img alt="" src="/common/img/icon/005_33.gif" class="alignnone" width="9" height="9" /> <a href="http://yourpalmark.com/2007/09/19/as3-syntax-highlighting-with-syntaxhighlighter/" target="_blank">AS3 Syntax Highlighting (with SyntaxHighlighter)<br />
</a></p>
<p><span id="more-86"></span></p>
<p>基本的に上のサイトに書いてある通り、「SyntaxHighlighter.css」を置き換え、「shBrushAS3.js」を追加します。<br />
その後「syntaxhighlighter.php」のlunguage設定にAS用の文字列を追加。</p>
<pre name="code" class="php">

		$this-&gt;languages = apply_filters( &#039;agsyntaxhighlighter_languages&#039;, array(
			&#039;cpp&#039;        =&gt; &#039;shBrushCpp.js&#039;,
			&#039;c&#039;          =&gt; &#039;shBrushCpp.js&#039;,
			&#039;c++&#039;        =&gt; &#039;shBrushCpp.js&#039;,
			&#039;c#&#039;         =&gt; &#039;shBrushCSharp.js&#039;,
			&#039;c-sharp&#039;    =&gt; &#039;shBrushCSharp.js&#039;,
			&#039;csharp&#039;     =&gt; &#039;shBrushCSharp.js&#039;,
			&#039;css&#039;        =&gt; &#039;shBrushCss.js&#039;,
			&#039;delphi&#039;     =&gt; &#039;shBrushDelphi.js&#039;,
			&#039;pascal&#039;     =&gt; &#039;shBrushDelphi.js&#039;,
			&#039;java&#039;       =&gt; &#039;shBrushJava.js&#039;,
			&#039;js&#039;         =&gt; &#039;shBrushJScript.js&#039;,
			&#039;jscript&#039;    =&gt; &#039;shBrushJScript.js&#039;,
			&#039;javascript&#039; =&gt; &#039;shBrushJScript.js&#039;,
			&#039;php&#039;        =&gt; &#039;shBrushPhp.js&#039;,
			&#039;py&#039;         =&gt; &#039;shBrushPython.js&#039;,
			&#039;python&#039;     =&gt; &#039;shBrushPython.js&#039;,
			&#039;rb&#039;         =&gt; &#039;shBrushRuby.js&#039;,
			&#039;ruby&#039;       =&gt; &#039;shBrushRuby.js&#039;,
			&#039;rails&#039;      =&gt; &#039;shBrushRuby.js&#039;,
			&#039;ror&#039;        =&gt; &#039;shBrushRuby.js&#039;,
			&#039;sql&#039;        =&gt; &#039;shBrushSql.js&#039;,
			&#039;vb&#039;         =&gt; &#039;shBrushVb.js&#039;,
			&#039;vb.net&#039;     =&gt; &#039;shBrushVb.js&#039;,
			&#039;xml&#039;        =&gt; &#039;shBrushXml.js&#039;,
			&#039;html&#039;       =&gt; &#039;shBrushXml.js&#039;,
			&#039;xhtml&#039;      =&gt; &#039;shBrushXml.js&#039;,
			&#039;xslt&#039;       =&gt; &#039;shBrushXml.js&#039;,
			&#039;as&#039;         =&gt; &#039;shBrushAS3.js&#039;, //これ追加
		) );
</pre>
<p>これで下記のようにActionScriptがハイライト表示されるようになりました。</p>
<pre name="code" class="as">

package {
    public class Main
    {
        public function Main() extends Sprite
        {
            trace(&quot;test&quot;);
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://modoki.org/blog/archives/86/feed</wfw:commentRss>
		</item>
		<item>
		<title>[WordPress]htmlspecialchars_decode()エラーで投稿できない</title>
		<link>http://modoki.org/blog/archives/42</link>
		<comments>http://modoki.org/blog/archives/42#comments</comments>
		<pubDate>Sat, 14 Feb 2009 15:31:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[Bug]]></category>

		<guid isPermaLink="false">http://modoki.org/blog/?p=42</guid>
		<description><![CDATA[WordPress2.7.1のプラグイン「SyntaxHighlighte」でコードを表示するために［code=&#8217;php&#8217;］~［/code］のようなHTMLをタグを入力しようとすると次のようなエラーが発生して投稿どころかプレビューすらできない。。なぜ？
Warning: htmlspecialchars_decode() expects parameter 1 to be string, NULL given in ～
情報がないか探してみたけど国内でなかったので海外調べてみたところ、どうやらWordPressのバグのようです。

下記リンク先の方法でファイルを書き換えたところ問題解決！
 http://core.trac.wordpress.org/ticket/9090

There is a variable name mismatch in the WordPress version of the function htmlspecialchars_decode (introduced in PHP5.1). Parameter 1 is $str, but the validation tests $string, and thus the function will never execute, because $string is always null and fails the test.
This is [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress2.7.1のプラグイン「SyntaxHighlighte」でコードを表示するために［code=&#8217;php&#8217;］~［/code］のようなHTMLをタグを入力しようとすると次のようなエラーが発生して投稿どころかプレビューすらできない。。なぜ？</p>
<p><strong>Warning: htmlspecialchars_decode() expects parameter 1 to be string, NULL given in ～</strong></p>
<p>情報がないか探してみたけど国内でなかったので海外調べてみたところ、どうやらWordPressのバグのようです。</p>
<p><span id="more-42"></span></p>
<p>下記リンク先の方法でファイルを書き換えたところ問題解決！<br />
<img alt="" src="/common/img/icon/005_33.gif" class="alignnone" width="9" height="9" /> <a href="http://core.trac.wordpress.org/ticket/9090" target="_blank">http://core.trac.wordpress.org/ticket/9090</a></p>
<div class="searchable">
<blockquote><p>There is a variable name mismatch in the <span class="wiki">WordPress</span> version of the function htmlspecialchars_decode (introduced in PHP5.1). Parameter 1 is $str, but the validation tests $string, and thus the function will never execute, because $string is always null and fails the test.</p>
<p>This is a regression because it broke the AZIndex plugin (version 0.7.5) when the &#8220;ignore characters&#8221; option was set for an index. It will also break any code, plugin, or theme that uses this function when running on PHP &lt; 5.1.</p>
<p>The line in error is line 104 in wp-includes/compat.php:</p>
<p>if ( !is_scalar( $string ) ) {</p>
<p>should be</p>
<p>if ( !is_scalar( $str ) ) {</p></blockquote>
</div>
]]></content:encoded>
			<wfw:commentRss>http://modoki.org/blog/archives/42/feed</wfw:commentRss>
		</item>
		<item>
		<title>ことはじめ</title>
		<link>http://modoki.org/blog/archives/79</link>
		<comments>http://modoki.org/blog/archives/79#comments</comments>
		<pubDate>Sat, 14 Feb 2009 15:30:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[その他]]></category>

		<guid isPermaLink="false">http://modoki.org/blog/?p=79</guid>
		<description><![CDATA[WEB関連の技術なんかの鍛錬用にサイトを立ち上げてみました。
modoki.orgなんていうドメインとってみたり。。
いつまでつづくのやら。。
]]></description>
			<content:encoded><![CDATA[<p>WEB関連の技術なんかの鍛錬用にサイトを立ち上げてみました。<br />
modoki.orgなんていうドメインとってみたり。。<br />
いつまでつづくのやら。。</p>
]]></content:encoded>
			<wfw:commentRss>http://modoki.org/blog/archives/79/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
