小编Bla*_*orz的帖子

使用 RealityKit 跟踪相机位置

如何使用 RealityKit 跟踪相机的位置?有几个例子在使用 SceneKit,但我发现没有一个使用 RealityKit。我需要一个功能,例如:

func session(_ session: ARSession, didUpdate frame: ARFrame) {
    // Do something with the new transform
    let currentTransform = frame.camera.transform
    doSomething(with: currentTransform)
}
Run Code Online (Sandbox Code Playgroud)

augmented-reality ios swift arkit realitykit

5
推荐指数
1
解决办法
1620
查看次数

如何缩放 UIView 的内容以适合目标矩形,同时保持纵横比?

我正在尝试解决问题但没有成功,希望有人能提供帮助。

我寻找过类似的帖子,但找不到任何可以解决我的问题的内容。

我的场景如下:我有一个 ,上面可以放置UIView许多其他s 。UIView这些可以使用手势识别器移动、缩放和旋转(这里没有问题)。用户能够更改主视图(画布)的长宽比,我的问题是尝试缩放画布的内容以适应新的目标尺寸。

有许多具有类似主题的帖子,例如:

计算 CGRect 上的新大小和位置

如何从 UIView 创建特定尺寸的图像

但这些并没有解决比率的多次变化。

我的方法:

当我更改画布的纵横比时,我使用AVFoundation计算画布的子视图应适合的纵横比适合的矩形:

let sourceRectangleSize = canvas.frame.size

canvas.setAspect(aspect, screenSize: editorLayoutGuide.layoutFrame.size)
view.layoutIfNeeded()

let destinationRectangleSize = canvas.frame.size

let aspectFittedFrame = AVMakeRect(aspectRatio:sourceRectangleSize, insideRect: CGRect(origin: .zero, size: destinationRectangleSize))
ratioVisualizer.frame = aspectFittedFrame
Run Code Online (Sandbox Code Playgroud)

测试用例 红框只是为了可视化纵横比拟合矩形。正如您所看到的,虽然长宽比适合的矩形是正确的,但对象的缩放不起作用。当我将缩放和旋转应用于子视图(CanvasElement)时尤其如此。

我缩放对象的逻辑显然是错误的:

@objc
private func setRatio(_ control: UISegmentedControl) {
  guard let aspect = Aspect(rawValue: control.selectedSegmentIndex) else { return }
  
  let sourceRectangleSize = canvas.frame.size
 
  canvas.setAspect(aspect, screenSize: editorLayoutGuide.layoutFrame.size)
  view.layoutIfNeeded()
 
  let destinationRectangleSize = canvas.frame.size
  
  let aspectFittedFrame = AVMakeRect(aspectRatio:sourceRectangleSize, …
Run Code Online (Sandbox Code Playgroud)

scaling aspect-ratio ios swift

5
推荐指数
1
解决办法
1767
查看次数

如何在AR工具包中旋转或缩放3D模型scn文件

这个类也渲染了我的SCN文件.

import UIKit
import ARKit

class SimpleViewController: UIViewController {

    @IBOutlet var sceneView: ARSCNView!

    override func viewDidLoad() {
        super.viewDidLoad()        
        sceneView.scene = SCNScene(named: "duck.scn", inDirectory: "models.scnassets/furniture")!
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        sceneView.session.run(ARWorldTrackingConfiguration())
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        sceneView.session.pause()
    }
}
Run Code Online (Sandbox Code Playgroud)

但我知道如何旋转或缩放我的object(duck.scn)文件.我想用户可以与我的对象进行交互.

xcode ios scenekit swift arkit

2
推荐指数
1
解决办法
1691
查看次数

使用ARKit 2检测物体时显示边界框

我已经扫描并训练了多个现实世界的对象。我确实有,ARReferenceObject并且应用程序可以很好地检测到它们。

我面临的问题是,当一个对象没有独特的鲜明的功能时,它需要几秒钟的时间才能返回检测结果,据我所知。现在,我希望该应用在尝试检测该对象时在其顶部显示一个边界框和一个活动指示器。

我没有有关此的任何信息。同样,如果有任何方法可以获取开始检测的时间或检测到的对象的置信度百分比。

任何帮助表示赞赏。

ios swift arkit ios12

-1
推荐指数
1
解决办法
1885
查看次数