gpt4 book ai didi

swift - 向 SCNSphere 添加文本

转载 作者:行者123 更新时间:2023-11-28 05:40:31 24 4
gpt4 key购买 nike

下午好

首先,请原谅我(可能)非常基本的问题,我对 AR 世界还很陌生......

我正在尝试在用户点击屏幕时显示 3D 对象。当用户点击时,我已经成功地将一个类似气泡的对象转换到一个设定位置:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let bubble = SCNSphere(radius: 0.1)
bubble.firstMaterial?.transparency = 0.5
bubble.firstMaterial?.writesToDepthBuffer = false
bubble.firstMaterial?.blendMode = .screen
bubble.firstMaterial?.reflective.contents = #imageLiteral(resourceName: "bubble")

let node = SCNNode(geometry: bubble)
node.position = SCNVector3Make(0, 0.1, 0)

let parentNode = SCNNode()
parentNode.addChildNode(node)

if let camera = sceneView.pointOfView {
parentNode.position = camera.position

// Animation like bubble
let wait = SCNAction.wait(duration: 0.2)

let speedsArray: [TimeInterval] = [0.5, 1.0, 1.5]
let speed: TimeInterval = speedsArray[Int(arc4random_uniform(UInt32(speedsArray.count)))]

let toPositionCamera = SCNVector3Make(0, 0, -2)
let toPosition = camera.convertPosition(toPositionCamera, to: nil)

let move = SCNAction.move(to: toPosition, duration: speed)
move.timingMode = .easeOut
let group = SCNAction.sequence([wait, move])
parentNode.runAction(group) {

}
}
sceneView.scene.rootNode.addChildNode(parentNode)
}

我现在想做的是在 SCNSphere 上显示一个数字。理想情况下,它看起来就像印在球体的表面上。

我尝试了下面的代码,但发现虽然文本被渲染了,但它在球体后面几乎看不见,而且比球体小很多(我附上了一张照片来尝试展示这个)。我尝试过使用不同的值,但我觉得我遗漏了一些关于定位的重要信息。

let string = "25"
let text = SCNText(string: string, extrusionDepth: 0.1)
text.font = UIFont.systemFont(ofSize: 5)
text.firstMaterial?.diffuse.contents = UIColor.black
text.flatness = 0.005
let textNode = SCNNode(geometry: text)
let fontScale: Float = 0.01
textNode.scale = SCNVector3(fontScale, fontScale, fontScale)

parentNode.addChildNode(textNode)

如有任何建议,我们将不胜感激。

提前致谢!

enter image description here

最佳答案

不确定它是否能满足您的需求。这只是我将数字作为纹理放在球体上的一种方式。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let bubble = SCNSphere(radius: 0.1)

let view = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
view.backgroundColor = .black
let label = UILabel(frame: CGRect(x: 0, y: 35, width: 200, height: 30))
label.font = UIFont.systemFont(ofSize: 30)
view.addSubview(label)
label.textAlignment = .center
label.text = "25"
label.textColor = .white

bubble.firstMaterial?.diffuse.contents = view
.
.
.
}

关于swift - 向 SCNSphere 添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56914979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com