以星期日為一周起始,函式傳入年份及第幾周,函式傳出開始及結束日期。
function findWeekPeriod( $week, $year )
{
$aPeriod = array();
$first_day = strtotime($year."-01-01");
$is_week_first_day = date("w", $first_day) == 0;
$is_weekone = strftime("%V", $first_day) == 1;
if($is_weekone)
{
$week_one_start = $is_week_first_day ? strtotime("last sunday",$first_day) : $first_day;
}
else
{
$week_one_start = strtotime("next sunday", $first_day);
}
$aPeriod['start'] = date("Y年m月d日", $week_one_start+(3600*24*7*($week-1)) );
$aPeriod['end'] = date("Y年m月d日", $week_one_start+(3600*24*(7*$week-1)) );
return $aPeriod;
}
例如…
$week=date('W');
$year=date('Y');
$wPeriod=findWeekPeriod( $week, $year );
/// 傳回當周的起始結束日期。
2010年1月12日 星期二
2010年1月5日 星期二
AS3 Face Detection 練習
臉部辨識練習。
測試影片:
http://www.youtube.com/watch?v=EHocW-Bkqkc
線上DEMO:(需有 Webcam 視訊,正面對鏡頭)
http://www.asn.com.tw/flex/FaceDetector/FaceDetectorXML.html
參考網站:
http://www.squidder.com/2009/02/26/realtime-face-detection-in-flash/
這個網站以 OpenCV 為基礎,改寫成 flash 版本,效能不錯。
這邊還有一個網站有把它作些優化…
http://www.quasimondo.com/archives/000687.php
主要是 haarcascade 檔的載入把它轉成一個靜態的類別,但這樣變成只能作臉部辨識,haarcascade 就不能動態載入了。
*haarcascade 檔是拿來述描所要辨識的影像的特徵集。
squidder 載入的 haarcascade 檔是一個包含 Adler-32 Checksum 的 ZIP 壓縮檔,使用上比較不方便,我用了 nochump 的 ZIP LIB 寫了一個簡單的 ZipLoader.as 來給這個 DEMO 使用,好方便載入不同的 haarcascade 檔,使用時只要把 HaarCascadeLoader.as 原始檔中的 "import jp.maaash.net.ZipLoader" REMARK 掉即可(當然,你還要有 nochump 的 ZIP LIB)。
有試過安裝 OpenCV 並使用它的其它 haarcascade 檔,例如手部、眼睛…,可惜沒有辨識成功~"~,還需要再研究。
ZipLoader.as...
package
{
import nochump.util.zip.*;
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.net.URLRequest;
import flash.utils.IDataInput;
import flash.utils.ByteArray;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
public class ZipLoader extends EventDispatcher{
private var debug:Boolean;
private var _url:String;
private var req:URLRequest;
private var data:ByteArray;
public function ZipLoader(d:Boolean=false){
debug = d;
req = new URLRequest;
}
public function load():void{
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, onLoadXML);
xmlLoader.dataFormat = URLLoaderDataFormat.BINARY;
xmlLoader.load(req);
}
public function onLoadXML(e:Event):void
{
var zipFile:ZipFile = new ZipFile(e.target.data);
var entry:ZipEntry = zipFile.entries[0];
//trace(entry.name);
// extract the entry's data from the zip
data = zipFile.getInput(entry);
//trace(data.toString());
dispatchEvent( e.clone() );
}
public function set url(u:String):void{
_url = u;
req.url = _url;
}
public function getContentAsString():String{
return data.toString();
}
private function logger(... args):void{
if(!debug){ return; }
log(["[ZipLoader]"+args.shift()].concat(args));
}
}
}
測試影片:
http://www.youtube.com/watch?v=EHocW-Bkqkc
線上DEMO:(需有 Webcam 視訊,正面對鏡頭)
http://www.asn.com.tw/flex/FaceDetector/FaceDetectorXML.html
參考網站:
http://www.squidder.com/2009/02/26/realtime-face-detection-in-flash/
這個網站以 OpenCV 為基礎,改寫成 flash 版本,效能不錯。
這邊還有一個網站有把它作些優化…
http://www.quasimondo.com/archives/000687.php
主要是 haarcascade 檔的載入把它轉成一個靜態的類別,但這樣變成只能作臉部辨識,haarcascade 就不能動態載入了。
*haarcascade 檔是拿來述描所要辨識的影像的特徵集。
squidder 載入的 haarcascade 檔是一個包含 Adler-32 Checksum 的 ZIP 壓縮檔,使用上比較不方便,我用了 nochump 的 ZIP LIB 寫了一個簡單的 ZipLoader.as 來給這個 DEMO 使用,好方便載入不同的 haarcascade 檔,使用時只要把 HaarCascadeLoader.as 原始檔中的 "import jp.maaash.net.ZipLoader" REMARK 掉即可(當然,你還要有 nochump 的 ZIP LIB)。
有試過安裝 OpenCV 並使用它的其它 haarcascade 檔,例如手部、眼睛…,可惜沒有辨識成功~"~,還需要再研究。
ZipLoader.as...
package
{
import nochump.util.zip.*;
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.net.URLRequest;
import flash.utils.IDataInput;
import flash.utils.ByteArray;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
public class ZipLoader extends EventDispatcher{
private var debug:Boolean;
private var _url:String;
private var req:URLRequest;
private var data:ByteArray;
public function ZipLoader(d:Boolean=false){
debug = d;
req = new URLRequest;
}
public function load():void{
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, onLoadXML);
xmlLoader.dataFormat = URLLoaderDataFormat.BINARY;
xmlLoader.load(req);
}
public function onLoadXML(e:Event):void
{
var zipFile:ZipFile = new ZipFile(e.target.data);
var entry:ZipEntry = zipFile.entries[0];
//trace(entry.name);
// extract the entry's data from the zip
data = zipFile.getInput(entry);
//trace(data.toString());
dispatchEvent( e.clone() );
}
public function set url(u:String):void{
_url = u;
req.url = _url;
}
public function getContentAsString():String{
return data.toString();
}
private function logger(... args):void{
if(!debug){ return; }
log(["[ZipLoader]"+args.shift()].concat(args));
}
}
}
2009年12月30日 星期三
FlarDetector - make a hole underground
http://www.youtube.com/watch?v=CW9imHbbljU
使用 FlarDetector 作成的地洞測試影片,加上在 3DS MAX 作的 miku 動畫、彩虹及程式中運算的 3D 彈跳球。
project source ...
http://code.google.com/p/flardetector/
使用 FlarDetector 作成的地洞測試影片,加上在 3DS MAX 作的 miku 動畫、彩虹及程式中運算的 3D 彈跳球。
project source ...
http://code.google.com/p/flardetector/
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...
-
set0 bit 位元設0 set1 bit 位元設1 tog bit 位元0/1切換 swapc bit 位元與c切換 =================== call addr 呼叫副程式 goto addr 跳躍到標籤 icall [index] 呼叫指標指到的副程式 ig...
-
rails blog -d mysql 建立一個名為 blog 的網站app,使用 mysql cd blog 進去 gen 好的網站 config/database.yml 編輯資料庫設定 rake db:create 自動建立資料庫 ruby script/generate ...