Reality Composer使用+QuickLook初探
Reality Composer
苹果公司为了填补在3D建模这一块的空白,给我们提供了这样一个强大的3D建模工具——Reality Composer,接下来就让我们研究一下如何使用这件工具。
官网介绍:https://developer.apple.com/documentation/realitykit/creating-3d-content-with-reality-composer
step1——打开方式:xcode中按如下方式打开,新建
step2—— 选择场景
在这里选择你所需要的大场景,相当于RealityKit中的AnchorEntity,在这里共有五种选择,水平面、垂直面、图像、人脸、物体,也就是说可以把虚拟物体定位到这五种真实世界的对象中。
step3——编辑
这里我们就选择官网提供的一个机器人模型来进行reality composer的编辑。
素材地址:https://developer.apple.com/augmented-reality/quick-look/
这次我们就选择最常用的水平面进去,首先映入眼帘的是一个正方体,一个文本,通过触摸板或鼠标操控可以控制移动和旋转,网格即为水平面。
在上方可以选择添加新的物体,点击物体可以在右侧属性板调整属性,也可以对多个物体进行成组操作,类似于把几个物体捆绑在一起,可以赋予相同行为。
step4-添加模型
将下载好的机器人模型直接拖入,点击空白处右侧属性板显示的则是大场景(相当于AnchorEntity)的属性,名字最好设为英文,点击机器人显示的则是模型(相当于ModelEntity)的属性
step5-添加行为
点击右上角行为,选择机器人,选择轻点与翻转即可为机器人添加一个翻转行为,可以选择受影响的对象和操作序列,操作序列就是可以添加多个行为,将不同的行为拉到一起即可让这些行为同时进行,如果想要model有碰撞效果,点击模型,在属性面板中参与物理行为,选择不同的材质即会有不同的碰撞效果。
为了达到该文章的项目需求,我们可以设置成如下行为,场景开始时隐藏机器人,设置触发器为通知,即用代码来添加触发器(需设置一个标识符),触发后实现机器人从远处走到原点处,动画使用的是下载时自带的usdz文件的动画,我们可以将迭代设置为2,让动画执行时间延长。
step6-添加文本标志
在平面中添加一个文本,若能看到文本说明已经检测到平面,这时候就配置完成可以保存文件了。
step7-新建项目文件
xcode新建一个AR项目,将AR模版拖入xcode,写入以下代码,除了label的设置以外就只剩一点点代码了,仔细看看会发现很简单。
//
// ViewController.swift
// RealityComposer
//
// Created by mac on 2022/10/24.
//import UIKit
import RealityKitclass ViewController: UIViewController {@IBOutlet var arView: ARView!var robotWalk: AR.RobotWalk!//由于viewDidload以外也要使用,所以设为全局变量//添加一个可点击的label,点击召唤机器人lazy var startLabel:UILabel = {let startLabel = UILabel()startLabel.translatesAutoresizingMaskIntoConstraints = falsestartLabel.textAlignment = .centerstartLabel.text = "点击召唤机器人"startLabel.textColor = .yellowstartLabel.font = .systemFont(ofSize: 24,weight: .heavy)return startLabel}()override func viewDidLoad() {super.viewDidLoad()//给label设置手势let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(tap:)))view.addSubview(startLabel)startLabel.isUserInteractionEnabled = truestartLabel.addGestureRecognizer(tap)//设置label的约束startLabel.topAnchor.constraint(equalTo: view.topAnchor, constant: 70).isActive = truestartLabel.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 100).isActive = truestartLabel.widthAnchor.constraint(equalToConstant: 200).isActive = true//robotWalk就相当于AnchorEntity,自带的load函数后面的RobotWalk是自己取的场景名,将场景加载出来//可以进入AR的定义文件中查看robotWalk = try! AR.loadRobotWalk()//将场景放入arViewarView.scene.addAnchor(robotWalk)}//设置点击事件@objc func handleTap(tap:UITapGestureRecognizer){//调用大场景中的notifications,walkstart即为定义的标识符,调用他的post即可触发行为if tap.state == .ended{//walkStart被实例成NotificationTrigger,其中有一个post方法发送指令,调用即可触发行为robotWalk.notifications.walkStart.post()}}
}
step8-项目中修改
如果对于物体的属性还需要调整可以直接在xcode中打开文件,修改后代码也会实时更新。
step9-项目演示
RealityComposer项目演示
QuickLook
QuickLook是ios的一个AR集成框架,当app的主要功能不是AR时可以使用QuickLook实现一个简要的AR预览。
官网介绍:https://developer.apple.com/documentation/quicklook
https://developer.apple.com/documentation/arkit/previewing_a_model_with_ar_quick_look
首先可以在Reality Composer中创建一个模型(不包含子节点),导出成reality或usdz格式放入xcode中,接着实现以下代码(在xcode中我放入的模型名叫house)即可生成一个简易的AR模型预览功能。
import UIKit
import ARKit
import QuickLookclass ViewController: UIViewController, QLPreviewControllerDataSource {override func viewDidAppear(_ animated: Bool) {super.viewDidAppear(animated)let previewController = QLPreviewController()previewController.dataSource = selfpresent(previewController, animated: true, completion: nil)}func numberOfPreviewItems(in controller: QLPreviewController) -> Int {return 1}func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {let url = Bundle.main.url(forResource: "house", withExtension: "usdz")!return url as QLPreviewItem}}
Reality Composer使用+QuickLook初探相关推荐
- 分享一个做AR很好用的软件
Reality Composer AR Creation Tools - Augmented Reality - Apple Developer 在这里下载Xcode 在这个里面自带 怎么导出usdz ...
- moTzxx-CMS —— [一个基于PHP代码的后台管理系统(ThinkPHP5.1.40)]
☁ 前言 [重要] 如果你先前已经下载了源码,后期发现存在些许问题时 请及时反馈给我,以便及时更新: 或者回来参考我更新的内容,尤其是 "使用指导" 部分,或许这时我已经自测并做了 ...
- Xcode 12 Beta 3 更新记录SwiftUI2
Xcode 12 Beta 3发行说明 更新您的应用程序以使用新功能,并针对API更改测试您的应用程序. 总览 Xcode 12 beta 3包括适用于iOS 14,iPad OS 14,tvOS 1 ...
- Xcode 12 GM发行说明,快来看看SwiftUI和Swift都更新哪些新技术吧
使用代码生成了词云大家可以看看 Xcode 12 GM发行说明 更新您的应用程序以使用新功能,并针对API更改测试您的应用程序. 总览 Xcode 12包括适用于iOS 14,iPad OS 14,t ...
- SwiftUI AR教程之RealityKit 中将 AR 内容锚定到面部(教程含源码)
增强现实内容的一个常见用途是将 2D 或 3D 对象叠加在用户的面部之上.让我们谈谈如何在 RealityKit 项目中做到这一点. 让我们从 Xcode 中的增强现实应用程序模板开始: 对于这个项目 ...
- Unity-AR 简介
Unity-AR 简介 现有Unity AR Sdk ARKit : 苹果推出的AR开发平台 ARCore : Google 推出的增强现实 SDK ARFoundation : ARFoundati ...
- 2022年,元宇宙是否能结束争议?
如何看待元宇宙这一新事物?有人说元宇宙是未来互联网的发展目标,是人类信息技术的另一场革命,也有人说元宇宙概念只是"割韭菜"的套路.近日,北京大学汇丰商学院联合安信证券发布了报告,& ...
- combine wwdc_WWDC的失败之处
combine wwdc WWDC, in case you aren't familiar with it, is Apple's Worldwide Developer Conference, w ...
- 苹果编辑器在哪_苹果 WWDC 2020 发布的ARKit 4 为何低调 ?
不知道是否有朋友看到这篇文章和下面这张图一样的表情? ? ? 公元2020年6月23日,苹果的 WWDC 2020 如期而至. 只是,与往年不同的是,这是一场没有在场观众的线上开发者大会. 由于没有现 ...
最新文章
- UVA11078开放式学分制(前面-后面的最大值)
- 【数据平台】Python解析Ngnix日志
- map for循环_Java_foundations_1 如何遍历Map
- 【Tools】Visual Studio 2019搭建Qt开发环境
- Jerry 的 SAP 技术交流群里讨论的技术问题都会同步到这个帖子里
- PL/SQL详细介绍
- ueditor上传图片写入数据库_手把手教你,如何用交管12123上传驾驶证照片!
- switch 条件判断_C语言学习第7篇---C语言三大结构之一判断结构
- oracle 写declare例子
- c语言程序设计对称数,c语言程序设计--对称数
- android fragment 底部菜单栏,安卓开发-底部导航栏切换Fragment进行显示
- 过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译)
- 一个域名对应多个IP地址
- 高处的圣地 --读《消失的地平线》
- 威海之恋 mv和歌词
- 解决Win2016提示“发生身份验证错误 要求的函数不受支持”的问题
- <a name=“maodian“>锚点标签
- 将OKRA-ERP配置成固定资产实物管理全过程
- 关于定位一直在香港的解决方式
- 软件开发与软件研发的区别
热门文章
- 【吴刚】个人网站设计初级入门标准视频教程-吴刚-专题视频课程
- 西北农林科技大学农学院农艺与种业(专硕)考研上岸经验分享
- 接入厂商沟通科技跻身“深圳高新技术企业”行列
- 2022.12.5最新省市区json字符串
- Win7中如何卸载IE9
- 5G JAVA开发_java靠什么在5G时代站稳脚跟!
- jfinal mysql_jfinal3.5连接mysql8
- 人工智能高等数学--微积分_导数意义_求导公式_绝对值函数_relu函数_导数物理意义_几何意义---人工智能工作笔记0025
- “关爱你我他,温暖千万家”——爱心温暖事实孤儿心田
- JetsonNano人脸识别(一)安装配置