繁体   English   中英

如何在ARkit场景iOS中添加具有文本的2dView

[英]How can i add a 2dView having text in ARkit scene iOS

如何在ARkit场景iOS中添加具有文本的2dView。如何在节点顶部添加该视图,在旋转节点时不会旋转。 在此输入图像描述

您可以添加SCNPlane并使用SCNLookAtConstraint ,以便飞机始终查看相机。

您可以创建自定义材质并将其材质属性设置为:

  • 颜色(UIColor或CGColor),指定材质表面的恒定颜色数字(

  • 图像(UIImage或CGImage),指定要在材质表面上映射的纹理

  • 核心动画层(CALayer)
  • 纹理(SKTexture,MDLTexture,MTLTexture或GLKTextureInfo)
  • SpriteKit场景(SKScene)

您还可以使用CoreAnimation或SpriteKit显示动画内容

SceneKit无法使用已在其他位置显示的图层(例如,UIView对象的背衬层)


以下是使用SpriteKit的示例:

  1. 创建您的SpriteKit场景:

例如:

let skScene = SKScene(size: CGSize(width: 200, height: 200))
skScene.backgroundColor = UIColor.clear

let rectangle = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 200, height: 200), cornerRadius: 10)
rectangle.fillColor = #colorLiteral(red: 0.807843148708344, green: 0.0274509806185961, blue: 0.333333343267441, alpha: 1.0)
rectangle.strokeColor = #colorLiteral(red: 0.439215689897537, green: 0.0117647061124444, blue: 0.192156866192818, alpha: 1.0)
rectangle.lineWidth = 5
rectangle.alpha = 0.4
let labelNode = SKLabelNode(text: "Hello World")
labelNode.fontSize = 20
labelNode.fontName = "San Fransisco"
labelNode.position = CGPoint(x:100,y:100)
skScene.addChild(rectangle)
skScene.addChild(labelNode)
  1. 创建平面并将场景设置为材质属性

例如

let plane = SCNPlane(width: 20, height: 20)
let material = SCNMaterial()
material.isDoubleSided = true
material.diffuse.contents = skScene
plane.materials = [material]
let node = SCNNode(geometry: plane)
scene.rootNode.addChildNode(node)
  1. 为场景添加动画效果

例如

labelNode.run(SKAction.repeatForever(SKAction.rotate(byAngle: .pi, duration: 2)))

在此输入图像描述

可能值得一提的是,您还可以使用其他一些内容...这里可以找到一个列表... https://developer.apple.com/documentation/scenekit/scnmaterialproperty/1395372-contents

我尝试了上面的答案中的代码并且它工作正常,但是因为我有许多需要它的节点,所以我的FPS速度变慢了。 SKScene很可能很重。

我能够使用带有SKLabelNode的SKView,但问题是文本不会在视觉上更新,我的猜测是我每次都必须调用纹理(来自:),我想这将是一样慢的SKView纹理(来自:) https://developer.apple.com/documentation/spritekit/skview/1520114-texture

我看到了用CALayer做另一种方法,但是想法id在更改文本方面有同样的问题,所以我只使用了SCNText。

另外值得一提的是SCNBillboardConstraint作为LookatConstraint的替代品https://developer.apple.com/documentation/scenekit/scnbillboardconstraint

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM