<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>It's FROGiology &#187; 3D</title>
	<atom:link href="http://blog.frogiology.com/tag/3d/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.frogiology.com</link>
	<description>the study about me</description>
	<lastBuildDate>Sat, 16 Jan 2010 19:26:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>My First JigLibFlash Demo</title>
		<link>http://blog.frogiology.com/2009/08/08/my-first-jiglibflash-demo/</link>
		<comments>http://blog.frogiology.com/2009/08/08/my-first-jiglibflash-demo/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 05:53:40 +0000</pubDate>
		<dc:creator>Stanley Fok</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[away3d]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[jiglib]]></category>
		<category><![CDATA[papervision3d]]></category>
		<category><![CDATA[physics-engine]]></category>
		<category><![CDATA[sandy3d]]></category>

		<guid isPermaLink="false">http://blog.frogiology.com/?p=672</guid>
		<description><![CDATA[JigLibFlash 是一個ActionScript 3.0 的rigid body physics engine。何謂一個physics engine? 就是說只要你把物件放進一個空間後，然後作簡單的設定，所有物件的碰撞、碰撞後的反應、磨擦力、扭力、吸地心引等影響，全部交給這個physcis engine就好了，你完全不用理會那些複雜的物理及數學問題，大大省卻很多時間呢! JigLibFlash同時簡也整合了papervision3D、away3D 及 sandy3D的支援，針對不同3D engine的愛好者使用，它提供的API也十分易用易明，令我很欣賞這份細心。 以下這個是Stanley測試時做的demo: 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_JigLib_demo_2140300798"
			class="flashmovie"
			width="400"
			height="400">
	<param name="movie" value="http://blog.frogiology.com/upload/tutorial/jiglib_flash/JigLib_demo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://blog.frogiology.com/upload/tutorial/jiglib_flash/JigLib_demo.swf"
			name="fm_JigLib_demo_2140300798"
			width="400"
			height="400">
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> &#62;&#62; 放大來看 是否很有趣呢~? 有興趣可以下載source code 來玩玩~ 要用Flash CS4 compile才行哦! &#62;&#62; JigLibFlash Demo (480kb) 有用連結: JigLibFlash Startup Guide JigLibFlash Offical Website JigLibFlash Documentation]]></description>
			<content:encoded><![CDATA[<p>JigLibFlash 是一個ActionScript 3.0 的rigid body physics engine。何謂一個physics engine? 就是說只要你把物件放進一個空間後，然後作簡單的設定，所有物件的碰撞、碰撞後的反應、磨擦力、扭力、吸地心引等影響，全部交給這個physcis engine就好了，你完全不用理會那些複雜的物理及數學問題，大大省卻很多時間呢!</p>
<p>JigLibFlash同時簡也整合了papervision3D、away3D 及 sandy3D的支援，針對不同3D engine的愛好者使用，它提供的API也十分易用易明，令我很欣賞這份細心。</p>
<p>以下這個是Stanley測試時做的demo:</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_JigLib_demo_957522411"
			class="flashmovie"
			width="400"
			height="400">
	<param name="movie" value="http://blog.frogiology.com/upload/tutorial/jiglib_flash/JigLib_demo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://blog.frogiology.com/upload/tutorial/jiglib_flash/JigLib_demo.swf"
			name="fm_JigLib_demo_957522411"
			width="400"
			height="400">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>&gt;&gt; <a title="JigLibFlash Demo" href="http://blog.frogiology.com/upload/tutorial/jiglib_flash/JigLib_demo.html" target="_blank">放大來看</a></p>
<p>是否很有趣呢~? 有興趣可以下載source code 來玩玩~ 要用Flash CS4 compile才行哦!<br />
&gt;&gt; <a title="JigLibFlash Demo" href="http://blog.frogiology.com/upload/tutorial/jiglib_flash/JigLib_demo.zip" target="_blank">JigLibFlash Demo (480kb)</a></p>
<p>有用連結:<br />
<a title="JigLibFlash Startup Guide" href="http://as3.miguelmoraleda.com/2009/04/24/tutorial-jiglibflash-how-to-create-basic-physics-3d-scenetutorial-jiglibflash-como-crear-una-scena-en-3d-con-fisica/" target="_blank">JigLibFlash Startup Guide</a><br />
<a title="JigLibFlash Offical Website" href="http://www.jiglibflash.com/" target="_blank">JigLibFlash Offical Website</a><br />
<a title="JigLibFlash Documentation" href="http://www.jiglibflash.com/docs/" target="_blank">JigLibFlash Documentation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frogiology.com/2009/08/08/my-first-jiglibflash-demo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>如何以平面偽裝3D空間?</title>
		<link>http://blog.frogiology.com/2008/09/25/flash-pseudo3d/</link>
		<comments>http://blog.frogiology.com/2008/09/25/flash-pseudo3d/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 18:07:13 +0000</pubDate>
		<dc:creator>Stanley Fok</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[pseudo3d]]></category>

		<guid isPermaLink="false">http://blog.frogiology.com/?p=257</guid>
		<description><![CDATA[想信如果有研究開Flash的朋友，都應該聽說過papervision3d或away3d這一類的Flash 3D Engine。可是，要學習這些3D Engine的API，絕不是短時間可以學會的事。有時候，可能你想做的效果，並不是十分複雜，要用到papervision3d 又好像有些勞師動眾&#8230; 當Stanley還在玩Flash MX 2004 的時候，跟本還未有這些3D Engine存在。可是，Stanley卻有一些方法，利用簡單的數學&#8221;騙&#8221;用戶的眼睛，巧妙地利用平面偽裝3D空間呢! 3D空間感的元素 首先我們要了解構成3D空間感的元素是甚麼: 物件位置 (position) 物件大小 (scale) 物件的深度 (depth) 一個很簡單的關係就是: 物件位置愈近，物件就愈大，物件的深度也是最頂。相反，物件位置愈遠，物件就愈小，物件的深度也是最低層。因此，如果你能夠寫到一個數學關係，可以從一個3D 位置(x, y, z)，計算出一個2D位置(x, y)、scale及depth，就不是已經完成了? 對! 就是這樣簡單啊! 例子 請先看Stanley 為大家準備好的例子: &#62;&#62; 下載例子 酷嗎?是否很3D呢!?但它真是用2D偽裝出來的! 現在讓我為大家一一解構箇中玄機吧! 解構 其實整個程式的核心，就是以下的數式，我把這個數式放到一個class入面，方面大家使用: public static function project(pos:Vector3D):Object { var mx:Number = pos.x; var my:Number = -pos.y; //in the 3D space, upwards means positive [...]]]></description>
			<content:encoded><![CDATA[<p>想信如果有研究開Flash的朋友，都應該聽說過papervision3d或away3d這一類的Flash 3D Engine。可是，要學習這些3D Engine的API，絕不是短時間可以學會的事。有時候，可能你想做的效果，並不是十分複雜，要用到papervision3d 又好像有些勞師動眾&#8230;</p>
<p>當Stanley還在玩Flash MX 2004 的時候，跟本還未有這些3D Engine存在。可是，Stanley卻有一些方法，利用簡單的數學&#8221;騙&#8221;用戶的眼睛，巧妙地利用平面偽裝3D空間呢!</p>
<p><span id="more-257"></span></p>
<p><strong>3D空間感的元素</strong></p>
<p>首先我們要了解構成3D空間感的元素是甚麼:</p>
<ul>
<li>物件位置 (position)</li>
<li>物件大小 (scale)</li>
<li>物件的深度 (depth)</li>
</ul>
<p>一個很簡單的關係就是: 物件位置愈近，物件就愈大，物件的深度也是最頂。相反，物件位置愈遠，物件就愈小，物件的深度也是最低層。因此，如果你能夠寫到一個數學關係，可以從一個3D 位置(x, y, z)，計算出一個2D位置(x, y)、scale及depth，就不是已經完成了? 對! 就是這樣簡單啊!</p>
<p><strong>例子</strong></p>
<p>請先看Stanley 為大家準備好的例子:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blog.frogiology.com/upload/tutorial/pseudo3d/pseudo3d.swf" /><embed type="application/x-shockwave-flash" width="480" height="400" src="http://blog.frogiology.com/upload/tutorial/pseudo3d/pseudo3d.swf"></embed></object><br />
&gt;&gt; <a title="下載例子" href="http://blog.frogiology.com/upload/tutorial/pseudo3d/pseudo3d.zip">下載例子 </a></p>
<p>酷嗎?是否很3D呢!?但它真是用2D偽裝出來的! 現在讓我為大家一一解構箇中玄機吧!</p>
<p><strong>解構</strong></p>
<p>其實整個程式的核心，就是以下的數式，我把這個數式放到一個class入面，方面大家使用:</p>
<pre><code>public static function project(pos:Vector3D):Object {
  var mx:Number = pos.x;
  var my:Number = -pos.y; <span style="color: #008000;">//in the 3D space, upwards means positive
</span>  var mz:Number = pos.z;

  <span style="color: #008000;">//calculate perspective</span>
  var pers:Number = FISH_EYE / (1 + mz);

  <span style="color: #008000;">//create return object</span>
  var returnObj:Object = {
    x: mx * pers,
    y: my * pers,
    scale: pers * SCALE_FACTOR
  }

  return returnObj;
}</code></pre>
<p>這個function你只要提供一個Vector3D的object，就可得出投射到平面上的位置及大小了。其中原理只是比例的計算，不深究了，但當中有兩個constant卻想談一談:</p>
<p><strong><span style="font-size: small;">FISH_EYE:</span></strong><span style="font-size: small;"><br />
如果你玩相機的，應該知道甚麼是焦距。焦距很短時(zoom out)，相片可包含多些景物，相反在長焦距時，相片卻看到景物的一小部份。FISH_EYE這個值，說的就是焦距值了。</span></p>
<p><strong><span style="font-size: small;">SCALE_FACTOR:</span></strong><span style="font-size: small;"><br />
是用來控制計算出來的scale的，方便調較場景物年大小比例。</span></p>
<p>* Vector3D是我自己寫的一個class，有x,y,z三個屬性及一些向量的計算函數，如加、減、倍大、dot product、cross product等，對於3D programming是很有用的!</p>
<p><strong>編程流程</strong></p>
<p>要做到這個pseudo 3D 的效果，我會建議你跟著以下的步驟做:</p>
<ol>
<li>準備movieclip<br />
先做好想在3D空間出現的movieclip，並設定好屬性，方便之後動態地用actionscript加到場景上</li>
<li>設計場景<br />
用actionscript吧movieclip動態地加到場景上，並自行定義變數去儲著物件的3D位置(x, y, z)</li>
<li>Projection<br />
用我之前提供的函數，投射3D位置，得出2D位置及scale</li>
<li>更新movieclip屬性<br />
得出projection的結果，你可更新movieclip的屬性，如x, y, scale, alpha, depth 等等</li>
</ol>
<p><strong>注意事項</strong></p>
<p><strong>1. Depth</strong></p>
<p>在AS 2.0中，movieclip的depth很容易設定的:</p>
<pre><code><span style="color: #008000;">//number 可以是任何整數，最方便就是用z的值做depth value</span>
mc.swapDepths([number]); </code></pre>
<p>可是在AS 3.0中，已經沒有了swapDepths 這個函數了&#8230; 取而代之則是 setChildIndex 。可是，你不能隋便輸入任何整數的。例如你的containerMc中有20個logoMc，那麼以下的code就會有run time error了!</p>
<pre><code><span><span style="color: #008000;">//error! 整數必須是由0 - 19，因為containerMc現在只有20個位</span></span>
containerMc.setChildIndex(logoMc,30);
</code></pre>
<p>因此在AS 3.0中，要花心機寫排序的功能，把movieclip乖乖的編到0 &#8211; 19之中</p>
<p><strong>2. 移動鏡頭</strong></p>
<p>利用這個pseudo 3D的方法是沒有camera的，那如何可以做到移動camera的感覺呢? 答案是移動所有物件。比如你想把camera移近物件，其實相對地是可以看成物件移近camera。用這個relative motion的概念，就可以做出上面demo的效果了!</p>
<p><strong>結語</strong></p>
<p>在Flash中做3D效果，的確是有點難度，可是我卻很喜歡。因為3D programming，除了是編程外，還有美術，數學，物理以及程式優化等知識集於一身，必須相輔相成才可做到好的3D RIA。希望這個tutorial可以為大家提供一個低一點的門檻做3D程式吧!</p>
<p>&gt;&gt; <a title="下載例子" href="http://blog.frogiology.com/upload/tutorial/pseudo3d/pseudo3d.zip">下載例子 </a></p>
<p>&gt;&gt; <a title="看其他教學" href="http://blog.frogiology.com/tutorials/">看其他教學</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.frogiology.com/2008/09/25/flash-pseudo3d/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Photosynth, 由平面創造空間</title>
		<link>http://blog.frogiology.com/2008/08/27/photosynth/</link>
		<comments>http://blog.frogiology.com/2008/08/27/photosynth/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 16:31:26 +0000</pubDate>
		<dc:creator>Stanley Fok</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[photosynth]]></category>

		<guid isPermaLink="false">http://blog.frogiology.com/?p=54</guid>
		<description><![CDATA[Photosynth 是由Microsoft Live Labs 一團工程師，科學家以及設計師合力研發的技術。名字改得很貼切，Photo即是相片，Synth即Synthesis，有結合的意思。Photosynth就是指將相片結合起來，並且跟據相片的相似性，重新組合3D空間。 Photosynth是個免費的服務，一般用戶只需要有一個Microsoft Passport account (即你MSN的那一個)，並且安裝了Photosynth的plugin，你就可以開始建立你的3D空間了。上載相片之前，你當然是要準備你的相片吧。你可先試試拍一拍你的家的四周，甚至天花板及地板。但拍攝時也有一點要注意的，就是你的相片與相片之間須要有大概50%是overlap的。因為Photosynth的原理，是跟據相片之間的相似性，再計算出相片拍攝的角度及距離，最後把這些相片埋放在3D世界內。如果你的相片overlap的範圍太少，Photosynth就不能用盡你所有相片，做出不完美的效果了。 當你拍攝好後，就可開始Synth了! 整個Synth的計算都是在你的電腦上進行的，因此你的計算速度就全靠你的電腦性能了。Stanley的電腦CPU是P4 3GHz，1Gb RAM，我拍了24張共118Mb的相片，由分析計算至上載資料，大概用了5分鐘左右，而八成時間是用於上載，所以速度也很快。當完成後，程式會給你一個Synthy的分數，如果是70%，即指你有70%的相片用了來建立3D空間。 Photosynth這項技術用途也很廣，最基本的用途當然就是Virtual Tour吧。譬如去旅行時，可以試試籍著一個景點周圍拍。博物館、酒店房間、樓盤介紹等也是好好應用地方，如果租渡假屋的公司可以讓我先用Photosynth看看房間才租，你說多好呢&#8230;~ 另外Photosynth也可應用於產品介紹上，通過360度的相片，以及seadragon的deep zoom 技術，用戶就可以看到產品每一個角度最微細的地方了。 以下是我的實驗作: 熊貓屋 http://photosynth.net/view.aspx?cid=6de27e55-a749-40ee-b6fc-34939a9f83ea 我的NikeID 鞋 http://photosynth.net/view.aspx?cid=deff3649-298d-4819-8f39-686b511d7383 有關更多Photosynth的介紹，以及拍攝需知，請到Photosynth的網頁: http://photosynth.net]]></description>
			<content:encoded><![CDATA[<p>Photosynth 是由<a title="Microsoft Live Labs" href="http://livelabs.com/" target="_blank">Microsoft Live Labs</a> 一團工程師，科學家以及設計師合力研發的技術。名字改得很貼切，Photo即是相片，Synth即Synthesis，有結合的意思。Photosynth就是指將相片結合起來，並且跟據相片的相似性，重新組合3D空間。</p>
<p><span id="more-54"></span></p>
<p>Photosynth是個免費的服務，一般用戶只需要有一個Microsoft Passport account (即你MSN的那一個)，並且安裝了Photosynth的plugin，你就可以開始建立你的3D空間了。上載相片之前，你當然是要準備你的相片吧。你可先試試拍一拍你的家的四周，甚至天花板及地板。但拍攝時也有一點要注意的，就是你的相片與相片之間須要有大概50%是overlap的。因為Photosynth的原理，是跟據相片之間的相似性，再計算出相片拍攝的角度及距離，最後把這些相片埋放在3D世界內。如果你的相片overlap的範圍太少，Photosynth就不能用盡你所有相片，做出不完美的效果了。</p>
<p>當你拍攝好後，就可開始Synth了! 整個Synth的計算都是在你的電腦上進行的，因此你的計算速度就全靠你的電腦性能了。Stanley的電腦CPU是P4 3GHz，1Gb RAM，我拍了24張共118Mb的相片，由分析計算至上載資料，大概用了5分鐘左右，而八成時間是用於上載，所以速度也很快。當完成後，程式會給你一個Synthy的分數，如果是70%，即指你有70%的相片用了來建立3D空間。</p>
<p>Photosynth這項技術用途也很廣，最基本的用途當然就是Virtual Tour吧。譬如去旅行時，可以試試籍著一個景點周圍拍。博物館、酒店房間、樓盤介紹等也是好好應用地方，如果租渡假屋的公司可以讓我先用Photosynth看看房間才租，你說多好呢&#8230;~ 另外Photosynth也可應用於產品介紹上，通過360度的相片，以及seadragon的deep zoom 技術，用戶就可以看到產品每一個角度最微細的地方了。</p>
<p>以下是我的實驗作:</p>
<p>熊貓屋<br />
<a href="http://photosynth.net/view.aspx?cid=6de27e55-a749-40ee-b6fc-34939a9f83ea">http://photosynth.net/view.aspx?cid=6de27e55-a749-40ee-b6fc-34939a9f83ea</a></p>
<p>我的NikeID 鞋<br />
<a href="http://photosynth.net/view.aspx?cid=deff3649-298d-4819-8f39-686b511d7383">http://photosynth.net/view.aspx?cid=deff3649-298d-4819-8f39-686b511d7383</a></p>
<p>有關更多Photosynth的介紹，以及拍攝需知，請到Photosynth的網頁:<br />
<a href="http://photosynth.net">http://photosynth.net</a></p>
<div id="attachment_58" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.frogiology.com/wp-content/uploads/2008/08/photosynth1.jpg" rel="lightbox[54]"><img class="size-medium wp-image-58" title="我的熊貓屋" src="http://blog.frogiology.com/wp-content/uploads/2008/08/photosynth1-300x179.jpg" alt="我的熊貓屋" width="300" height="179" /></a><a href="http://photosynth.net/view.aspx?cid=6de27e55-a749-40ee-b6fc-34939a9f83ea"></a><p class="wp-caption-text">我的熊貓屋</p></div>
<div id="attachment_97" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.frogiology.com/wp-content/uploads/2008/08/nikeid.jpg" rel="lightbox[54]"><img class="size-medium wp-image-97" title="我的NikeID波鞋" src="http://blog.frogiology.com/wp-content/uploads/2008/08/nikeid-300x180.jpg" alt="我的NikeID波鞋" width="300" height="180" /></a><p class="wp-caption-text">我的NikeID波鞋</p></div>
<div id="attachment_59" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.frogiology.com/wp-content/uploads/2008/08/photosynth2.jpg" rel="lightbox[54]"><img class="size-medium wp-image-59" title="Photosynth介面" src="http://blog.frogiology.com/wp-content/uploads/2008/08/photosynth2-300x260.jpg" alt="Photosynth介面" width="300" height="260" /></a><p class="wp-caption-text">Photosynth介面</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.frogiology.com/2008/08/27/photosynth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

