http://www.youtube.com/watch?v=CW9imHbbljU
使用 FlarDetector 作成的地洞測試影片,加上在 3DS MAX 作的 miku 動畫、彩虹及程式中運算的 3D 彈跳球。
project source ...
http://code.google.com/p/flardetector/
2009年12月30日 星期三
2009年12月22日 星期二
FLARToolKit Multi Marker Detector & Cube type Marker 實作
ARis...
ARis 是日本一間公司出品的產品,應用了 ARToolKit 技術。
展示影片在這…
http://www.youtube.com/watch?v=yCCx7zANsGE
YouTube上可以找到更多類似的影片。
這邊是我用 FLARToolKit 自己作的 DEMO,當然,不止是能運用在這方面( 指宅男專用 ),像是商業產品的3D 展示也可以這樣用,在全像投影真正普及化實現之前,我想 AR 技術或許是最快實現類似體驗的方法吧? ( 配合 AR 眼鏡 )
DEMO VIDEO...
http://www.youtube.com/watch?v=W9s2ldmd9Vc
DEMO ONLINE...
http://www.asn.com.tw/flex/FlarMikuDemo/PV3DFlarTest.html
要線上執行需要列印出上列 Marker 檔,將其中的方塊組合起來,並且準備一台 Webcam,程式運行後再將 Webcam 對準方塊就會出現人偶嘍~(還有牛)!!!
Markers...
ARis Marker : http://www.asn.com.tw/flex/FlarMikuDemo/Data/ARisMarker.jpg
Cube Marker : http://www.asn.com.tw/flex/FlarMikuDemo/Data/CubeMarker.jpg
要自建 Marker 檔可以到…
http://flash.tarotaro.org/blog/2008/12/14/artoolkit-marker-generator-online-released/
======== 底下給有興趣寫 AR 程式的人作參考 ========
MultiMarker...
這個程式等於是 FLARToolKit 複數 Marker 的應用,在 FLARToolKit 中有個 FLARMultiMarkerDetector 的類別,是用來同時偵測多個 Marker 用的,MultiMarker 的偵測需要管理多個 Maeker 的 ARCode。
網路上有現成的多偵測點 Marker 管理函式庫 FLARManager…
這個 MultiMarker 管理類別功能蠻強大的,包含多點偵測、圖形二元化閥值最佳化、座標位置 smooth 及動態點預測…。
FlarDetetor...
不過我沒有實際去用 FLARManager,而是自己寫了個簡化版的 FlarDetetor,一樣是 MultiMarker Detect,還蠻好用的,我的 ARis 就是利用這個類別作出來的。
FlarDetetor 特色:
一、多個 Marker 同時偵測。
二、事件觸發 ( MARKER_ADDED、MARKER_UPDATED、MARKER_REMOVED )。
三、完全獨立的一個類別,低耦合,只用到原始的 FLARToolKit 類別。
四、俱備簡易 smooth 功能。
如何使用:
一、初始化,跟一般 FLARToolKit 應用程式一樣代入 FLARParam 跟 Webcam 的 Bitmapdata。
二、 建立 FlarObject 物件並載入 Marker 檔,然後加入 PV3D scene 中。
var cube:FlarCube = new FlarCube ();
cube.detector.loadCode( 'cube.pat',16,100 ); /// 注意後面二個 width 參數要與當初存 patern 時一致,否則測不出來唷。
三、最後只要在 PV3D Render 的時候 detect 即可自動分派事件。
FlarObject...
這個類別便是拿來裝你的 PV3D 子物件的容器,繼承自 FLARToolKit 的 FLARBaseNode 類別,並且有基本的一個 FlarDetector 及預設的事件反應,當 FlarDetector偵測到時便進行座標方位的轉換。
比較特別的地方在於我使用了一個 _pivot:DisplayObject3D 作為內容器,好方便底下延伸類別的座標軸轉換,所有子物件都放在 pivot中,就可以自由在程式控制相對位置跟方向,而不會受 Node Transform 的影響。
當然,其實 FlarDetector 是蠻低耦合的一個類別,你也可以直接使用 FlarDetector 在任何的場合,創造你自己的類別,也不一定要配合 PV3D 來使用,把 FlarDetector 當成一個單純的 Sensor 來使用即可。
FlarARisCube...
至於六面體 Marker 的偵測,網路上可以找到 Tarotaro 的 5 面立方體範例…
http://flash.tarotaro.org/blog/2009/04/06/cube-type-marker-in-flar/
他的演算法是將水平的四個面用二個 Marker 解決,一個偵測用,一個判斷面向用,再加上上面一個 Marker 總共三個,真聰明丫,詳細的演算法可以參考…
http://flash.tarotaro.org/blog/2009/06/10/about-cube-detection-algorithm/
但是可惜是這個方法只能作 5 面偵測,從底下往上看沒有(要幹嘛?!),而且水平的四個面的 Marker 必需有一定的規則,Marker 的設計要比較注意。
這 個函式庫我也沒實際去用,於是又寫了個 FlarARisCube 的類別,這個類別其實只是在一個類別中放了六個 FlarDetector,再在偵測到時轉換一下座標而己,只是在轉換座標時搞的有點暈頭轉向,我的方法是比較直接的方式,效能沒 Tarotaro 的好,只能說是比較容易實現的方法。
最後則是六面體方塊在上仰角度時,會有遮罩的效果,讓六面體看起來更直實(能遮到人偶),我是參考 FLARToolKit 的原作者 saqoosha 的這篇文章…
http://saqoosha.net/en/2009/01/08/1676/
文章是介紹地上打洞的效果,不過原理一樣 ( 地上打洞很酷丫,下回再來作 ^ ^ )。
Finally…
一連串的學習QQ",總算成功,出現人偶嘍~(還有牛)~呵呵呵。
Source Code...
原始程式下載:( 包含 papervision3d 及 flartoolkit )-原始版本
http://www.asn.com.tw/flex/FlarMikuDemo/FlarMikuDemo.zip
2009/12/22 - 最新的 source 改放在 google code,http://code.google.com/p/flardetector/
( 不包含 papervision3d 及 flartoolkit )
ARis 是日本一間公司出品的產品,應用了 ARToolKit 技術。
展示影片在這…
http://www.youtube.com/watch?v=yCCx7zANsGE
YouTube上可以找到更多類似的影片。
這邊是我用 FLARToolKit 自己作的 DEMO,當然,不止是能運用在這方面( 指宅男專用 ),像是商業產品的3D 展示也可以這樣用,在全像投影真正普及化實現之前,我想 AR 技術或許是最快實現類似體驗的方法吧? ( 配合 AR 眼鏡 )
DEMO VIDEO...
http://www.youtube.com/watch?v=W9s2ldmd9Vc
DEMO ONLINE...
http://www.asn.com.tw/flex/FlarMikuDemo/PV3DFlarTest.html
要線上執行需要列印出上列 Marker 檔,將其中的方塊組合起來,並且準備一台 Webcam,程式運行後再將 Webcam 對準方塊就會出現人偶嘍~(還有牛)!!!
Markers...
ARis Marker : http://www.asn.com.tw/flex/FlarMikuDemo/Data/ARisMarker.jpg
Cube Marker : http://www.asn.com.tw/flex/FlarMikuDemo/Data/CubeMarker.jpg
要自建 Marker 檔可以到…
http://flash.tarotaro.org/blog/2008/12/14/artoolkit-marker-generator-online-released/
======== 底下給有興趣寫 AR 程式的人作參考 ========
MultiMarker...
這個程式等於是 FLARToolKit 複數 Marker 的應用,在 FLARToolKit 中有個 FLARMultiMarkerDetector 的類別,是用來同時偵測多個 Marker 用的,MultiMarker 的偵測需要管理多個 Maeker 的 ARCode。
網路上有現成的多偵測點 Marker 管理函式庫 FLARManager…
這個 MultiMarker 管理類別功能蠻強大的,包含多點偵測、圖形二元化閥值最佳化、座標位置 smooth 及動態點預測…。
FlarDetetor...
不過我沒有實際去用 FLARManager,而是自己寫了個簡化版的 FlarDetetor,一樣是 MultiMarker Detect,還蠻好用的,我的 ARis 就是利用這個類別作出來的。
FlarDetetor 特色:
一、多個 Marker 同時偵測。
二、事件觸發 ( MARKER_ADDED、MARKER_UPDATED、MARKER_REMOVED )。
三、完全獨立的一個類別,低耦合,只用到原始的 FLARToolKit 類別。
四、俱備簡易 smooth 功能。
如何使用:
一、初始化,跟一般 FLARToolKit 應用程式一樣代入 FLARParam 跟 Webcam 的 Bitmapdata。
FlarDetector.init(_capture);
二、 建立 FlarObject 物件並載入 Marker 檔,然後加入 PV3D scene 中。
var cube:FlarCube = new FlarCube ();
cube.detector.loadCode( 'cube.pat',16,100 ); /// 注意後面二個 width 參數要與當初存 patern 時一致,否則測不出來唷。
this.scene.addChild( cube );
三、最後只要在 PV3D Render 的時候 detect 即可自動分派事件。
FlarDetector.detectMarkerLite();
FlarObject...
這個類別便是拿來裝你的 PV3D 子物件的容器,繼承自 FLARToolKit 的 FLARBaseNode 類別,並且有基本的一個 FlarDetector 及預設的事件反應,當 FlarDetector偵測到時便進行座標方位的轉換。
比較特別的地方在於我使用了一個 _pivot:DisplayObject3D 作為內容器,好方便底下延伸類別的座標軸轉換,所有子物件都放在 pivot中,就可以自由在程式控制相對位置跟方向,而不會受 Node Transform 的影響。
當然,其實 FlarDetector 是蠻低耦合的一個類別,你也可以直接使用 FlarDetector 在任何的場合,創造你自己的類別,也不一定要配合 PV3D 來使用,把 FlarDetector 當成一個單純的 Sensor 來使用即可。
FlarARisCube...
至於六面體 Marker 的偵測,網路上可以找到 Tarotaro 的 5 面立方體範例…
http://flash.tarotaro.org/blog/2009/04/06/cube-type-marker-in-flar/
他的演算法是將水平的四個面用二個 Marker 解決,一個偵測用,一個判斷面向用,再加上上面一個 Marker 總共三個,真聰明丫,詳細的演算法可以參考…
http://flash.tarotaro.org/blog/2009/06/10/about-cube-detection-algorithm/
但是可惜是這個方法只能作 5 面偵測,從底下往上看沒有(要幹嘛?!),而且水平的四個面的 Marker 必需有一定的規則,Marker 的設計要比較注意。
這 個函式庫我也沒實際去用,於是又寫了個 FlarARisCube 的類別,這個類別其實只是在一個類別中放了六個 FlarDetector,再在偵測到時轉換一下座標而己,只是在轉換座標時搞的有點暈頭轉向,我的方法是比較直接的方式,效能沒 Tarotaro 的好,只能說是比較容易實現的方法。
最後則是六面體方塊在上仰角度時,會有遮罩的效果,讓六面體看起來更直實(能遮到人偶),我是參考 FLARToolKit 的原作者 saqoosha 的這篇文章…
http://saqoosha.net/en/2009/01/08/1676/
文章是介紹地上打洞的效果,不過原理一樣 ( 地上打洞很酷丫,下回再來作 ^ ^ )。
Finally…
一連串的學習QQ",總算成功,出現人偶嘍~(還有牛)~呵呵呵。
Source Code...
原始程式下載:( 包含 papervision3d 及 flartoolkit )-原始版本
http://www.asn.com.tw/flex/FlarMikuDemo/FlarMikuDemo.zip
2009/12/22 - 最新的 source 改放在 google code,http://code.google.com/p/flardetector/
( 不包含 papervision3d 及 flartoolkit )
2009年12月10日 星期四
Flartoolkits - Load DAE & Make your own Marker Online
在網路上即時載入 DAE 3D 模型,透過視訊即時的在線上建立 Flar 物件的 Marker。
操作方式:
1. Load DAE file,預設己經載入三個模組。
2. 下拉選單點選你要操作的FLAR物件。
3. 用麥克筆或印表機畫出你自訂的圖樣(正方形黑色邊框+裡面塗上簡易圖示)。
4. 按下 Detect Pattern,把視訊對準圖樣。
5. 當紅色標示出現在正確的位置時按下 Set Pattern。
6. 下方操控面板可以控制物件的大小及角度。
(亦可直接點選畫面上的物件操作)
DEMO VIDEO:
http://www.youtube.com/watch?v=Hp2qY4_Ez_Y
ONLINE DEMO:
http://www.asn.com.tw/flex/PV3DFlar/MarkerGeneratorOnline.html
操作方式:
1. Load DAE file,預設己經載入三個模組。
2. 下拉選單點選你要操作的FLAR物件。
3. 用麥克筆或印表機畫出你自訂的圖樣(正方形黑色邊框+裡面塗上簡易圖示)。
4. 按下 Detect Pattern,把視訊對準圖樣。
5. 當紅色標示出現在正確的位置時按下 Set Pattern。
6. 下方操控面板可以控制物件的大小及角度。
(亦可直接點選畫面上的物件操作)
DEMO VIDEO:
http://www.youtube.com/watch?v=Hp2qY4_Ez_Y
ONLINE DEMO:
http://www.asn.com.tw/flex/PV3DFlar/MarkerGeneratorOnline.html
2009年12月8日 星期二
紅外線發射程式
最近用微處理器(MCU)寫了個紅外線發射的程式…
原本的想法太過於複雜,程式寫久了會想要把東西寫的更靈活,於是會自己加了很多動態的計算、即時的判斷程式碼,沒想到對系統資源有限、時序要求非常嚴苛的 MCU 卻是一種負擔,這在多核的MCU如FPPA下不是什麼大問題,但在傳統的 MCU 如 EMC 或 PIC 卻會讓你越靈活就越難以控制(尤其是當你用C而不用組合語言來寫的時候)。
在重新思考及嘗試後才發現原來程式很簡單…
/// 這邊的編碼是以 SM5032 為例…
void IR_Bit0( void )
{
/// 產生1/4週期的38KHZ載波
}
void IR_Bit1( void )
{
/// 產生3/4週期的38KHZ載波
}
void IR_Empty( void )
{
/// 空周期延時
}
void IR_Head( void ){
IR_Bit1();
IR_Bit1();
IR_Bit0();
}
void IR_Custom( void )
{
IR_Bit1();
IR_Bit1();
}
void IR_Tail( void )
{
IR_Empty();
IR_Empty();
IR_Empty();
IR_Empty();
}
#define _0 IR_Bit0();
#define _1 IR_Bit1();
#define _H IR_Head(); /// HEAD code
#define _C IR_Custom();/// Custom code
#define _T IR_Tail(); /// End code
void main()
{
Initial();
Initial_IO();
while(1)
{
if( BTN0 == 0 )
{
_H _C _0 _0 _0 _0 _0 _0 _1 _T
} else if( BTN1 == 0 )
{
_H _C _0 _0 _0 _0 _0 _1 _0 _T
} else if( BTN2 == 0 )
{
_H _C _0 _0 _0 _1 _0 _0 _0 _T
} else if( BTN3 == 0 )
{
_H _C _1 _0 _0 _0 _0 _1 _1 _T
} else if( BTN4 == 0 )
{
_H _C _0 _0 _0 _0 _1 _0 _0 _T
} else if( BTN5 == 0 )
{
_H _C _0 _0 _1 _0 _0 _0 _0 _T
} else if( BTN6 == 0 )
{
_H _C _0 _1 _0 _0 _0 _0 _0 _T
}
}
}
另外有一點要特別注意,一般紅外線發射會使用455KHZ的晶振,算是比較低頻,各家 MCU 特性不同,有可能會需要在 OSCO 串上個串聯電組 (5-10K)才會正常起振。
原本的想法太過於複雜,程式寫久了會想要把東西寫的更靈活,於是會自己加了很多動態的計算、即時的判斷程式碼,沒想到對系統資源有限、時序要求非常嚴苛的 MCU 卻是一種負擔,這在多核的MCU如FPPA下不是什麼大問題,但在傳統的 MCU 如 EMC 或 PIC 卻會讓你越靈活就越難以控制(尤其是當你用C而不用組合語言來寫的時候)。
在重新思考及嘗試後才發現原來程式很簡單…
/// 這邊的編碼是以 SM5032 為例…
void IR_Bit0( void )
{
/// 產生1/4週期的38KHZ載波
}
void IR_Bit1( void )
{
/// 產生3/4週期的38KHZ載波
}
void IR_Empty( void )
{
/// 空周期延時
}
void IR_Head( void ){
IR_Bit1();
IR_Bit1();
IR_Bit0();
}
void IR_Custom( void )
{
IR_Bit1();
IR_Bit1();
}
void IR_Tail( void )
{
IR_Empty();
IR_Empty();
IR_Empty();
IR_Empty();
}
#define _0 IR_Bit0();
#define _1 IR_Bit1();
#define _H IR_Head(); /// HEAD code
#define _C IR_Custom();/// Custom code
#define _T IR_Tail(); /// End code
void main()
{
Initial();
Initial_IO();
while(1)
{
if( BTN0 == 0 )
{
_H _C _0 _0 _0 _0 _0 _0 _1 _T
} else if( BTN1 == 0 )
{
_H _C _0 _0 _0 _0 _0 _1 _0 _T
} else if( BTN2 == 0 )
{
_H _C _0 _0 _0 _1 _0 _0 _0 _T
} else if( BTN3 == 0 )
{
_H _C _1 _0 _0 _0 _0 _1 _1 _T
} else if( BTN4 == 0 )
{
_H _C _0 _0 _0 _0 _1 _0 _0 _T
} else if( BTN5 == 0 )
{
_H _C _0 _0 _1 _0 _0 _0 _0 _T
} else if( BTN6 == 0 )
{
_H _C _0 _1 _0 _0 _0 _0 _0 _T
}
}
}
另外有一點要特別注意,一般紅外線發射會使用455KHZ的晶振,算是比較低頻,各家 MCU 特性不同,有可能會需要在 OSCO 串上個串聯電組 (5-10K)才會正常起振。
2009年12月6日 星期日
有趣的 FLARToolKIT
結合 webcam 產生像是虛擬+實境融合的效果(Augmented Reality)~
http://blog.papervision3d.org/2009/01/07/augmented-reality-with-flartoolkit/
網路上有一大堆很酷的作品唷。
FLARToolKit 是一位日本人將 ARToolKit 改寫成 AS3版本,再配合 3D 引擎 (如 Papervision3D ) 作成的。
主要的原理是利用事先製作好的圖像(marker)作為辨識它在現實環境中的 3D 位置、角度…等等的資料,再套用到螢幕這個 marker 所代表的 3D 物件,結合 webcam 畫面就造成這樣的視覺效果了。
底下是自己練習的成果影片…
http://www.youtube.com/watch?v=tyQWHQH28iM
可以想像一下整個房間貼滿 marker 或 全身穿上有 marker 的衣服會是怎樣的情景~^ ^,有很多發揮創意的空間。
線上 Demo 在這…
http://www.asn.com.tw/flex/PV3DFlar/PV3DFlar.html
*要使用線上 Demo 必須準備 webcam,再列印我使用的二種 marker,到這個網址後會提示啟用 webcam,再把 marker 對著 webcam 鏡頭晃,就會在螢幕上看到效果了。
*我的 marker 可以在這下載。
http://blog.papervision3d.org/2009/01/07/augmented-reality-with-flartoolkit/
網路上有一大堆很酷的作品唷。
FLARToolKit 是一位日本人將 ARToolKit 改寫成 AS3版本,再配合 3D 引擎 (如 Papervision3D ) 作成的。
主要的原理是利用事先製作好的圖像(marker)作為辨識它在現實環境中的 3D 位置、角度…等等的資料,再套用到螢幕這個 marker 所代表的 3D 物件,結合 webcam 畫面就造成這樣的視覺效果了。
底下是自己練習的成果影片…
http://www.youtube.com/watch?v=tyQWHQH28iM
可以想像一下整個房間貼滿 marker 或 全身穿上有 marker 的衣服會是怎樣的情景~^ ^,有很多發揮創意的空間。
線上 Demo 在這…
http://www.asn.com.tw/flex/PV3DFlar/PV3DFlar.html
*要使用線上 Demo 必須準備 webcam,再列印我使用的二種 marker,到這個網址後會提示啟用 webcam,再把 marker 對著 webcam 鏡頭晃,就會在螢幕上看到效果了。
*我的 marker 可以在這下載。
訂閱:
文章 (Atom)
VirtualBox 空間減肥
sdelete64 -z c: VBoxManage modifymedium disk "/Users/fellow/VirtualBox VMs/Win10/Win10.vdi" --compact *.vdi 路徑可以在 VirtualBox 儲...
-
https://github.com/ljean/modbus-tk/ install pip… sudo apt-get install python-pip install... download modbus_tk-x.x.x.tar.gz tar zxvf...
-
ARis... ARis 是日本一間公司出品的產品,應用了 ARToolKit 技術。 展示影片在這… http://www.youtube.com/watch?v=yCCx7zANsGE YouTube上可以找到更多類似的影片。 這邊是我用 FLARToolK...
-
由於ASSEMBLA即將開始收費,因此要把所有的SVN進行大搬家,連帶的一些教學文件也跟著搬家了,看來還是GOOGLE的窩最舒適(重點是免費) FPPA實驗平台教學教材-使用C語言 FPPA實驗平台簡介 實驗(一) 8位元LED輸出單元 與 模組設計總論 實驗(二) 按鍵開關輸入...