接着上一章的例子,这章节来介绍一下三种灯光(平行光、点光源、聚光灯)的使用。
引入头文件#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)];
}
NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"dir_light"];
// 将灯光添加到场景中
if (light) {
[light attach:self];
}
NVWorldLight *light = (NVWorldLight *)[[self getWorld] getObjectByName:@"dir_light"];
// 将灯光从场景中去除
if (light) {
[light dettach];
}
// 灯光、地面、粒子都属于世界对象,所以需要从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];
}
// 灯光、地面、粒子都属于世界对象,所以需要从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];
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。