使用SCNMaterial变换(在sufrace上设置SCNNode)具有SCNMaterial的SCNNode而不更改SCNMaterial的方向包含图像

时间:2018-11-05 13:28:05

标签: ios iphone swift arkit

任何人都知道如何在不更改SCNMaterial包含图像的方向的情况下将SCNMaterial转换为表面吗?

我要创建包含图像的ARKit SCNNode,然后将其转换为表面,因为我想在所选位置的表面区域上显示图像

我正在使用以下代码来转换我的SCNNode

let planeGeometry = SCNPlane(width: CGFloat(Width), height: CGFloat(Height))
let material = SCNMaterial()
        material.diffuse.contents = UIImage.init(named: “imgName”)
        let matirials:[SCNMaterial] = [material]
        planeGeometry.materials = matirials
let rectNode = SCNNode(geometry: planeGeometry)
var transform = SCNMatrix4MakeRotation(-Float.pi / 2.0, 1.0, 0.0, 0.0)
        transform = SCNMatrix4Rotate(transform, Float(orientation), 0, 1, 0)

        rectNode.transform  = transform

self.addChildNode(rectNode)
self.position = position

上述代码中的一个问题: 节点转换成功,但是它会根据方向随机翻转我的SCNMaterial图片。

那么有人能帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

可以通过Data payload: { "to": "XXXXXXXXX", // deviceToken "notification": { "title":"Notification Title", "body":"testing testing" }, "data": { "user_id": 123, "foo": "bar" } } 中的contentsTransform来调整材质变换

SCNMaterialProperty

或者,如果您只需要调整镜像图像,则可以使用

material.diffuse.contentsTransform = SCNMatrix4.SCNMatrix4Identitymaterial.diffuse.wrapS = .mirror