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初探相关推荐

  1. 分享一个做AR很好用的软件

    Reality Composer AR Creation Tools - Augmented Reality - Apple Developer 在这里下载Xcode 在这个里面自带 怎么导出usdz ...

  2. moTzxx-CMS —— [一个基于PHP代码的后台管理系统(ThinkPHP5.1.40)]

    ☁ 前言 [重要] 如果你先前已经下载了源码,后期发现存在些许问题时 请及时反馈给我,以便及时更新: 或者回来参考我更新的内容,尤其是 "使用指导" 部分,或许这时我已经自测并做了 ...

  3. Xcode 12 Beta 3 更新记录SwiftUI2

    Xcode 12 Beta 3发行说明 更新您的应用程序以使用新功能,并针对API更改测试您的应用程序. 总览 Xcode 12 beta 3包括适用于iOS 14,iPad OS 14,tvOS 1 ...

  4. Xcode 12 GM发行说明,快来看看SwiftUI和Swift都更新哪些新技术吧

    使用代码生成了词云大家可以看看 Xcode 12 GM发行说明 更新您的应用程序以使用新功能,并针对API更改测试您的应用程序. 总览 Xcode 12包括适用于iOS 14,iPad OS 14,t ...

  5. SwiftUI AR教程之RealityKit 中将 AR 内容锚定到面部(教程含源码)

    增强现实内容的一个常见用途是将 2D 或 3D 对象叠加在用户的面部之上.让我们谈谈如何在 RealityKit 项目中做到这一点. 让我们从 Xcode 中的增强现实应用程序模板开始: 对于这个项目 ...

  6. Unity-AR 简介

    Unity-AR 简介 现有Unity AR Sdk ARKit : 苹果推出的AR开发平台 ARCore : Google 推出的增强现实 SDK ARFoundation : ARFoundati ...

  7. 2022年,元宇宙是否能结束争议?

    如何看待元宇宙这一新事物?有人说元宇宙是未来互联网的发展目标,是人类信息技术的另一场革命,也有人说元宇宙概念只是"割韭菜"的套路.近日,北京大学汇丰商学院联合安信证券发布了报告,& ...

  8. combine wwdc_WWDC的失败之处

    combine wwdc WWDC, in case you aren't familiar with it, is Apple's Worldwide Developer Conference, w ...

  9. 苹果编辑器在哪_苹果 WWDC 2020 发布的ARKit 4 为何低调 ?

    不知道是否有朋友看到这篇文章和下面这张图一样的表情? ? ? 公元2020年6月23日,苹果的 WWDC 2020 如期而至. 只是,与往年不同的是,这是一场没有在场观众的线上开发者大会. 由于没有现 ...

最新文章

  1. UVA11078开放式学分制(前面-后面的最大值)
  2. 【数据平台】Python解析Ngnix日志
  3. map for循环_Java_foundations_1 如何遍历Map
  4. 【Tools】Visual Studio 2019搭建Qt开发环境
  5. Jerry 的 SAP 技术交流群里讨论的技术问题都会同步到这个帖子里
  6. PL/SQL详细介绍
  7. ueditor上传图片写入数据库_手把手教你,如何用交管12123上传驾驶证照片!
  8. switch 条件判断_C语言学习第7篇---C语言三大结构之一判断结构
  9. oracle 写declare例子
  10. c语言程序设计对称数,c语言程序设计--对称数
  11. android fragment 底部菜单栏,安卓开发-底部导航栏切换Fragment进行显示
  12. 过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译)
  13. 一个域名对应多个IP地址
  14. 高处的圣地 --读《消失的地平线》
  15. 威海之恋 mv和歌词
  16. 解决Win2016提示“发生身份验证错误 要求的函数不受支持”的问题
  17. <a name=“maodian“>锚点标签
  18. 将OKRA-ERP配置成固定资产实物管理全过程
  19. 关于定位一直在香港的解决方式
  20. 软件开发与软件研发的区别

热门文章

  1. 【吴刚】个人网站设计初级入门标准视频教程-吴刚-专题视频课程
  2. 西北农林科技大学农学院农艺与种业(专硕)考研上岸经验分享
  3. 接入厂商沟通科技跻身“深圳高新技术企业”行列
  4. 2022.12.5最新省市区json字符串
  5. Win7中如何卸载IE9
  6. 5G JAVA开发_java靠什么在5G时代站稳脚跟!
  7. jfinal mysql_jfinal3.5连接mysql8
  8. 人工智能高等数学--微积分_导数意义_求导公式_绝对值函数_relu函数_导数物理意义_几何意义---人工智能工作笔记0025
  9. “关爱你我他,温暖千万家”——爱心温暖事实孤儿心田
  10. JetsonNano人脸识别(一)安装配置