ARKit增加一个盒子

news/2024/7/24 13:14:50 标签: swiftui, arkit

ARKit增加一个盒子

体验一下ARKit的能力,在室内随便加点小球,然后在AR中显示出来。

效果如下图:

请添加图片描述

以下为操作流程。

新建项目

新建一个空项目,项目一定要选择 Augmented Reality App,能够省很多的事。

请添加图片描述

之后的 content technology 选择 realitykit。

请添加图片描述

其他代码如下

import SwiftUI
import RealityKit
import ARKit

struct ContentView : View {
    @State var modelNames: String = ""
    @State var count: Int = 0
    
    var body: some View {
        ZStack {
            ARViewContainer(modelNames: $modelNames)
            
            HStack {
                Button {
                    count = count + 1
                    modelNames = "\(count)"
                    print("call click")
                } label: {
                    Text("增加 \(count)")
                        .frame(width: 120, height: 40)
                        .background(Color.black.opacity(0.4))
                        .cornerRadius(10)
                }
            }
        }
    }
}

struct ARViewContainer: UIViewRepresentable {
    @Binding var modelNames: String
    
    func makeUIView(context: Context) -> ARView {
        let arView = ARView(frame: .zero)
        
        let configuration = ARWorldTrackingConfiguration()
        configuration.planeDetection = [.horizontal, .vertical]
        arView.session.run(configuration)

        return arView
    }
    
    func updateUIView(_ uiView: ARView, context: Context) {
        print("update view")
        let mesh = MeshResource.generateBox(size: 0.1, cornerRadius: 0.005)
        let material = SimpleMaterial(color: .gray, roughness: 0.15, isMetallic: true)
        let model = ModelEntity(mesh: mesh, materials: [material])

        let anchor = AnchorEntity(.plane(.horizontal, classification: .any, minimumBounds: SIMD2<Float>(0.2, 0.2)))
        anchor.children.append(model)

        uiView.scene.anchors.append(anchor)
    }
}

#Preview {
    ContentView()
}


http://www.niftyadmin.cn/n/5210169.html

相关文章

想问问各位大佬,网络安全这个专业普通人学习会有前景吗?

网络安全是一个非常广泛的领域&#xff0c;涉及到许多不同的岗位。这些岗位包括安全服务、安全运维、渗透测试、web安全、安全开发和安全售前等。每个岗位都有自己的要求和特点&#xff0c;您可以根据自己的兴趣和能力来选择最适合您的岗位。 渗透测试/Web安全工程师主要负责模…

17 redis集群方案

1、RedisCluster分布式集群解决方案 为了解决单机内存&#xff0c;并发等瓶颈&#xff0c;可使用此方案解决问题. Redis-cluster是一种服务器Sharding技术&#xff0c;Redis3.0以后版本正式提供支持。 这里的集群是指多主多从&#xff0c;不是一主多从。 2、redis集群的目标…

ResizeObserver loop limit exceeded报错解决方案

前言&#xff1a; 控制台没有报错&#xff0c;但是开发Vue项目过程中一直报ResizeObserver loop limit exceeded 错&#xff0c;找到以下解决方式。在main.js文件中重写 ResizeObserver 方法。 main.js文件 &#xff08;完整版&#xff09; import { createApp } from "v…

《opencv实用探索·二》根据RGB的像素排列来理解图像深度、像素深度和位深度

通常对于RGB图像主要分为RGB16&#xff0c;RGB24和RGB32。RGB16从高位到低位的排列为R->G->B&#xff0c;RGB24和RGB32从高位到低位的排列为B->G->R。 RGB16: 16 位为一个存储单元&#xff08;一个像素&#xff09;&#xff0c;来存储一个RGB像素;因为人眼对绿色比…

为什么在Pycharm中使用Pandas画图,却不显示?

问题描述&#xff1a; 在 Pycharm 中使用 Pandas 的 plot() 方法画图&#xff0c;却不显示图像&#xff0c;源代码如下&#xff1a; import pandas as pd import numpy as np# 从文件中读取数据 starbucks pd.read_csv(./file_csv/directory.csv)# 按照国家分组&#xff0c;…

Python爬虫图片及相关知识讲解

1. 导入所需依赖 pip install requests # 导入request库&#xff0c;用于发起网络请求re # python自带&#xff0c;不需要导入&#xff0c;正则表达式库&#xff0c;用于匹配规则 os # 系统库&#xff0c;用于操作文件夹、文件2. requests库介绍 以下是 requests 库的…

[架构之路-249]:目标系统 - 设计方法 - 软件工程 - 需求工程- 需求开发:如何用图形表达需求,结构化方法的需求分析

目录 一、概述 二、数据模型&#xff1a;E-R图/实体关系图&#xff08;数据单元之间的结构关系&#xff09; 三、功能模型&#xff1a;数据流图DFD&#xff08;逻辑运算&#xff0c;包括输入和输出&#xff0c;实体之间的关系&#xff09;&#xff1a;输入》处理 》 输出 四…

浅谈国内智能制造现状和未来发展趋势

进人二十一世纪&#xff0c;互联网、新能源、大数据等技术的迅猛发展&#xff0c;从而使得社会发生巨大的改变&#xff0c;人类生产工业发生变革。为应对全球挑战&#xff0c;我国根据发展的实际情况&#xff0c;提出《中国制造2025》的国家战略规划。毋庸置疑的是&#xff0c;…