【问题标题】:Realitykit - Custom MaterialRealitykit - 自定义材质
【发布时间】:2020-09-20 04:53:32
【问题描述】:

使用 Realitykit,尝试将月球实体的材质更改为自定义 .jpg,然后点击屏幕以根据 hitTest 生成该对象。当我在调试中点击并收到以下错误时,什么都没有显示:[Collision] Bad paramater (SphereRadius),value = 0.000000,passed to shape creation。

import UIKit
import RealityKit

class ViewController: UIViewController {

    @IBOutlet var arView: ARView!

    override func viewDidLoad() {
        super.viewDidLoad()

    }

        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
            if let touchLocation = touches.first?.location(in: arView){
                let hitTest = arView.hitTest(touchLocation)
                if let hitResult = hitTest.first {
                    addObject(at: hitResult)
                }
            }
        }

        func addObject(at hitResult: CollisionCastHit) {
            let moonAnchor = try! Galaxy.loadWorld()
            let moon = moonAnchor.moon! as! ModelEntity
            var material = SimpleMaterial()
            material.baseColor = try! MaterialColorParameter.texture(TextureResource.load(named: "8k_moon.jpg"))
            moon.model?.materials = [material]
            moon.position = SIMD3(x: hitResult.position.x, y: hitResult.position.y, z: hitResult.position.z)
            arView.scene.addAnchor(moonAnchor)
        }

}

【问题讨论】:

  • 你能提供更多你的代码吗?根据错误,我认为问题出在模型而不是纹理上。
  • @iicaptain 嘿,感谢您的回复。刚刚更新了代码,其中包含 ViewController 中的所有内容。没有触及任何其他 Realitykit 文件。我尝试加载的月球实体来自 Reality Composer 的 RCProject 文件。
  • 我遇到了完全相同的问题。它似乎与模型无关,因为我尝试了一些来自不同来源的不同模型。

标签: arkit swift5 realitykit


【解决方案1】:

我在尝试对没有 CollisionComponent 的实体进行 hitTest 时遇到了该错误。命中测试需要在目标实体上使用 CollisionComponent:

“该方法忽略缺少 CollisionComponent 的实体。” https://developer.apple.com/documentation/realitykit/arview/3243230-hittest

如果这是问题所在,并且由于您的模型是从 Reality Composer 加载的,解决方案是选中 RC 的“物理”部分中的“参与”框。

【讨论】:

  • 这是正确的。该错误似乎是内部 RealityKit 错误。我可以在任何我点击的地方得到它。大声笑,那里有一个拼写错误...参数:))
  • 如果屏幕上有任何元素或者即使没有元素,每次调用 hitTest/entity/entities 时都会出现此错误!
  • 即使屏幕上没有实体,我也会遇到同样的错误:-/
  • 我在我的 iPhone XS 上收到此错误,但在我的 iPhone 6s Plus 上没有
【解决方案2】:

在我的例子中,我忘记在 hitResult 中初始化我的锚点:

let anchor = AnchorEntity(world: transform)

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2019-06-11
    • 2017-06-16
    • 1970-01-01
    • 2018-01-02
    • 2018-02-07
    相关资源
    最近更新 更多