1、SCNScene

  SCNScene是一个场景图——具有附加几何形状、光照、摄像机和其他属性的节点的层次结构,共同形成可显示的3D场景。

2、相关API简介

  • 初始化方法
//懒加载
+ (instancetype)scene; //name:3D文件的路径
+ (nullable instancetype)sceneNamed:(NSString *)name API_AVAILABLE(macos(10.9)); /**
@param name 3D文件路径
@param directory 要搜索的路径子目录的名称
@param options 字典,相关秘钥记录在SCNSceneSource类中
*/
+ (nullable instancetype)sceneNamed:(NSString *)name inDirectory:(nullable NSString *)directory options:(nullable NSDictionary<SCNSceneSourceLoadingOption, id> *)options API_AVAILABLE(macos(10.10)); /**
@param url 3D文件路径
@param options 字典,相关秘钥记录在SCNSceneSource类中
@param error 错误信息
*/
+ (nullable instancetype)sceneWithURL:(NSURL *)url options:(nullable NSDictionary<SCNSceneSourceLoadingOption, id> *)options error:(NSError **)error;
  • 控制场景的动画
//暂停场景将暂停动画、动作、粒子和物理。默认为NO。
@property(nonatomic, getter=isPaused) BOOL paused API_AVAILABLE(macos(10.10));
  • 获取场景内容
//获取根节点
@property(nonatomic, readonly) SCNNode *rootNode; //获取背景
//背景在场景渲染之前出现
//通过设置SCNMaterialProperty.h 中描述的多维数据集映射,可以将背景渲染成天空盒
@property(nonatomic, readonly) SCNMaterialProperty *background API_AVAILABLE(macos(10.9)); //获取灯光环境
//环境应该是SCNMaterialProperty.h中所述的立方体映射
@property(nonatomic, readonly) SCNMaterialProperty *lightingEnvironment API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0));
  • 管理场景属性
//检索场景属性
- (nullable id)attributeForKey:(NSString *)key; //设置场景属性
- (void)setAttribute:(nullable id)attribute forKey:(NSString *)key;
//场景属性
#if defined(SWIFT_SDK_OVERLAY2_SCENEKIT_EPOCH) && SWIFT_SDK_OVERLAY2_SCENEKIT_EPOCH >= 3
typedef NSString * SCNSceneAttribute NS_STRING_ENUM;
#else
typedef NSString * SCNSceneAttribute;
#endif
FOUNDATION_EXTERN SCNSceneAttribute const SCNSceneStartTimeAttributeKey; //一个浮点值,封装在NSNumber中,包含场景的开始时间
FOUNDATION_EXTERN SCNSceneAttribute const SCNSceneEndTimeAttributeKey; // 一个浮点值,封装在NSNumber中,包含场景的结束时间
FOUNDATION_EXTERN SCNSceneAttribute const SCNSceneFrameRateAttributeKey; // 一个浮点值,封装在NSNumber中,包含场景的帧速率
FOUNDATION_EXTERN SCNSceneAttribute const SCNSceneUpAxisAttributeKey API_AVAILABLE(macos(10.10)); //一个包含x,y,z向量[结构体]值,封装在NSValue中,包含场景的上轴.这仅仅是为了信息,设置上轴没有任何效果 #define SCNSceneAttributeStartTime SCNSceneStartTimeAttributeKey
#define SCNSceneAttributeEndTime SCNSceneEndTimeAttributeKey
#define SCNSceneAttributeFrameRate SCNSceneFrameRateAttributeKey
#define SCNSceneAttributeUpAxis SCNSceneUpAxisAttributeKey
  • 导出场景文件
