標籤: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]; }
燈光的附加和刪除也一樣。
運行項目,由於燈光的位置是在立方體的右前上方,燈光的方向斜對著物體,所以可以看立方體右前上的一角很亮,其餘是暗的,效果
通過本章節,大家應該已經掌握了燈光的載入,在下一章節,我會介紹如何點與情境中的物體進行互動。
歡迎聯絡:
NVisionXR_iOS教程五 —— 添加燈光渲染