SCNScene类

作者: 弹吉他的少年 | 来源:发表于2018-11-08 09:53 被阅读79次

    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,则图像将以默认格式导出到默认目标。

    相关文章

      网友评论

        本文标题:SCNScene类

        本文链接:https://www.haomeiwen.com/subject/qruixqtx.html