/**
将场景及其内容导出到指定URL的文件中。 @param url 指定的URL
@param options 一个字典选项.有效的key在"场景书写选项"部分中有所描述
@param delegate 一个可选的代理,用于管理外部引用.例如图片
@param API_UNAVAILABLE progressHandler(进度处理程序) 一个可选的块来处理操作的进度
@return 如果操作成功就返回YES,否则就返回NO.错误检查可以通过"progressHandler"的"error"参数来完成.
@讨论 macOS 10.10 和 更低的版本只支持导出 .DAE 文件.
开启 macOS 10.11 支持导出 .dae, .scn 以及模型I/O支持的文件所有格式.
开启 iOS 10 支持导出 .scn 以及模型I/O支持的文件所有格式. */
- (BOOL)writeToURL:(NSURL *)url options:(nullable NSDictionary<NSString *, id> *)options delegate:(nullable id <SCNSceneExportDelegate>)delegate progressHandler:(nullable SCNSceneExportProgressHandler)progressHandler API_AVAILABLE(macos(10.9), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos); /**
场景导出期间调用的block块 @param totalProgress 进度0-1
@param error 错误信息
@param stop 是否终止 设置*stop为YES停止
*/
typedef void (^SCNSceneExportProgressHandler)(float totalProgress, NSError * _Nullable error, BOOL *stop);
API_AVAILABLE(macos(10.9), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos)
@protocol SCNSceneExportDelegate <NSObject>
@optional
/**
在代理上调用写入引用的图像并返回目标网址 @param image 这个图片是白色
@param documentURL 这个URL是场景现在导出的
@param API_UNAVAILABLE 图像的原始网址.如果图像之前未从网址加载,则可能为nil
@return 委托必须返回导出的图像网址,如果未导出任何图像,则返回nil。 如果返回的值为nil,则图像将以默认格式导出到默认目标。
*/
- (nullable NSURL *)writeImage:(UIImage *)image withSceneDocumentURL:(NSURL *)documentURL originalImageURL:(nullable NSURL *)originalImageURL API_AVAILABLE(macos(10.9), ios(10.0), tvos(10.0)) API_UNAVAILABLE(watchos);
@end
//场景导出目标URL
FOUNDATION_EXTERN NSString * const SCNSceneExportDestinationURL API_AVAILABLE(macos(10.9));
  • 给场景添加雾
//开始雾距离
@property(nonatomic) CGFloat fogStartDistance API_AVAILABLE(macos(10.10)); //结束雾距离
@property(nonatomic) CGFloat fogEndDistance API_AVAILABLE(macos(10.10)); //雾密度指数
//(控制开始和结束雾距之间的衰减.0表示恒定雾,1表示线性雾,2表示二次雾,但任何正值都将起作用
@property(nonatomic) CGFloat fogDensityExponent API_AVAILABLE(macos(10.10)); //雾颜色、默认为白色
@property(nonatomic, retain) id fogColor API_AVAILABLE(macos(10.10));
  • 场景的物理信息
//物理世界
//每个场景自动创建一个物理世界对象,以模拟场景中节点上的物理现象.你可以使用此属性来访问场景的全局物理属性,例如重力.要向特定节点添加物理现象,请看physicsBody
@property(nonatomic, readonly) SCNPhysicsWorld *physicsWorld API_AVAILABLE(macos(10.10));

