iPhone Coding Notes

~我的iPhone程式筆記~

我也要來擴增實境(AR)一下!

真糟糕,一忙起來部落格就一個月沒更新,實在是對不起大家。最近在幫朋友處理一個概念性的app,裡頭要用到Augmented Reality (AR)的相關技術。但是牽涉到人家的創意,這裡就不多說。

下面錄了一段比較簡單的AR影片,但是畫質有點糟,又對不太到焦,傷眼睛就抱歉囉~

AR這個東西,說難不難,說簡單卻也沒那麼簡單。基本上,要實作一個AR程式,需要的知識有

  1. 了解如何啟動iPhone攝影機,並把UIView疊在畫面上。
  2. 利用加速度計和磁力計計算iPhone的姿態。
  3. 利用GPS資訊計算iPhone的水平位移。
  4. OpenGL ES ….

前面三項大概花個一兩天就可以學會了,問題比較大的大概是OpenGL ES吧!當然不用OpenGL ES也是可以做出其他的AR app,只是OpenGL ES的彈性比較大。只要運用加速度計和磁力計算出iPhone的姿態後,利用OpenGL ES調整虛擬照相機的視角,虛擬物件便會隨著iPhone的姿態轉移到對應的位置上。

加速度計和磁力計哪天有空再把相關程式放上來,只是這兩者皆無法在模擬器上執行,如果沒有購買iPhone Developer Program的話很難驗証程式的正確性。至於OpenGL ES嘛~雖然我有看了一點,不過實在太懶了,所以改用現成的SIO2 3D遊戲引擎來處理3D繪圖的工作。這部份就等用了比較熟練,再上來分享囉~

22 Responses to 我也要來擴增實境(AR)一下!

  1. OOBE 2010/05/18 at 23:22:12

    你好,我是今天晚上坐在你對面的那位先生,過來拜個碼頭。:D

  2. ax8911@gmail.com 2010/05/25 at 17:08:34

    我這邊有個APP企劃想找人合作…不知你有沒有興趣

  3. Will 2010/05/29 at 05:26:00

    我目前在加拿大這邊的碩論,也是要做AR+App~ 後續還有勞版大您多多指教囉!!

  4. will424 2010/05/30 at 05:51:27

    對了想請問一下版主,您這個簡單的AR Demo,是使用Client-Server的架構,還是單純本機就可以執行呢? 我的問題主要是像書桌、門、氣窗這些資料以及GPS訊息等等,是否需要另外建立Server來儲存呢?
    若方便的話還請您解答一下囉~

    • bonjouryentinglai 2010/05/30 at 08:45:58

      我是直接在本機用OpenGL ES load圖檔顯示而已。當然你要用Client-Server的方式也行,看使用需求囉~

      • will424 2010/06/04 at 06:14:40

        嗯嗯好的,謝謝版主那我了解囉~
        因為我初期想說如果本機可以跑,但我想先開發單機版本就好~
        後期近接在拓展到C-S架構~
        這邊想請問一下版主,這支AR方便提供Source Code 嗎~?
        詳請若方便可以e-mail聯絡~ 麻煩您囉~!
        e-mail: hinoto424@gmail.com

  5. HeChian 2010/06/04 at 00:45:47

    我對AR也很有興趣
    但是都不得其門而入
    能否推薦一些教學呢?
    感激

    • bonjouryentinglai 2010/06/04 at 11:46:29

      我大都是自己查書自己亂搞的,
      不知您是哪邊有問題,歡迎提出來,
      如果我剛好知道,會在新的文章中寫教學介紹~~

      • HeChian 2010/06/04 at 21:52:16

        比較想要知道的是有哪些Library可以使用
        我想有Library應該就會有Sample code才是Orz

        翻書 … 有推薦的書籍嗎?
        感激

  6. akronglin 2010/06/04 at 11:37:36

    請問還會新增cocos2s教學嘛@@

    • bonjouryentinglai 2010/06/04 at 11:45:02

      最近可能比較不會有cocos2d教學了耶^^||
      六月應該會增加一些AR常用工具的教學吧~~

      • will424 2010/06/05 at 01:19:54

        如果是這樣那就太好了~
        到時還麻煩版主多指教囉~!!!
        我也是研究了好久不得其門而入,不知怎麼下手~
        雖然網路上找了Source code但是有看沒有懂…

  7. bonjouryentinglai 2010/06/04 at 21:58:44

    HeChian :

    比較想要知道的是有哪些Library可以使用
    我想有Library應該就會有Sample code才是Orz

    翻書 … 有推薦的書籍嗎?
    感激

    書喔@@
    http://iphone-3d-programming.labs.oreilly.com/ch06.html
    這裡有提到一些,
    library的話嘛….
    google artoolkit會有,但可能不是你要的。

    目前iphone上多數的AR,大多離不開camera、GPS、加速度計和磁力計,大概就這樣而已。

  8. linzhenwei 2010/07/22 at 09:14:38

    你好,你这么说 是不是把OpenGL图像叠在摄像头图像上,可以怎么设置OpenGL背景透明呢

    • bonjouryentinglai 2010/07/27 at 09:40:08

      不好意思,這麼晚才回覆。
      如果我沒記錯的話,通常openGL是由EAGLView負責,在裡面設定
      self.backgroundColor = [UIColor clearColor];
      應該就可以囉~~

      • 2010/08/08 at 14:47:53

        您好:

        由於身旁的人接觸這塊的真的不多

        看了這篇文章後真的很興奮!

        又很想從您這篇教學開始學起

        不知能否提供範例呢?

  9. Shark0 2010/12/22 at 19:33:35

    你好,看了這篇文章覺得AR真的很有趣,目前已經照您的說法進行照相機以及Sensor的實作,但我目前碰到的問題是我照相機無法設定成全螢幕,我將showsCameraControls設為NO時也是一樣,可否請教一下你的照相機設定方式?

    當然我厚臉皮的更希望可以得到你的範例程式檔 XD

    email: lin22223344@gmail.com

    • Will 2010/12/23 at 02:10:06

      多爬爬文~
      站長另一篇關於 AR 的文章就已經把相機部分獨立出來了~
      去看看吧~你的問題裡面有解~

  10. bonjouryentinglai 2010/12/23 at 11:40:03

    Shark0 :

    你好,看了這篇文章覺得AR真的很有趣,目前已經照您的說法進行照相機以及Sensor的實作,但我目前碰到的問題是我照相機無法設定成全螢幕,我將showsCameraControls設為NO時也是一樣,可否請教一下你的照相機設定方式?

    當然我厚臉皮的更希望可以得到你的範例程式檔 XD

    email: lin22223344@gmail.com

    Will說的是這篇,希望對你有幫助。
    http://bonjouryentinglai.wordpress.com/2010/06/06/ar工具系列i:camera/

  11. 2011/01/05 at 15:59:37

    方便提供範例程式檔研究裡面成嘛!?感激

  12. cc 2011/11/02 at 16:34:48

    請教您ㄧ個core loction問題, updateToLocation  -> 進去2次後, 不管機子再怎麼動(上下左右橫移)都不會run

    謝謝.

    [self.locMgr setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
    self.locMgr.distanceFilter =kCLDistanceFilterNone;
    [self.locMgr startUpdatingLocation];

    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
    {
    CLLocationDistance distance = [newLocation distanceFromLocation:oldLocation];

    label.text = [NSString stringWithFormat:@"%f", distance *100];
    }

發表迴響

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

連結到 %s

Follow

Get every new post delivered to your Inbox.