标签: realitykit

ARAnchor到底是什么?

我正在尝试了解和使用ARKit。但是有一件事我无法完全理解。

苹果关于ARAnchor说:

现实世界中的位置和方向,可用于在AR场景中放置对象。

但这还不够。所以我的问题是:

  • 到底是ARAnchor什么?
  • 锚点和特征点之间有什么区别?
  • ARAnchor的特征点只是一部分?
  • 以及ARKit如何确定其锚点?

augmented-reality ios swift arkit realitykit

4
推荐指数
1
解决办法
949
查看次数

如何放置一个始终看着相机的 RealityKit 实体?

对于我们有 SCNNodes SCNBillboardConstraint,那么有什么方法可以将此约束应用于实体(使用 RealityKit 而不是 SceneKit 时),以便实体在设备移动时始终面向相机?

augmented-reality scenekit swift arkit realitykit

4
推荐指数
1
解决办法
623
查看次数

如何禁用 ARCoachingOverlayView 的自动激活?

我正在添加一个ARCoachingOverlayView这样ARView

let coachingOverlayTemp = ARCoachingOverlayView()
coachingOverlayTemp.delegate = self
coachingOverlayTemp.session = self.session
coachingOverlayTemp.goal = .horizontalPlane
coachingOverlayTemp.activatesAutomatically = true
coachingOverlayTemp.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(coachingOverlayTemp)

coachingOverlay = coachingOverlayTemp // I store it to a variable on the class
Run Code Online (Sandbox Code Playgroud)

以后,如果我这样做

coachingOverlay.activatesAutomatically = false
Run Code Online (Sandbox Code Playgroud)

没有影响。coachingOverlay继续正常工作。

如何在需要时立即禁用它?

swift arkit realitykit

4
推荐指数
1
解决办法
991
查看次数

RealityKit – 材质的 Alpha 透明度

纹理是否可以具有 alpha 透明度?

我有包含 8 位 RGBA 的 png 文件,但由于某种原因,应该透明的部分只是黑色。

我这样分配材料:

private func setupLightMeshes(_ scene: Entity) {
    let lightEntity = scene.findEntity(named: "LightWindow_Plane")!
    var lightMaterial = UnlitMaterial()
    
    lightMaterial.baseColor = try! MaterialColorParameter.texture(
    TextureResource.load(named: "light.png")) // this is 8bpc RGBA
    var modelComponent = lightEntity.components[ModelComponent] as! ModelComponent
    modelComponent = ModelComponent(mesh: modelComponent.mesh, materials: [lightMaterial])
    lightEntity.components.set(modelComponent)
}
Run Code Online (Sandbox Code Playgroud)

augmented-reality swift arkit realitykit

4
推荐指数
1
解决办法
1535
查看次数

如何在保持 LiDAR 调试网格的同时禁用相机馈送?

我在启用 LiDAR 的设备上运行 iOS14 ARSession,并让它输出通过相机源动态创建的网格覆盖层。

是否可以禁用 ARView 或 ARSession 的相机源,同时仍然看到调试网格覆盖?

这是我显示网格覆盖的方式:

arView.debugOptions.insert(.showSceneUnderstanding)
Run Code Online (Sandbox Code Playgroud)

我想看到的是:黑屏,带有代表网格顶点和面的彩色线条。

augmented-reality swift arkit realitykit

4
推荐指数
1
解决办法
483
查看次数

在 RealityKit 中播放 USDZ 动画

我花了 2 天的时间试图了解如何在我的 RealityKit 项目中正确播放动画。

我遵循了其他 stackoverflow 主题的许多提示,但没有成功。我知道使用 RealityKit v2 我们只能播放 usdz 文件中的第一个动画,好吧。我正在尝试直接在 Reality Composer 中播放 Apple 提供的“toy_robot_vintage.usdz”的第一个动画。

这是我的完整代码:

