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<SCNSceneSourceLoadingOption,id> *)options;
name
:文件的名称.该方法在应用程序的主包中查找具有指定名称的文件
directory
:要搜索的bundle子目录的名称
options
:(选择/设置)选项字典.相关的密钥记录在SCNSceneSource类中
返回:此方法初始化时没有选项,并且不检查错误.生成的对象不会缓存
在指定的URL上创建和返回一个场景
+ (nullableinstancetype)sceneWithURL:(NSURL *)url options:(nullableNSDictionary<SCNSceneSourceLoadingOption,id> *)options error:(NSError **)error;
url
:这个URL是一个3D文件
options
:选项字典.相关的密钥记录在SCNSceneSource类中
error
:通过引用传递的NSError对象在返回nil时获取有关错误的更多信息
返回:这里的方法是为了方便.它等效于使用指定的url和options初始化一个SCNSceneSource,并向它的场景请求相同的选项
通过指定的URL写这个场景
- (BOOL)writeToURL:(NSURL *)url options:(nullableNSDictionary<NSString *,id> *)options delegate:(nullableid<SCNSceneExportDelegate>)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,则图像将以默认格式导出到默认目标。
网友评论