IOS:Xcode - ARKit 开发 - 替换AR中的模型

iOS ARKit入门(附赠王者荣耀周瑜DAE模型贴图) 我是按照“坤小”博客里的文章一步步做的,文章写得清晰易懂,所以搬运给大家,但是由于我不喜欢这个默认的飞机,我想换一个模型,换成我的周瑜大人,所以产生了我的Demo:ARKit入门周瑜模型,我自己提取的模型,分享给大家,请不要做商业用途,谢谢合作! 原文地址:http://blog.youkuaiyun.com/u013263917/article/details/72903174 1.1- 阅读详情

苹果在 WWDC 上发布了ARKit 全新的AR框架,使得开发者可以更快速的为iphone或ipad 构建增强现实应用,这也毫无疑问的使得ios成为全球最大的AR开发平台。所以了我们也开设了ARkit技术分享与开发教程这一全新系列帮助大家更好的了解ARKit。这一次给大家带来 通过Xcode快速的为iphone或ipad构建AR应用(翻译并整理于:https://next.reality.news/)

这里写图片描述

开发准备

在Mac电脑上下载并安装MacOS 10.13和Xcode 9的测试版本。并使你的iphone或ipad升级ios 11版本

这里写图片描述

首先在Xcode里创建一个新的项目。

这里写图片描述

选择增强现实应用程序图标,然后单击“下一步”按钮,按顺序操作。

这里写图片描述

这里写图片描述

这里写图片描述

一切都加载完毕后,我们就进入到项目里:

这里写图片描述

修改模型

ps:以下操作其实也无关紧要,因为sample 中苹果已经准备好了默认的模型在项目里,这里教大家如何替换模型

我们需要准备一些dae格式的3d模型,在本次案例的演示中,我们使用一个类似广告牌的模型。我们可以在TurboSquid网站上进行下载(https://www.turbosquid.com/3d-models/free-billboard-games-3d-model/1129110)。

这里写图片描述

下载完成之后,我们需要解压来完成广告牌上纹理的替换。首先我们准备一张图片:

这里写图片描述

然后打开我们下载的模型文件夹,可以看到billboard.dae文件和纹理的“tex”子文件夹。打开“tex”文件夹。

这里写图片描述

将“pict1.jpg”和“pict2.jpg”替换我们所准备好的图片。

这里写图片描述

效果如图:

这里写图片描述

Xcode默认的AR项目自带了一个3D模型,我们需要用我们刚创建的模型替换它。查看我们的Project Navigator,找到一个名为art.scnassets的文件夹。

这里写图片描述

选择“ship.scn”和“texture.png”,然后删除。

这里写图片描述

按住Control键,选择“art.scnassets”文件夹。然后选择“Add Files to art.scnassets”。

这里写图片描述

这里写图片描述

现在我们事先准备好的模型就已经导入完毕了。

这里写图片描述

接下来,我们需要对模型的位置等信息进行设置。点击下面的截图中的红色箭头指向的小图标。

这里写图片描述

这里写图片描述

我们需要手动输入我们的设置(大家可以参考下数值)

Position x:0.255 y: - 57 z:-87

Scale x:0.09 y:0.09 z:0.09

我们需要在ViewController.swift文件中更改一行代码。双击该文件在主窗口中打开代码。向下滚动代码到具有下面突出显示的文本的行。把“ship.scn”改成“billboard.dae”。

这里写图片描述

let scene = SCNScene(named: art.scnassets/billboard.dae")!

然后我们运行测试,就会实现此效果。

代码分析(1)

对于ARKit,我们需要重点了解ARSession。它是管理创建AR体验所需的运动跟踪和图像处理的对象。

这里写图片描述

在 AR 场景中,首先就是要配置一个 ARSession对象,用来管理摄像头拍摄和对设备动作进行处理。

1.从 Session 中检索视频帧和追踪信息;

2.将这些帧图像作为背景,渲染到自定义视图当中;

3.使用追踪信息,在相机图像上方定位并绘制 AR 内容。

在ARSession中有两个重要的类,分别是:ARSCNView与ARSKView。前者主要通过3D SceneKit内容增强了相机视图,后者2D SpriteKit内容的相机视图。

我们启动ARSession

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 创建 Session 配置
let configuration = ARWorldTrackingSessionConfiguration()
configuration.planeDetection = .horizontal
// 运行视图 Session
sceneView.session.run(configuration)
}

然后使用SceneKit或SpriteKit将虚拟内容放置在视图中。

ARKit会将SceneKit 自动匹配到现实世界中,所以放置一个虚拟对象,为了使其看起来保持真实的位置,这要求你适当地设置模型的位置。

例如,在默认配置中,以下代码将10厘米的立方体放置在相机初始位置前20厘米处:

letcubeNode =SCNNode(geometry:SCNBox(width:0.1, height:0.1, length:0.1, chamferRadius:0))

cubeNode.position =SCNVector3(0,0, -0.2)

sceneView.scene.rootNode.addChildNode(cubeNode)

当然你可以使用ARAnchor类来跟踪现实世界的位置.

例如,当启用平面检测时,ARKit会为每个检测到的平面添加并更新锚点。要为这些锚点添加可视化内容,可以执行以下方法:ARSCNViewDelegate

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

guard let planeAnchor = anchor as? ARPlaneAnchor else { return }

let plane = SCNPlane(width: CGFloat(planeAnchor.extent.x), height: CGFloat(planeAnchor.extent.z))

let planeNode = SCNNode(geometry: plane)

planeNode.position = SCNVector3Make(planeAnchor.center.x, 0, planeAnchor.center.z)

planeNode.transform = SCNMatrix4MakeRotation(-Float.pi / 2, 1, 0, 0)

node.addChildNode(planeNode)

}

SpriteKit 的操作就简单许多,它可以显示浮动的2D图像在3D空间中。

var translation = matrix_identity_float4x4
translation.columns.3.z = -0.2
let transform = simd_mul(view.session.currentFrame.camera.transform, translation)
let anchor = ARAnchor(transform: transform)
view.session.add(anchor: anchor)
func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {
return SKLabelNode(text:"")
}
01 ArcGIS空间分析--水文分析--利用水文分析方法提取山谷山脊线 ArcGIS空间分析的一个特别好的分析教程是汤国安老师的空间分析的内容。 实例与练习 练习1. 利用水文分析方法提取山脊、山谷线 1. 背景:山脊线、山谷线是地形特征线,它们对地形、地貌具有一定的控制作用。它们与山顶点、谷底点以及鞍部点等一起构成了地形及其起伏变化的骨架结构。因此在数字地形分析中,山脊线和山谷线以及 阅读详情

相关推荐

苏州大学自动化考研842自动控制原理:手把手教你用胡寿松《自控》高效备考(附复试电工/电子/微机原理攻略)

本文详细解析苏州大学自动化考研842自动控制原理备考策略,以胡寿松《自动控制原理》为核心教材,提供三阶段高效学习路径和实战技巧。重点涵盖频域分析、根轨迹绘制等高频考点,并针对机电、光电、轨道三个学院的复试科目(电工电子技术、电子技术基础、微机原理与接口技术)给出差异化备考方案,助力考生全面提升笔试和面试表现。

weixin_42638178的博客 398

Laravel框架中模型操作(AR模式)

模型操作(AR模式)【理解】 Laravel 自带的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现,每张数据表都对应一个与该表进行交互的“Model模型”,模型允许你在表中进行数据查询,以及插入、更新、删除等操作。 AR模式三个核心(映射): 每个数据表 与数据表进行交互的Model模型映射(实例化模型) 记录中的字段 与模型类的属性映射(给属性赋值) 表中的每个记录 与一个完整的请求实例映射(具体的CURD操作) 1、定义模型 (1)定义位

Cure The World的博客 1883

无人机避障——卡内基梅隆大学(CMU)CERLAB 无人机自主框架复现

CMUCERLAB无人机自主框架是一个模块化的无人机自主导航系统,包含感知、测绘、规划和控制等组件。安装过程中遇到的主要问题包括:(1)cv_bridge路径未正确识别,需手动指定路径;(2)OpenCV版本冲突(4.2与4.6),导致动态导航节点崩溃。解决方案包括:完全卸载OpenCV4.2,重新编译安装OpenCV4.6,并修改相关CMakeLists文件指定版本。最终成功运行仿真环境,实现无人机在Gazebo和RViz中的自主避障导航功能。

weixin_45390670的博客 1644

Web前端增强现实(AR)开发框架推荐大汇总 | 建议收藏

按照字面意思来讲,WebAR就是在Web端集成AR的功能。WebAR使用WebRTC,WebGL和现代传感器API的组合技术,通过Web浏览器提供对基于Web的增强现实的访问与实现。 提到WebAR,你脑海中会立刻想到什么?可能会有三种不同的关注点或答案: 关注点在Web上。“Web上也能实现AR效果吗?那以后做营销会不会更简单、传播更广更快了。” 关注点在AR上。“就是那个Pokemon Go啊,我知道的,它不是原生应用吗,使用Android开发的吗,难道以后Web端也可以体验到吗?“ 关注点..

albertleebob的博客 2581

红外气体检测方案解析:从NDIR原理到物联网终端设计实践

气体检测是工业安全与环境监测的核心需求,其技术原理主要基于气体分子对特定物理或化学信号的响应。非色散红外(NDIR)技术作为一种物理检测方法,通过测量气体分子对特定波长红外光的吸收来定量浓度,因其不依赖化学反应,具备寿命长、抗干扰强和响应快等优势。在工程实践中,红外气体检测方案的价值在于为物联网终端设备提供了高可靠、低功耗的感知能力,广泛应用于工业过程监控、环境空气质量监测以及智能家居安全预警等场景。本文以一套集成了Microchip MCU、Axetris红外光源和Pyreos热释电传感器的参考设计为例,

weixin_30954817的博客 393

保姆级教程:用STM32标准库搞定TIM1的PWM输出(附完整代码和避坑点)

本文提供STM32F103高级定时器TIM1的PWM输出保姆级教程,涵盖从工程搭建到完整代码实现的详细步骤。重点解析TIM1作为高级定时器的特殊配置要点,包括时钟初始化、PWM通道设置和GPIO复用功能,并附常见问题排查指南和动态调整占空比的实用技巧,帮助开发者高效实现精准PWM控制。

weixin_30673611的博客 432

Ar开源框架

Vuforia:Vuforia是一个强大的增强现实平台,提供了图像识别、跟踪、虚拟内容生成和渲染等功能。它支持多种平台,包括Android、iOS和Unity等。ARToolKit:这是一个广泛使用的增强现实框架,提供了图像识别、跟踪和渲染等功能。它支持多种平台,包括Android、iOS和Windows等。ARCore:ARCore是由Google开发的增强现实框架,专门用于Android平台。它提供了图像识别、跟踪、环境感知和虚拟内容渲染等功能。它提供了图像识别、跟踪、环境感知和虚拟内容渲染等功能。

weixin_52831324的博客 1743

利用baostock获取上市公司财务指标

利用baostock获取上市公司的财务指标 1、导入模块,登录baostock import baostock as bs import pandas as pd import time # 登陆系统 lg = bs.login() # 显示登陆返回信息 print('login respond error_code:'+lg.error_code) print('login respond error_msg:'+lg.error_msg) 2、查询股票代码、行业板块 # 查询股票代码 rs=.

firefox_yau的博客 2097

使用XR-frame框架,实现简单AR

注意这里我们开启的ar-system的模式为Plane,即平面识别,这种模式下相机不能被用户控制,需要将控制器、target等都删掉,同时ar-tracker的mode要和ar-system的完全一致。在index.wxml中,我们创建了一个场景xr-scene,并在其下添加了一个相机xr-camera。首先在场景中加载gltf模型,然后使用ar-system和ar-tracker,并修改一下xr-camera的i相关属性is-ar-camera和background=“ar”添加物体、颜色和灯光。

qq_46056472的博客 3312

微信小程序启用蓝牙设备特征值变化时的notify功能

注意:这里的serviceUUID、notifyCharacteristicUUID 我会在后面写入数据时做重点说明。isNotifyBLECharacteristic:false, //是否启用蓝牙设备服务特征 notify。二、启用蓝牙设备特征值变化时的notify功能。下一篇 将继续介绍 微信小程序蓝牙设备写入数据。

wsk198726的专栏 1171

Arduino ESP32S3开发环境搭建 ------ 在线下载安装包Failed解决方案

本文介绍了Arduino ESP32 S3开发环境搭建的离线解决方案。

张一西的博客 1018

终极AR框架比较指南:ARKit、ARCore、Vuforia、AR Foundation

ARKit是 Apple 创建的一组工具,用于帮助开发人员为 iOS 设备创建增强现实应用程序。哪个AR框架最好?让我们首先解决房间里的大象问题:使用 ARKit,你只能为 iPhone 和 iPad 开发 AR 应用程序。更具体地说,从 iPhone 6s 开始的 iPhone 和从 iPad Pro 开始的 iPad。你仍然可以在使用 Unity 的 AR Foundation 框架为其他平台进行开发时使用 ARKit。我们将在本文后面讨论这一点。AppStore 更加商业化。

weixin_54841920的博客 8058

YOLOv10 的损失函数解析

YOLOv10 在 YOLO 系列的演进中进一步优化了任务解耦与动态平衡策略,通过 ​多模态损失融合、自适应样本分配 和 ​轻量化设计,显著提升了检测精度与推理效率。

浩瀚之水的专栏 1378

3d模型

博客园博问闪存首页新随笔联系管理订阅 随笔- 157  文章- 3  评论- 38  ARKit 增强现实平台 尝试(Xcode9 iOS11 A9处理器) 一, Xcode 将加​​载其主页面并显示模板选择页面。模板简化了入门过程。然后选择增强现实应用程序图标,单击“下一步”按钮。   二, 运行程序会看到一个飞机 三,尝

770

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

快速构建一款 AR App 入门指南

近期,苹果公司推出了的 ARKit 增强现实平台,为众多开发者带了一个惊喜,同时为移动 AR 的解决方案及平台提供了很多帮助。作为一名 AR 开发者,我们不仅无法忽视苹果所做的事情,还需要不断学习了解。本文旨在探讨已发布的测试版 XCode 和 ARKit 具体应用。 注意事项 必须准备一台 Mac 电脑。 一个 Apple 开发者的帐户,以便下载必要的工具。大概每年花费 $99 来购买这些服务。...

csdnvr的博客 3938

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ARKit 开发系列(1)----Xcode开发ARKit应用

苹果在 WWDC 上发布了ARKit 全新的AR框架,使得开发者可以更快速的为iphone或ipad 构建增强现实应用,这也毫无疑问的使得ios成为全球最大的AR开发平台。所以了我们也开设了ARkit技术分享与开发教程这一全新系列帮助大家更好的了解ARKit。这一次给大家带来 通过Xcode快速的为iphone或ipad构建AR应用(翻译并整理于:https://next.reality.news

x32sky的专栏 5158

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ARShooter部署与测试:从Xcode构建到真机调试的完整流程指南 [特殊字符]

ARShooter是一款基于ARKit开发的增强现实射击游戏,专为iOS 11及以上系统设计。这款开源项目展示了如何利用Swift和ARKit框架创建沉浸式的AR游戏体验。无论您是iOS开发新手还是经验丰富的开发者,本指南将带您完成从环境搭建到真机测试的完整流程。 ## 📱 系统要求与准备工作 在开始部署ARShooter之前,您需要确保满足以下基本要求: - **硬件要求**:搭载A9或

gitblog_00328的博客 423

Unity AR开发SDK选型指南:AR Foundation、Vuforia与原生SDK深度对比

增强现实(AR)技术通过计算机视觉算法将虚拟内容叠加到现实世界,其核心在于环境理解与虚实融合。在Unity引擎中进行AR开发时,选择合适的SDK是实现稳定、高性能应用的关键。AR Foundation作为Unity官方的统一抽象层,提供了跨平台支持,简化了iOS(ARKit)与Android(ARCore)的开发流程,是大多数环境理解类应用的首选。而Vuforia凭借其卓越的图像识别与模型目标跟踪能力,在工业维修、教育等需要高精度识别特定图案或物体的场景中具有不可替代的价值。对于追求极致性能或需要利用最新硬

weixin_33976072的博客 402

ARKit+AI融合开发:构建设备端空间感知操作系统

增强现实(AR)与人工智能(AI)的结合,正从视觉叠加迈向空间理解与实时闭环控制。其核心在于将AR框架升级为具备空间建模、坐标对齐与环境感知能力的‘空间操作系统’,而AI则需深度适配终端硬件(如Apple Neural Engine),实现毫秒级推理与低功耗协同。关键技术涵盖三维真值标注、AR原生锚定机制、Core ML模型轻量化部署及多源传感器时空同步。该范式已广泛应用于工业质检、手术导航、远程协作等强实时、高精度场景,显著提升AR内容对物理世界的语义理解与稳定交互能力。

weixin_30780649的博客 371

ARkit开发

转载自:http://www.sohu.com/a/147869971_335284 苹果在 WWDC 上发布了ARKit 全新的AR框架,使得开发者可以更快速的为iphone或ipad 构建增强现实应用,这也毫无疑问的使得ios成为全球最大的AR开发平台。所以了我们也开设了ARkit技术分享与开发教程这一全新系列帮助大家更好的了解ARKit。这一次给大家带来 通过Xcode快速的为ip

qq_38695918的博客 851

ARKit-CoreLocation 的 fastlane 自动化测试指南:安装配置与 ios test 流水线实战

本文以 ARKit-CoreLocation 仓库中 [fastlane/README.md](https://link.gitcode.com/i/5b765c5a907e1c92adb142ffb919580f) 为线索,完整讲解如何为这个将 ARKit 高精度与 CoreLocation GPS 大范围定位结合的 iOS 库搭建 fastlane 自动化环境、读懂 [fastlane/Fas

gitblog_00752的博客 369

视频教程-iOS移动开发从入门到精通(Xcode11 & Swift5)-iOS

iOS移动开发从入门到精通(Xcode11 & Swift5) 10年以上I...

weixin_33869632的博客 1508

开发者所需要知道的 iOS 11 SDK 新特性

Keynote 上的 AR 的演示可以说是唯一的亮点了。iOS SDK 11 中 Apple 给开发者,特别是 AR 相关的开发者带来了一个很棒的礼物,那就是。AR 可以说并非什么新技术,像是 Pokémon Go 这样的游戏也验证了 AR 在游戏上的潜力。不过除了 IP 和新鲜感之外,个人认为 Pokémon Go 并没有资格代表 AR 技术的潜力。现场的演示像我们展示了一种可能,粗略看来,ARKit 利用单镜头和陀螺仪,在对平面的识别和虚拟物体的稳定上做得相当出色。

2401_85124821的博客 407

深度感知AR开发实战:基于AR Foundation与原生SDK的环境搭建与场景落地

深度感知是计算机视觉与增强现实(AR)领域的核心技术,它通过传感器或算法获取场景的三维几何信息,构建稠密的环境模型。其原理在于,无论是通过LiDAR、ToF等主动式传感器直接测量,还是利用单目深度估计算法进行预测,核心目标都是为每个像素赋予精确的距离值。这项技术的价值在于突破了传统AR基于平面检测的交互局限,实现了虚拟内容与物理世界在几何层面的毫米级精准融合与实时遮挡,从而极大提升了沉浸感与真实感。在应用场景上,深度感知为游戏娱乐、室内设计、工业维修及远程协作等下一代AR应用提供了关键的底层能力。本文聚焦于

weixin_33853794的博客 369

iosAR入门-3D立方体实现

一,预备工作 首先要在IOS上开发AR需要版本在ios11.0及以上,xcode9及以上,你才能进行开发 二,创建项目 打开Xcode,选择ARKit项目模板: 建好后会有一台默认的飞机模型出现在镜头里 三,实现3D立方体 替换的viewDidLoad中的代码如下: - (void)viewDidLoad { [super viewDidLoa

Fantasy_Jun的博客 2423
上一篇: c++: c++ cmakelist 详解
下一篇: c++: c++ auto 详解
DinnerHowe
博客等级 码龄10年 309粉丝 75原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值