ARKIT 无法在渲染方法中缩放或旋转
ARKIT cannot scale or rotate in render method
目前正在玩 arkit 当我尝试在 arkit
个节点
内缩放对象时遇到了一个大问题
extension RecordPlaceViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
if anchor.name == "test" {
let sceneModel = SCNScene(named: "assetsmodels.scnassets/phone2.scn")
let nodeModel = sceneModel!.rootNode.childNode(withName: "Plane", recursively: true)
nodeModel?.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "uv2")
nodeModel?.scale = SCNVector3(0.1,0.1,0.1)
nodeModel?.eulerAngles.x = -90
return nodeModel
}
return nil
}
}
为什么这两个功能在这里不起作用?
nodeModel?.scale = SCNVector3(0.1,0.1,0.1)
nodeModel?.eulerAngles.x = -90
如果我添加带有 scnkit
的那些,它只会起作用,但如果我使用 arkit
节点...比例和位置什么都不做。
解决方案是实施
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)
而不是
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode?
在第一种方法中,您可以做任何您需要的事情来转换您的节点,并且此方法已正确应用。
目前正在玩 arkit 当我尝试在 arkit
个节点
extension RecordPlaceViewController: ARSCNViewDelegate {
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
if anchor.name == "test" {
let sceneModel = SCNScene(named: "assetsmodels.scnassets/phone2.scn")
let nodeModel = sceneModel!.rootNode.childNode(withName: "Plane", recursively: true)
nodeModel?.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "uv2")
nodeModel?.scale = SCNVector3(0.1,0.1,0.1)
nodeModel?.eulerAngles.x = -90
return nodeModel
}
return nil
}
}
为什么这两个功能在这里不起作用?
nodeModel?.scale = SCNVector3(0.1,0.1,0.1)
nodeModel?.eulerAngles.x = -90
如果我添加带有 scnkit
的那些,它只会起作用,但如果我使用 arkit
节点...比例和位置什么都不做。
解决方案是实施
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)
而不是
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode?
在第一种方法中,您可以做任何您需要的事情来转换您的节点,并且此方法已正确应用。