ios - 如何在两点之间显示(添加)平面文本节点?

标签 ios swift scenekit augmented-reality arkit

如何在测量ARKit/SceneKit中显示两点之间的距离值平面?与图片相同。

enter image description here

最佳答案

这是一个简单的原则,如何在两点之间放置带有 3D 文本的标签。

let p1 = SCNNode()                    // POINT 1
p1.geometry = SCNSphere(radius: 0.3)
p1.position = SCNVector3(-1, -2, -3)
p1.geometry?.firstMaterial?.diffuse.contents = NSColor.red
scene.rootNode.addChildNode(p1)
    
let p2 = SCNNode()                    // POINT 2
p2.geometry = SCNSphere(radius: 0.2)
p2.position = SCNVector3(4, 5, 6)
p2.geometry?.firstMaterial?.diffuse.contents = NSColor.red
scene.rootNode.addChildNode(p2) 
    
let x = (p1.position.x + p2.position.x) / 2
let y = (p1.position.y + p2.position.y) / 2
let z = (p1.position.z + p2.position.z) / 2
    
let label = SCNNode()
let text = SCNText(string: "label", extrusionDepth: 5)
label.geometry = text

// Shifting text's pivot to its center. 
// Default pivot's position is lower left corner.

label.simdPivot.columns.3.x = Float((text.boundingBox.min.x +     
                                     text.boundingBox.max.x) / 2)

label.simdPivot.columns.3.y = Float((text.boundingBox.min.y + 
                                     text.boundingBox.max.y) / 2)

label.scale = SCNVector3(0.02, 0.02, 0.02)
label.position = SCNVector3(x, y, z)
label.geometry?.firstMaterial?.diffuse.contents = NSColor.red
scene.rootNode.addChildNode(label)
    
let constraint = SCNBillboardConstraint()
label.constraints = [constraint]
    
let plane = SCNNode()
plane.geometry = SCNPlane(width: 2, height: 1)
plane.position = SCNVector3(x, y, z)
plane.geometry?.firstMaterial?.diffuse.contents = NSColor.white
scene.rootNode.addChildNode(plane)
    
plane.constraints = [constraint]

The same way you may add ARAnchor and attach any label to it.

enter image description here

关于ios - 如何在两点之间显示(添加)平面文本节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56899053/

相关文章:

ios - 标记为启动画面

ios - 在用户可以下载任何内容之前,应该强制免费订阅吗?

ios - += 和 append 将单个项目添加到数组的区别?

ios - 仅调用一个 UICollectionViewCell 的函数

swift - 将类别、碰撞和接触位掩码分配给代码中的引用节点

ios - 如何在 UICollectionView 加载时选择单元格

ios - 是否可以使dispatch_queue_t为空?

ios - 如何每 x 秒快速更新今天的小部件

augmented-reality - CMMotionData 到 SceneKit SCNNode 方向

swift - 如何设置 SceneKit 碰撞检测