1.基本概念
2.创建项目,模拟下载链接(模型),下载存储到沙盒,展示
3.编辑代码, demo下载
4.相关编辑软件
5.第三方平台
- dae模型下载平台
- dae模型的使用,及可转换为.scn模型
AR
AR支持2D和3D场景, SceneKit支持.dae或obj格式的模型,导入后可以转换成SceneKit对应的scn格式。
AR和SLAM:
AR的框架可以简单划分为感知和交互两部分。
感知部分 : 主要负责信息的收集和处理。信息主要通过不同的传感器收集,包括图像、设备加速度、距离(深度)、语音、手势等。利用这些信息,可以进行运动追踪(定位)、地图构建、语音识别、手势识别等一系列感知行为。这部分主要通过APP或者Default service调用不同的Service模块实现。
交互部分 : 主要负责根据指令触发感知行为或者根据感知结果输出交互行为,比如根据运动追踪得到的姿态渲染虚拟物体,根据场景扫描的结果控制虚拟物体的运动、控制系统界面等等。这部分主要通过APP调用操作系统命令和渲染模块实现。
一个APP可能同时调用多个service模块,一个service模块可能调用多个传感器。理清service模块和传感器之间的最佳组合及最优算法,是AR算法的核心问题。
AR中的SLAM :
如果一个设备想要提供3D效果的AR,显然运动追踪模块是必备的。如果想让虚拟物体和场景交互,或是想要扫描一个真实物体,那么(稠密)三维地图可以提供场景的三维几何信息。
而定位(运动追踪)和建图(稀疏或者稠密地图)构成了SLAM的核心功能。因此,SLAM可以说是AR中最基础的模块,属于设备感知周边环境的范畴。
手势,拖动,单双击等功能
SCNView如何灵活使用DAE文件
功能:
添加双击手势 单击手势 移动手势 双击恢复原状的手势 处理拖拉手势
将.scn文件直接拖入项目,编辑场景(有局限性)
创建AR项目默认会导入一个.scn文件,直接替换即可
模型处理及压缩 ,上传服务器(根据服务下载最新模型)
设置:
手动模拟Xcode对.scnassets文件夹里的.dae文件做一次优化
功能:上传压缩文件zip,通过服务器下载解压,然后显示
下载链接
1 : 上传到公司服务器
2 : 制作公网zip测试下载链接
(1)上传demo中art.scnassets压缩文件art.scnassets.zip到github上
(2)进入页面https://github.com/niexiaobo/ResponsiveWebsite/blob/master/art.scnassets.zip
(3)查看Download按钮对应源码
<pre id="line1"><a id="raw-url" class="btn btn-sm BtnGroup-item" href="/niexiaobo/ResponsiveWebsite/raw/master/art.scnassets.zip">Download</a></pre>
其中:https://github.com/niexiaobo/ResponsiveWebsite/raw/master/art.scnassets.zip就是下载链接
创建AR项目
图片.png修改info
主要代码
#import "ViewController.h"
#import "ZipArchive.h"//解压zip
#import "AFNetworking.h"//异步下载
#import "SVProgressHUD.h"//进度和提示框
@interface ViewController () <ARSCNViewDelegate>
//https://github.com/niexiaobo/ResponsiveWebsite/raw/master/art.scnassets.zip
@property (nonatomic, strong) IBOutlet ARSCNView *sceneView;
@property (nonatomic, strong)NSURL *documentsDirectoryURL;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//指定存储路径
self.documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
//需要加载的文件路径(以官方做好的文件测试)
self.documentsDirectoryURL = [self.documentsDirectoryURL URLByAppendingPathComponent:@"art.scnassets/ship.scn"];
//判断文件是否已下载
NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/art.scnassets/ship.scn"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:documentsDirectory]) {
[self downloadZip];//不存在,下载
} else {
[self addsceneView];//如果存在,显示
}
}
//开始下载
- (void)downloadZip {
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
//url链接:zip下载
NSURL *URL = [NSURL URLWithString:@"https://github.com/niexiaobo/ResponsiveWebsite/raw/master/art.scnassets.zip"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
//显示下载进度
[SVProgressHUD showProgress:downloadProgress.fractionCompleted];
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
//对文件解压
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *inputPath = [documentsDirectory stringByAppendingPathComponent:@"/art.scnassets.zip"];
NSError *zipError = nil;
[SSZipArchive unzipFileAtPath:inputPath toDestination:documentsDirectory overwrite:YES password:nil error:&zipError];
if( zipError ){
[SVProgressHUD showErrorWithStatus:@"解压失败"];
}else {
[SVProgressHUD showSuccessWithStatus:@"解压成功"];
//开始绘制
[self addsceneView];
}
}];
[downloadTask resume];
}
//开始绘制
- (void)addsceneView {
self.sceneView.delegate = self;
self.sceneView.showsStatistics = YES;
SCNScene *scene1 = [SCNScene sceneWithURL:self.documentsDirectoryURL options:nil error:nil];
self.sceneView.scene = scene1;
}
手机运行效果:
3D软件
下载3D处理软件MAC版: Blender
Blender描述:
一个开源的多平台轻量级全能三维动画制作软件,提供从建模,动画,材质,渲染,到音频处理,视频剪辑的一系列动画短片制作解决方案。blender以python为内建脚本,支持yafaray渲染器,同时还内建游戏引擎。 有了Blender后,喜欢3D绘图的玩家们不用花大钱,也可以制作出自己喜爱的3D模型了
下载3D处理软件Cheetah3D for mac
Cheetah3D描述:
Cheetah3D for mac是Mac os平台上的一个很棒的Mac动画制作工具,提供了许多有用的功能强大的多边形建模,编辑在先进的细分和HDRI渲染光能辐射。Cheetah3D倾向、快速和优雅的3D建模、渲染动画,功能非常的强大和实用。
三方平台,其他功能
图片.png 图片.pngdae模型下载平台 参考
比如
1: 爱给网
下载爱给网 dae 模型,如何在 xcode 中使用
(1)下载模型
1.解压后,文件夹里file.dae 和尹轻舞.tga 文件, 用ps等转换为png格式
屏幕快照 2018-05-17 下午2.32.01.png
2.同飞机模型一样,建立一个.scnassets文件夹,导入(也可以下载的形式使用)
图片.png-
点击dae文件,弹出更新框,update: 更新模型
图片.png -
展开菜单,查看文件结构
图片.png -
设置外衣
图片.png -
设置外衣 : 添加material
图片.png -
设置外衣:修改Diffuse选项,选择你的外衣图
图片.png -
设置外衣: 效果图
图片.png -
修改代码,设置新文件名称
图片.png -
运行: 模型太大,看到的是大腿
图片.png -
菜单可见,模型默认有个节点,把模型拖出来,选择_3dxyz,我删掉它
图片.png -
右侧栏目位置和尺寸
图片.png -
设置位置和尺寸初始化(Scale: 该测试模型设置了0.015)
图片.png -
设置完后,由于缩小后效果,很小,需要切换视角(多次选择相机视角,比如front),让模型自动复位:
图片.png -
移动到正前方的位置(实线交叉点为相机点, 点击轴长按拖动):
16 . 手机运行效果:
图片.png
-
另外, 可以把 .dae 模型转 .scn 模型
图片.png -
选择保留两者
图片.png -
新生成的文件: filecopy.scn
图片.png
网友评论