NVisionXR_iOS教程五 —— 添加燈光渲染

來源:互聯網
上載者:User

標籤:NVisionXR   iOS   Android   Vuforia   ARKit   

接著上一章的例子,這章節來介紹一下三種燈光(平行光、點光源、聚光燈)的使用。 
引入標頭檔#import ''NVWorldLight.h'' 
1、建立平行光 
在onCreate裡面執行個體話燈光對象,代碼如 
 
代碼: 

    // 燈光、地面、粒子都屬於世界對象,所以需要從NVWorld中建立     // 先確認情境中是否添加過了相同名字的燈光,因為要確保對象建立的唯一性     NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"dir_light"];     if (!light) {         light = (NVWorldLight *)[[self getWorld] createObject:LIGHT objectName:@"dir_light"];         // 設定燈光類型         [light setType:DIRECTION];         // 設定燈光的座標         [light setDirection:NVPosition(0, -1, 0)];     }



在onStart裡附加燈光到情境中,代碼如 
 
代碼: 

    NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"dir_light"];     // 將燈光添加到情境中     if (light) {          [light attach:self];     }

在onStop裡將燈光從情境中移除,代碼如 
 
代碼: 

     NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"dir_light"];     // 將燈光從情境中去除     if (light) {          [light dettach];     }



這樣就完成了燈光的建立、附加和移除,運行項目,對比上一章沒有加燈光的效果來看 
 
立方體的四面有明顯的明暗效果,顯得更加真實。 

2、建立點光源 
建立方法和平行光類似,如,需要注意是點光源沒有方向,所以不需要設定燈光方向(設定了也無效),還有就是點光源有位置。 
 
代碼: 

    // 燈光、地面、粒子都屬於世界對象,所以需要從NVWorld中建立     // 先確認情境中是否添加過了相同名字的燈光,因為要確保對象建立的唯一性     NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"point_light"];     if (!light) {         light = (NVWorldLight *)[[self getWorld] createObject:LIGHT objectName:@"point_light"];         // 設定燈光類型         [light setType:POINT];         // 設定燈光的座標         [light setPosition:NVPosition(2.0, 2.0, 2.0)];         // 設定燈光是否具有衰減性         [light enableAttenuation:YES];     }



燈光的附加和刪除和平行光的寫法一樣,只要找到對應的燈光對象名即可,這裡就不貼代碼了。 
 

運行項目,由於燈光的位置是在立方體的右上方,所以可以看立方體右上明,其餘地方比較暗。 

2、建立聚光燈 
建立方法和點光源一樣,但是聚光燈有方向也有位置, 
 
代碼: 

    // 燈光、地面、粒子都屬於世界對象,所以需要從NVWorld中建立     // 先確認情境中是否添加過了相同名字的燈光,因為要確保對象建立的唯一性     NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"spot_light"];     if (!light) {         light = (NVWorldLight *)[[self getWorld] createObject:LIGHT objectName:@"spot_light"];         // 設定燈光類型         [light setType:SPOT];         // 設定燈光方向         [light setDirection:NVPosition(-1, -1, -1)];         // 設定燈光的座標         [light setPosition:NVPosition(1.0, 1.0, 1.0)];         // 設定燈光是否具有衰減性         [light enableAttenuation:YES];     }

燈光的附加和刪除也一樣。 
 
運行項目,由於燈光的位置是在立方體的右前上方,燈光的方向斜對著物體,所以可以看立方體右前上的一角很亮,其餘是暗的,效果 

通過本章節,大家應該已經掌握了燈光的載入,在下一章節,我會介紹如何點與情境中的物體進行互動。 

歡迎聯絡: 

  • 連絡方式: +86 18801341080

  • 電子郵箱: [email protected]

  • 網址:http://www.nvisionxr.com/

  • QQ群:416802300



NVisionXR_iOS教程五 —— 添加燈光渲染

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.