【问题标题】:How to change SCNPlane color as clear color如何将 SCNPlane 颜色更改为清晰颜色
【发布时间】:2018-10-26 08:11:39
【问题描述】:

我正在做一个 ARKit 项目,当点击水平面时需要波纹动画效果。为此,我采用了 UIView 对象并将其作为 SCNPlane 对象材料的内容传递。我已将波纹动画添加到 UIView 对象。一切正常。但我无法将 SCNPlane 颜色更改为清除颜色。我可以使用材质的透明度属性。但它也隐藏了波纹动画。所以,我需要的是,SCNPlane 对象的背景颜色应该是透明的,并且只有波纹动画应该出现在用户面前。有人可以帮我解决这个问题吗?

这是我的代码。

    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 
    }

I took screenshot from Civilisations AR app from BBC. Please refer the screenshot by clicking this link. This is how exactly I need.

【问题讨论】:

  • 你找到答案了吗?我现在遇到了这个问题
  • 这个答案导致另一个答案有效,你为什么不接受它?当其他开发人员需要帮助时,这对社区更好,他们会看到并知道它有效。

标签: ios swift scenekit arkit scnnode


【解决方案1】:

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

【讨论】:

  • 我被困在这个问题上好几个星期了。您对此答案的回答有效!另一个答案向您展示了该做什么,但我试图保持我的代码紧凑,并且在一条正确的行中完成所有操作:material.diffuse.contents = MyViewController.view .isOpaque = false。另一个答案的关键是将 viewController.isOpaque = false BEFORE 设置为材料内容:1. MyViewController.isOpaque = false then 2 . material.diffuse.contents = MyViewController.view.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
  • 2012-10-07
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多