NVisionXR_iOS教程五——添加灯光渲染-创新互联

接着上一章的例子,这章节来介绍一下三种灯光(平行光、点光源、聚光灯)的使用。 
引入头文件#import ''NVWorldLight.h'' 
1、创建平行光 
在onCreate里面实例话灯光对象,代码如下图 
NVisionXR_iOS教程五 —— 添加灯光渲染 
代码:

创新互联是专业的中宁网站建设公司,中宁接单;提供网站制作、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行中宁网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
    // 灯光、地面、粒子都属于世界对象,所以需要从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里附加灯光到场景中,代码如下图 
NVisionXR_iOS教程五 —— 添加灯光渲染 
代码:


    NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"dir_light"]; 
    // 将灯光添加到场景中 
    if (light) { 
         [light attach:self]; 
    }

在onStop里将灯光从场景中移除,代码如下图 
NVisionXR_iOS教程五 —— 添加灯光渲染 
代码:


     NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"dir_light"]; 
    // 将灯光从场景中去除 
    if (light) { 
         [light dettach]; 
    }


这样就完成了灯光的创建、附加和移除,运行项目,对比上一章没有加灯光的效果来看 
NVisionXR_iOS教程五 —— 添加灯光渲染 
立方体的四面有明显的明暗效果,显得更加真实。 

2、创建点光源 
创建方法和平行光类似,如下图,需要注意是点光源没有方向,所以不需要设置灯光方向(设置了也无效),还有就是点光源有位置。 
NVisionXR_iOS教程五 —— 添加灯光渲染 
代码:


    // 灯光、地面、粒子都属于世界对象,所以需要从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]; 
    }


灯光的附加和删除和平行光的写法一样,只要找到对应的灯光对象名即可,这里就不贴代码了。 
NVisionXR_iOS教程五 —— 添加灯光渲染 

运行项目,由于灯光的位置是在立方体的右上方,所以可以看立方体右上明,其余地方比较暗。 

2、创建聚光灯 
创建方法和点光源一样,但是聚光灯有方向也有位置,如图: 
NVisionXR_iOS教程五 —— 添加灯光渲染 
代码:


    // 灯光、地面、粒子都属于世界对象,所以需要从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教程五 —— 添加灯光渲染 
运行项目,由于灯光的位置是在立方体的右前上方,灯光的方向斜对着物体,所以可以看立方体右前上的一角很亮,其余是暗的,效果如图: 

通过本章节,大家应该已经掌握了灯光的加载,在下一章节,我会介绍如何点与场景中的物体进行交互。



另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:NVisionXR_iOS教程五——添加灯光渲染-创新互联
链接地址:http://azwzsj.com/article/hpdeh.html