iOS开发之SceneKit框架--SCNScene.h的更多相关文章

  1. iOS开发之SceneKit框架--SCNParametricGeometry.h

    1.SCNParametricGeometry简介 SCNParametricGeometry用于创建简单的3D模型,比如SCNPlane 平面.SCNPyramid 锥形(金字塔).SCNBox 立 ...

  2. iOS开发之SceneKit框架--SCNGeometry.h

    1.SCNGeometry简介 SCNGeometry负责呈现三维模型的类,它管理者物体的形状.纹理等.它可以由SCNGeometrySource和SCNGeometryElement来构造, 一个S ...

  3. iOS开发之SceneKit框架--SCNNode.h

    1.SCNNode简介 SCNNode是场景图的结构元素,表示3D坐标空间中的位置和变换,您可以将模型,灯光,相机或其他可显示内容附加到该元素.也可以对其做动画. 2.相关API简介 初始化方法 // ...

  4. iOS开发之SceneKit框架--SCNView.h

    1.SCNView 在macOS中,SCNView是NSView的子类,在iOS和tvOS中,SCNView是UIView的子类.SCNView用于显示SceneKit的3D场景,而需要设置场景的相关 ...

  5. iOS开发之SceneKit框架--SCNAction.h

    1.SCNAction简介 主要负责节点SCNNode的属性,实现node的渐变.移动.出现.消失.实现动画等. 2.相关API 节点的移动(earthNode的初始坐标(5,0,0)) //从当前位 ...

  6. iOS开发之SceneKit框架--SCNLight.h

    1.SCNLight简介 用于添加光源,连接到一个节点照亮现场,可以给场景添加不同的灯光,模拟逼真的环境. 2.四种灯光的简介 添加一个box立方体.一个tube圆柱管道和一个地板floor,没有灯光 ...

  7. iOS开发之SceneKit框架--SCNCamera.h

    1.SCNCamera简介 被称为照相机或者摄像机,可以附加到节点以提供显示场景的角度.其实就是用户视角和人的眼睛一样. 2.相关API简介 初始化 //懒加载 + (instancetype)cam ...

  8. iOS开发之SceneKit框架--加载多个模型.dae/.scn文件

    1.通过SCNGeometry或子类SCNParametricGeometry创建 相关链接:iOS开发之SceneKit框架--SCNGeometry.h iOS开发之SceneKit框架--SCN ...

  9. iOS开发之SceneKit框架--实战地月系统围绕太阳旋转

    1.创建地月太阳系统scn文件 注意:moon在earth结构下,earth和moon在sun结构下. 2.获取scn中模型的对应节点和自转(太阳为例) 获取节点: name是对应的Identity字 ...

随机推荐

  1. dev中 ,usercontrol打印界面内容,打印预览和打印

    首先,在对应的文件夹下面添加引用,如下图 如果没有就下载下来包. 预先在本地文件夹下面建立.frx文件,像这样的, 然后在触发事件下面写 //打印预览 private void btn_Preview ...

  2. jq-demo-点击选择(英雄联盟)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. List之去重

    废话不多说,直接上代码 List<int> list1 = new List<int>(); list1.Add(); list1.Add(); list1.Add(); li ...

  4. springboot启动时过滤不需要注入的类

    在springbootApplication启动类上加入注解 @ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterTy ...

  5. 8-26接口压力测试-3Jmeter-Java请求

    1.新建maven工程 2.导入依赖,并使用shade将所需的依赖打入jar包 <?xml version="1.0" encoding="UTF-8"? ...

  6. thinkphp入口文件

    ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口. 应该说,所有应用都是从入口文件开始的,并且不同应用的入口文件是类似的. 入口文件定 ...

  7. 使用GDI+绘制的360风格按钮控件

    将下面的代码拷贝到一个单元中,创建一个包,加入这个单元后安装.使用的时候设置好背景颜色,边框颜色,图标(png格式)相对路径的文件名称.这个控件可以利用PNG图像的颜色透明特性,背景色默认透明度为50 ...

  8. java带jar编译与运行

    javac -classpath ./wxpay-sdk-0.0.3.jar HttpsTest2.java java -cp .:./wxpay-sdk-0.0.3.jar HttpsTest2

  9. java-day17

    软件结构:C/S客户端和服务器结构,B/S浏览器和服务器结构 网络通信协议 TCP:传输控制协议,面向连接的通信协议,即传输数据之前,发送端和接收端建立逻辑连接,然后再传输数据. 三次握手 UDP:用 ...

  10. 通过Matlab SDK 获取tushare数据

    概要说明 版本要求:Matlab需要2016b及以上版本 接口说明:可以用help pro_api和help pro_bar查看 demo程序:请参考tushare_pro_test.m文件 程序包下 ...