func loadModel(named: String, result: ARRaycastResult) {
        
        var usdzToLoad: String = ""
        
        switch named {
        case "ROBOT":
            usdzToLoad = "toy_robot_vintage.usdz"
        default:
            break;
        }
        
        DispatchQueue.main.async {
            let modelToLoad = try! ModelEntity.loadModel(named: usdzToLoad)
            
            switch named {
            case "ROBOT":
                modelToLoad.name = "ROBOT"
            default:
                break;
            }
            
            let anchor = AnchorEntity(plane: .horizontal, classification: .any, minimumBounds: [0.1, 0.1])
                anchor.position.y = 0.01
                anchor.addChild(modelToLoad)
            
            // Create a "Physics" model of …
Run Code Online (Sandbox Code Playgroud)

animation augmented-reality swift realitykit

4
推荐指数
1
解决办法
2457
查看次数

ARKit – 环境遮挡

在 Unity 中,我们可以使用环境深度来实现遮挡。它在幕后使用 ARKit。我如何在 iOS ARkit 中实现相同的行为。

我知道我们可以用深度配置帧语义,但我怀疑它真的与统一环境深度遮挡相同吗?

// Build the set of required frame semantics.
let semantics: ARConfiguration.FrameSemantics = [.sceneDepth]
configuration.frameSemantics = semantics

session.run(configuration)
Run Code Online (Sandbox Code Playgroud)

unity-game-engine swift arkit swiftui realitykit

4
推荐指数
1
解决办法
1932
查看次数

在 RealityKit 中将不同的图像纹理材质应用于盒子的每一侧

我正在 RealityKit 中创建一个盒子,并希望对盒子的每一侧应用不同的纹理。我使用以下代码,但它总是在每一侧应用名为“lola”的第一个纹理作为材质。我错过了什么吗?

cancellable = TextureResource.loadAsync(named: "lola")
            .append(TextureResource.loadAsync(named: "cover"))
            .append(TextureResource.loadAsync(named: "purple_flower"))
            .append(TextureResource.loadAsync(named: "cover"))
            .append(TextureResource.loadAsync(named: "purple_flower"))
            .append(TextureResource.loadAsync(named: "cover"))
            
            .collect()
            .sink { [weak self] completion in
            if case let .failure(error) = completion {
                fatalError("Unable to load texture \(error)")
            }
            
            self?.cancellable?.cancel()
            
        } receiveValue: { textures in
            
            var materials: [UnlitMaterial] = []
            
            textures.forEach { texture in
                print(texture)
                var material = UnlitMaterial()
                material.color = .init(tint: .white, texture: .init(texture))
                materials.append(material)
            }
            
            box.model?.materials = materials
            anchor.addChild(box)
            arView.scene.addAnchor(anchor)
        }
Run Code Online (Sandbox Code Playgroud)

swift realitykit

4
推荐指数
1
解决办法
843
查看次数

在visionOS中如何将模型锚定在用户的头部上方?

举例来说,我想在用户头顶上锚定一朵云。

我知道它AnchorEntity存在,并且您可以使用 来获取对用户头部的引用AnchorEntity(.head)。但我该如何实际使用它呢?使用这段代码我什么也看不到。

import SwiftUI
import RealityKit

struct CloudSpace: View {
    
    let headAnchor = AnchorEntity(.head)
    
    var body: some View {
        RealityView { content in
            async let cloud = ModelEntity(named: "Cloud")
            do {
                content.add(headAnchor)
                let cloud = try await cloud
                headAnchor.addChild(cloud)
            } catch {
                print(error)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

swift swiftui realitykit visionos

4
推荐指数
1
解决办法
1461
查看次数

VisionOS 中的 Model3D 和 RealityView 有什么区别?

我认为 RealityView 应该能够做更多奇特的事情,但我仍然想弄清楚它们之间的确切区别。目前,它们彼此太相似了,例如它们都需要一个实体名称来初始化。我想知道什么时候 Model3D 就足够了,什么时候必须使用 RealityView?

swiftui realitykit visionos

4
推荐指数
1
解决办法
1967
查看次数