Recent Posts
Recent Comments
- Mose 在 FMDB:我的SQLite救星
- welsonla 在 FMDB:我的SQLite救星
- liter0827 在 FMDB:我的SQLite救星
- liter0827 在 FMDB:我的SQLite救星
- bonjouryentinglai 在 FMDB:我的SQLite救星
- henry 在 FMDB:我的SQLite救星
~我的iPhone程式筆記~
上次小秀了一段擴增實境的影片,發現大家好像對這主題很有興趣。所以打算規劃一系列的AR教學,讓大家能夠輕鬆入門。
Argumented Reality,簡稱AR,中文翻譯為擴增實境。和虛擬實境不同的地方在於,虛擬實境是在螢幕上呈現一個完全由軟體建構出來的世界。而擴增實境則是在螢幕顯示的真實世界上加入一些虛擬的資訊。舉個簡單的例子,如果各位有個二三十歳以上,應該看過七龍珠這個漫畫或卡通。裡面很多人都會在左眼或右眼掛上一個可以顯示對方戰鬥力的儀器,這個儀器的背景是真實世界,但是當它對準某個敵人時,則會顯示對方的戰鬥力和其它數值(如果戰鬥力太高,還會爆炸XD)。
除了這個,像是魔鬼終結者那些機器人看到的影像,或者戰鬥機飛行員的螢幕畫面,這些都可以算是一種擴增實境。
簡易的擴增實境,只要有個攝影機顯示真實畫面,然後利用程式把一些資訊疊在這個畫面上就好了。但如果要更有實用價值,則必需考慮到攝影機與真實世界的相對位置。
判斷攝影機與真實世界相對位置的方法,簡單來說可以分成兩大類:
上面說了這麼多,除了簡單介紹一下擴增實境是幹什麼的外,主要是要充版面(誤)。好啦~開玩笑的。從上面的簡介可以知道,擴增實境的重點,就是把實際畫面呈現在螢幕上,並把虛擬物件疊在畫面上。所以今天就來說明一下在iPhone上要如何打開攝影機,並把物件疊在上面。
在iPhone上要開啟攝影機,我們要使用的類別是UIImagePickerController,相關程式碼如下:
UIImagePickerController* imagePicker =
[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.navigationBarHidden = YES;
imagePicker.toolbarHidden = YES;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.showsCameraControls = NO;
imagePicker.cameraOverlayView = the view you want to attach;
首先先建立一個UIIMagePickerController的物件,接著把delegate指到你想指的地方,然後如果不想要navigationbar和toolbar的話,記得把它們關掉。在sourceType的部份,設定為IImagePickerControllerSourceTypeCamera,因為UIImagePickerController除了提供相機供能外,相片圖庫也是由它提供。接著則是把最底下有快門按鈕的工具列也關掉。最後最重要的一件事,把想要疊在螢幕上的物件(必須為UIView)設定給cameraOverlayView,這樣該物件就會出現在攝影機的畫面上了。
另外,因為剛剛把相機底下含快門按鈕的工具列給關了,所以畫面顯示的時候,底下會留下一段黑色的橫條,不是很好看。所以我們要把相機顯示的畫面放大一點,讓它填滿整個螢幕。
float bandWidth = 54;
float screenHeight = 480;
float zoomFactor = screenHeight / (screenHeight - bandWidth);
imagePicker.cameraViewTransform = CGAffineTransformScale(imagePicker.cameraViewTransform, zoomFactor, zoomFactor);
工具列的高度大約是54pixel,所以把相機畫面的寬和高各放大約1.13倍,就會填滿整個螢幕了。
最後,我們要把剛剛建立的UIImagePickerController物件叫出來。如果剛剛的UIImagePickerController是寫在某個UIViewController裡面,那麼只要把UIImagePickerController用modal view的方式叫出來就可以了。
[self presentModalViewController:imagePicker animated:NO];
OK!大功告成,這次就先講到這裡囉~
(咦?沒了?教學的部份有點短說@@還好前面有寫些東西充版面XD…)
太感謝你了版主!!!!!! (跪)
自從看你的部落格到現在~ 每篇文章我都感動到想哭不誇張XD
真的是太感謝你了!!!
wordpress.com不能放廣告我也快哭了XD
LOL 有考慮搬到 Blogger 看看嗎?
我記得它是可以放廣告的~
我自己也是用 Blogger
Hello,
我好喜歡你的文章,請問可以交個朋友嗎???
OK啊~已寄msn給您囉~
您好,我也想認識您,因為我是打算做AR研究的大學生,目前全部都是自己在摸索,不知道國內有哪位教授在做,希望可以交個朋友
大學就在學AR啊~真好真好。
已經寄msn到您信箱囉~
不錯耶~ 大學就做AR的研究~
有機會也可以多討論喔!!!
我目前碩論也是走AR~LOL
版主你好,我本身也是大學生,專題需要做關於AR方面的研究
但是苦苦找不到AR的相關範例來研究,好急= =
希望版主能提供幾個簡單的範例供參考
謝謝
怎麼這麼多大學生專題都是AR啊@@“
其實AR不是我的專長,只是做好玩的。
網路上搜尋Augmented Reality + iphone就有很多東西囉~~
但是網路上很多都太複雜了,想要先從基礎的小範例慢慢熟悉,希望大大能夠割愛 ORZ
真的很想學QQ
呵呵,我想您就別再為難版主囉,一來版主也說了這不是他得長處,二來可能範例中多少會牽涉到版主自己幫別人做的Case可能有的商業技術等等~
其實他這幾篇文章幾乎已經都把必要的核心程式碼提供出來了,
如果你全部把他們練習熟,加上本身如果對 Objective-C 跟 iPhone 開發有做過功課跟努力,應該是OK的! 可以多從書本跟網路去搜尋料,也可以把你練習過程中遇到的問在這邊貼出來~ 可能會比你只拿到範例,幫助來得大囉!
AR目前網路上幾乎都是原文的資料比較多,也有提供Open Source Code 可以下載,你可以GOOGLE 搜尋 “iPhoneARKit” ,這個範例跟版主作的Demo很類似~ 提供你參考囉!
嗯,只是我從網路上找的一些資料慢慢拼湊,還是有一些錯誤,但是不是很瞭解為什麼錯,所以想從簡單範例來參考起
大大能講解 在版主”我也來AR一下“ 這篇文章中的效果是如何製作的呢?
主要是想了解如何利用方位來顯示出 一個一個的標籤
Hello~不知道你所說的錯誤是錯在什麼地方呢?
至於影片中的效果,首先你得會OpenGLES,然後blender製作SIO2使用的場景。最後把iPhone的攝影機打開,把場景疊上去,使用iphone的磁力計和加速度計去判斷iphone的姿態,調整場景裡的視角,大概就是這樣囉~
最近比較忙,我看看八月有沒有空稍微簡介一下那個app吧。。。。
錯的地方應該是我本身不夠熟練… 請問OPEN GLES 與blender入門該從哪裡下手呢?
感謝板大的回答 麻煩你了
不太了解 opengles 主要的功能是作用在什麼地方,創建一個新專案都會看到一個立方體
為什麼需要用到呢?
從哪裡下手?嗯…既然您都問了,就傳授您一點我的經驗吧!
下面兩個網址,是我學習OpenGL ES 和 SIO2的心得,記得收好。
不要隨便給別人喔^^
http://lmgtfy.com/?q=SIO2
http://lmgtfy.com/?q=iphone+opengles
你好啊!! 想問個小問題 如果我把AR功能處理好了!!
但是要把 GPS 功能整合進去 目前我只找到這一個範例
http://www.theiphonedev.com/SourceCode/GPS/tabid/167/Default.aspx
不知道有沒參有考資料或書籍?? 或著能跟你交換MSN 呢?? 謝謝
其實坊間書店裡的書,找一本自己看的順眼的中文工具書,應該都會有教怎麼使用GPS功能。內容大同小異,不會太困難的^^
很有啓發性的一篇短文
謝謝板主
我也是研究AR的,目前遇到一些瓶頸可以AR出東西以及GPS定位,
但是要結合一些互動還是有問題,希望能與版主交換MSN多多交流。
忘了提供我的MSN:bg75522@hotmail.com
希望跟版主多討論
已加MSN^^
版大您好!
我也是在研究AR的相關應用,雖然跟版大您不一樣我是寫於android上,
這邊遇到一寫問題想要請教您的觀念。我看完您的文章和給其他人的意見,我大概作了一個整理
這擴增實境部分,是不是像先建立出一個場景,然後紛紛製作出那些標籤將它們放至於空間的各個座標位置,而場景是用camera把場景疊在上頭,就像場景的背景圖,然後再藉由視角來看到目前可視的範圍中的標籤這樣?
那這樣推測沒錯的話,我建立了一個OpenGL ES 的四方形圖,但是我應該要怎麼作才有辦法把它變得像一個物件那樣,可以產生touch事件呢?我目前就卡這部份
不好意思丟了這麼多不成熟的問題,方便的話請您不嗇指教了,謝謝
Hello,前半段你說的沒錯,我的demo影片很偷懶,先把場景和標籤做好,再由OpenGL調整視角去看而已。
至於touch事件嘛~如果你從頭到尾都是用OpenGL ES自己寫的,那要做的事可真不少,因為我自己是用SIO2 engine去處理的,touch event他都寫好了,所以我也沒辦法幫你囉~~
請問版大 SIO2 的engine也能拿來Android使用嗎?
小弟目前也在研究Android的AR,
目前卡在如何在攝影機畫面上顯示標籤,
煩請大大指導了!
之前看SIO2作者是說會有Android版,不過到現在都還沒看到就是了。
我的做法是….建一個UIViewController
將裡面的self.view = 妳建openGLES的view
就可以將touch事件實現了
我想請問妳問題 可以給我你的MSN嗎~? 3Q
ganymede0123@gmail.com
板主最近還有空在更新網站嘛@@?
我大學專題也是在iPhone上面開發AR
但幾乎沒有頭緒
想請問能不能家板主的msn問些問題呢?
謝謝!
我剛忙完結婚和蜜月旅行,最近才比較有空。
AR我不是專家,專題要的東西其實網路找就會有了,我也都只是網路上看來的。
有什麼問題再跟我說吧 ~
ganymede0123@gmail.com