现实工具包-自定义材质

8

使用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
@iicaptain 嘿,谢谢你的回复。我刚刚更新了代码,将所有内容都放在了 ViewController 中。我没有触碰任何其他 Realitykit 文件。我正在尝试加载的月球实体来自 Reality Composer 的 RCProject 文件。 - Lawlitrix
2
我遇到了完全相同的问题。似乎与模型无关,因为我尝试了来自不同来源的几个不同的模型。 - vfxdev
2个回答

1
当我尝试对没有CollisionComponent的实体进行hitTest时,遇到了这个错误。 hit测试需要目标实体上的CollisionComponent:
“该方法会忽略缺少CollisionComponent的实体。” https://developer.apple.com/documentation/realitykit/arview/3243230-hittest 如果这是问题所在,由于您的模型是从Reality Composer加载的,解决方案是在RC的物理部分中勾选“参与”框。

这是正确的。而且错误似乎是一个内部的RealityKit错误。我在任何地方点击都会出现它。哈哈,那里有个拼写错误...参数:)) - Danylo Kurylo
每次调用hitTest/entity/entities时,无论屏幕上是否有元素,甚至没有元素,我都会收到这个错误! - YanivH
即使屏幕上没有实体,我仍然会收到相同的错误 :-/ - Chris
我在我的 iPhone XS 上遇到了这个错误,但在我的 iPhone 6s Plus 上没有出现。 - Chris

0
在我的情况下,我忘记在hitResult中初始化我的锚点:
let anchor = AnchorEntity(world: transform)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接