如何将SCNPlane颜色更改为透明颜色

如何将SCNPlane颜色更改为透明颜色

本文介绍了如何将SCNPlane颜色更改为透明颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个ARKit项目,当在水平平面上点击时,该项目需要波纹动画效果.为此,我采用了UIView对象并将其作为SCNPlane对象材料的内容传递.我已将Ripple动画添加到UIView对象.一切正常.但是我无法将SCNPlane颜色更改为透明颜色.我可以为材料使用透明度属性.但是它也隐藏了Ripple动画.因此,我在这里需要的是SCNPlane对象的背景色应该是透明的,并且只有波纹动画可以显示给用户.有人可以帮我吗?

I am working on a ARKit project which needs Ripple animation effect when tapped on Horizontal Plane. For that I have took UIView object and pass that as contents for material of SCNPlane object. I have added Ripple animation to UIView object. Everything works fine. But I can't change the SCNPlane colour to clear color. I can use transparency property for the material. But it is hiding Ripple animation too. So, what I need here is, the background colour of SCNPlane object should be transparent and only Ripple animation should appear to user. Can someone help me on this.

这是我的代码.

    let location = tapGesture.location(in: self.sceneView)
    let results = self.sceneView.hitTest(location, types: .existingPlane)
    if !results.isEmpty{

        guard let result = results.first else{ return }
        let myUIView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 300, height: 300)))
        myUIView.backgroundColor = .red
        let plane = SCNPlane(width: 1.0, height: 1.0)
        plane.firstMaterial?.diffuse.contents = myUIView
        let planeViewNode = SCNNode(geometry: plane)
        planeViewNode.eulerAngles.x = Float(-Double.pi / 2)
        planeViewNode.position = SCNVector3(result.worldTransform.columns.3.x, result.worldTransform.columns.3.y, result.worldTransform.columns.3.z)

        self.sceneView.scene.rootNode.addChildNode(planeViewNode)

        //Ripple animation code goes here
    }

我从BBC的Civilizations AR应用中获取了屏幕截图.请通过单击此链接参考屏幕截图.这正是我真正需要的.

推荐答案

查看答案.将UiView isOpaque设置为false对我有用.

Check out this answer. Setting the UiView isOpaque to false worked for me.

这篇关于如何将SCNPlane颜色更改为透明颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-19 01:50