- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ARKit 2 添加了一个新配置:ARImageTrackingConfiguration
,根据 SDK可以有更好的性能和一些新的用例。
在 Xcode 10b2 上对其进行试验(请参阅 https://forums.developer.apple.com/thread/103894 如何修复 Assets 加载)我的代码现在正确地调用了跟踪图像的委托(delegate),此后添加了一个节点,但我找不到坐标系所在的任何文档位于,因此有人知道如何将节点放入场景中以覆盖检测到的图像:
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
DispatchQueue.main.async {
if let imageAnchor = anchor as? ARImageAnchor {
let imageNode = SCNNode.createImage(size: imageAnchor.referenceImage.physicalSize)
imageNode.transform = // ... ???
node.addChildNode(imageNode)
}
}
}
ps:与 ARWorldTrackingConfiguration
相比,原点似乎不断移动(很可能将相机置于 0,0,0)。
pps: SCNNode.createImage
是一个没有任何坐标计算的辅助函数。
最佳答案
假设我已正确阅读您的问题,您可以执行以下操作:
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let nodeToReturn = SCNNode()
//1. Check We Have Detected Our Image
if let validImageAnchor = anchor as? ARImageAnchor {
//2. Log The Information About The Anchor & Our Reference Image
print("""
ARImageAnchor Transform = \(validImageAnchor.transform)
Name Of Detected Image = \(validImageAnchor.referenceImage.name)
Width Of Detected Image = \(validImageAnchor.referenceImage.physicalSize.width)
Height Of Detected Image = \(validImageAnchor.referenceImage.physicalSize.height)
""")
//3. Create An SCNPlane To Cover The Detected Image
let planeNode = SCNNode()
let planeGeometry = SCNPlane(width: validImageAnchor.referenceImage.physicalSize.width,
height: validImageAnchor.referenceImage.physicalSize.height)
planeGeometry.firstMaterial?.diffuse.contents = UIColor.white
planeNode.geometry = planeGeometry
//a. Set The Opacity To Less Than 1 So We Can See The RealWorld Image
planeNode.opacity = 0.5
//b. Rotate The PlaneNode So It Matches The Rotation Of The Anchor
planeNode.eulerAngles.x = -.pi / 2
//4. Add It To The Node
nodeToReturn.addChildNode(planeNode)
//5. Add Something Such As An SCNScene To The Plane
if let modelScene = SCNScene(named: "art.scnassets/model.scn"), let modelNode = modelScene.rootNode.childNodes.first{
//a. Set The Model At The Center Of The Plane & Move It Forward A Tad
modelNode.position = SCNVector3Zero
modeNode.position.z = 0.15
//b. Add It To The PlaneNode
planeNode.addChildNode(modelNode)
}
}
return nodeToReturn
}
希望这会为您指明正确的方向...
关于ios - 在 ARImageTrackingConfiguration 中转换坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51065239/
ARKit 2 添加了一个新配置:ARImageTrackingConfiguration,根据 SDK可以有更好的性能和一些新的用例。 在 Xcode 10b2 上对其进行试验(请参阅 https:
我想将两个 3D 模型链接到两个不同的跟踪器。我将跟踪器捕捉到引用照片,但我不明白如何在 ARImageTrackingConfiguration 中同时跟踪两个对象 guard let tracke
以下属性为我返回false,但我无法理解为什么。 ARImageTrackingConfiguration.isSupported ARWorldTrackingConfiguration.isSup
我有一个应用程序可以检测一些图像并做一些效果(主要是在图像中播放视频)只要在检测到图像时触发 func 渲染器,是否有在未检测到图像时触发的函数? 当没有检测到图像时,我想停止播放视频。谢谢! 最佳答
在新的 arkit 2.0 文档中,它解释:并且可以准确跟踪图像何时从 View 中消失(或之后重新出现) 如何通知我图像不可见?我找不到有关它的文档。 谢天谢地,凯文 最佳答案 ARImageAnc
我是一名优秀的程序员,十分优秀!