9

SCNScene类

 5 years ago
source link: http://www.cocoachina.com/ios/20190412/26799.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

SCNScene 为游戏中的场景,简单的说,就是放的游戏元素(地图,灯光,人物的游戏元素)的地方

指定节点层次结构的根节点

@property(nonatomic,readonly)SCNNode *rootNode;

注意,我们只有一个跟节点,而一些文件格式可能有许多节点在他们那层的根节点上.因此,导入文件的根节点将是SCNScene根节点的子节点

指定接收器的物理世界

@property(nonatomic,readonly)SCNPhysicsWorld *physicsWorld;

每个场景自动创建一个物理世界对象,以模拟场景中节点上的物理现象.你可以使用此属性来访问场景的全局物理属性,例如重力.要向特定节点添加物理现象,请看physicsBody

检索场景属性

- (nullableid)attributeForKey:(NSString *)key;

可用的keys罗列在"场景属性"组中

指定读取的属性是一个NSString对象

设置场景属性

- (void)setAttribute:(nullableid)attribute forKey:(NSString *)key;

可用的keys罗列在"场景属性"组中

attribute:指定要写入的属性值是一个对象

key:指定要写入的属性是一个NSString对象

背景

@property(nonatomic,readonly)SCNMaterialProperty *background;

指定接收器的背景

背景在场景渲染之前出现

通过设置SCNMaterialProperty.h 中描述的多维数据集映射,可以将背景渲染成天空盒

灯光坏境

@property(nonatomic,readonly)SCNMaterialProperty *lightingEnvironment;

基于图像照明的指定接收器(IBL)

环境应该是SCNMaterialProperty.h中所述的立方体映射

加载

创建并返回与指定文件名关联的场景

+ (nullableinstancetype)sceneNamed:(NSString *)name;

name:文件的名称.该方法在应用程序的主包中查找具有指定名称的文件

此方法初始化时没有选项,并且不检查错误.生成的对象不会缓存

用法:SCNScene *scene = [SCNScene sceneNamed:@"这里一般传入的是模型场景文件的路径"];

创建并返回与指定文件名关联的场景

+ (nullableinstancetype)sceneNamed:(NSString *)name inDirectory:(nullableNSString *)
directory options:(nullableNSDictionary *)options;

name:文件的名称.该方法在应用程序的主包中查找具有指定名称的文件

directory:要搜索的bundle子目录的名称

options:(选择/设置)选项字典.相关的密钥记录在SCNSceneSource类中

返回:此方法初始化时没有选项,并且不检查错误.生成的对象不会缓存

在指定的URL上创建和返回一个场景

+ (nullableinstancetype)sceneWithURL:(NSURL *)url options:
(nullableNSDictionary *)options error:(NSError **)error;

url:这个URL是一个3D文件

options:选项字典.相关的密钥记录在SCNSceneSource类中

error:通过引用传递的NSError对象在返回nil时获取有关错误的更多信息

返回:这里的方法是为了方便.它等效于使用指定的url和options初始化一个SCNSceneSource,并向它的场景请求相同的选项

通过指定的URL写这个场景

 - (BOOL)writeToURL:(NSURL *)url options:(nullableNSDictionary *)
 options delegate:(nullableid)delegate progressHandler:
 (nullableSCNSceneExportProgressHandler)progressHandler;

url:将场景写入目标URL.

options: 一个字典选项.有效的key在"场景书写选项"部分中有所描述

delegate: 一个可选的代理,用于管理外部引用.例如图片

progressHandler:(进度处理程序) 一个可选的块来处理操作的进度

返回  如果操作成功就返回YES,否则就返回NO.错误检查可以通过"progressHandler"的"error"参数来完成.

雾/迷雾/浓雾

开始雾距离

@property(nonatomic)CGFloat fogStartDistance;

开始指定接收器的雾距离.动画.默认为0

结束雾距离

@property(nonatomic)CGFloat fogEndDistance;

结束指定接收器的雾距离.动画.默认为0

雾密度指数

@property(nonatomic)CGFloat fogDensityExponent;

指定接收器的雾密度指数.动画.默认为1

返回:控制开始和结束雾距之间的衰减.0表示恒定雾,1表示线性雾,2表示二次雾,但任何正值都将起作用)

雾颜色

@property(nonatomic,retain)id fogColor;

指定接收器的雾颜色[NSColor / CGColorRef].动画.默认为白色

暂停

@property(nonatomic,getter=isPaused)BOOL paused;

控制场景是否已暂停.默认为NO

暂停场景将暂停动画,动作,粒子和物理

委托方法SCNSceneExportDelegate

@optional

在代理上调用写入引用的图像并返回目标网址

- (nullableNSURL *)writeImage:(UIImage *)image withSceneDocumentURL:(NSURL *)
documentURL originalImageURL:(nullableNSURL *)originalImage;

image:这个图片是白色

documentURL:(文件URL)  这个URL是场景现在导出的

originalImageURL:(原始图片URL)  图像的原始网址.如果图像之前未从网址加载,则可能为nil

返回:委托必须返回导出的图像网址,如果未导出任何图像,则返回nil。 如果返回的值为nil,则图像将以默认格式导出到默认目标。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK