【问题标题】:How do I render a jpg image using ARKit ARSKViewDelegate?如何使用 ARKit ARSKViewDelegate 渲染 jpg 图像?
【发布时间】:2019-02-11 18:30:45
【问题描述】:

我想将 jpg 图像渲染为漂浮在空间中的 2d 矩形。使用 SpriteKit 示例 - 如何从 ARSKViewDelegate 返回 jpg 图像?

演示返回SKLabelNode - 是否有适合我从网络获取的 jpg 图像的 Node 类,可能是 UIImage

func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? {
    // Create and configure a node for the anchor added to the view's session.
    let labelNode = SKLabelNode(text: "????")
    labelNode.horizontalAlignmentMode = .center
    labelNode.verticalAlignmentMode = .center
    return labelNode;
}

【问题讨论】:

  • SpriteKit(您提到的 API 中的“SK”)全部是将图像放在屏幕上。你看过它的docs 吗?
  • 是的,我正在查看文档,但没有从 UI 图像中看到任何关于 SKNode 的信息。在 stackoverflow 周围寻找我使用 SKTexture 和 SKPriteNode 找到了答案
  • 我很好奇SKSpriteNode 在该文档页面中如何不够突出...“绘制矩形纹理、图像 或颜色的节点。”
  • @rickseter 好吧,我根本不熟悉 3d、图形和 sprite 工具包——这意味着当我看到“纹理”这个词时,我不确定它是否会比简单的图像更重(因为之前我将其与 3d 模型相关联)。显然这是一个简单的问题 - 但我认为这对刚开始使用 sprite kit 的人很有用。保持积极的回应会有所帮助。

标签: ios swift sprite-kit arkit


【解决方案1】:

您可以使用SCNPlane 并指定UIImage 作为该平面的内容。

let imagePlane = SCNPlane(width: sceneView.bounds.width/6000, height: sceneView.bounds.height/6000)
imagePlane.firstMaterial?.diffuse.contents = //<-- UIImage here
imagePlane.firstMaterial?.lightingModel = .constant
let planeNode = SCNNode(geometry: imagePlane)

更新:现在我注意到您正在使用 SpriteKit。我分享的代码使用的是 SceneKit。

【讨论】:

  • 感谢您的回答 - 在这种情况下使用 spritekit 与 scenekit 相比是否更有效?或者,这真的不重要吗?
  • 嗯,我认为这并不重要,但我没有知识来确认 100%。
  • 我认为它最终都是 Open GL - ES - SpriteKit 或 SceneKit。这就是你如何在 Sprite Kit 中制作法线贴图。 SpriteKit 节点总是面对相机并且相机视角减少了?
【解决方案2】:

看起来我可以使用 SKTexture 中的 SKSpriteNode。唯一的问题是我在日志中看到有关 ar 性能下降的警告。 [Technique] World tracking performance is being affected by resource constraints [1]

let url = URL(string: imageURL)
let data = try? Data(contentsOf: url!) //make sure your image in this url does exist, otherwise unwrap in a if let check
let theImage = UIImage(data: data!)
let Texture = SKTexture(image: theImage!)
return SKSpriteNode(texture: Texture)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2018-03-21
    • 1970-01-01
    • 2018-06-03
    • 2020-10-12
    • 2012-09-19
    • 2014-01-25
    相关资源
    最近更新 更多