ios - SceneKit 剔除平面

标签 ios swift graphics scenekit

我在 SCNView 中有一个 SCNScene 渲染。我有一些 *.dae 模型在场景中渲染/移动。

我有一个透明的立方体,当我的一个模型在它后面时,我希望模型不被渲染,因为此刻,由于立方体是透明的,你可以透过立方体看到它。

是否有任何属性/设置/着色器可以应用到透明立方体,以便不渲染它后面的任何东西?

例子:

我的眼睛是绿点,立方体是蓝色方 block ,我的模型是红色圆圈,然而被立方体隐藏的圆圈部分是紫色的......这实际上是不可见的。蓝色方 block 也将不可见。

Cull

这个开发人员有一个遮挡着色器可以满足我的需要,但它是 Unity:https://youtu.be/MK3D91kCKzM

亲切的问候

克里斯

最佳答案

解决方法

  1. 对于立方体,使用 constant 的 Material 作为其 lightingModel .这是最便宜的。
  2. 此 Material 将具有 writesToDepthBuffer设置为 truecolorBufferWriteMask设置为 [](空选项集)。这样立方体将写入深度缓冲区,但不会在屏幕上绘制任何内容。
  3. 设置立方体的renderingOrder-1 以便它在场景中的任何其他节点之前绘制。这将使立方体在任何其他对象之前写入深度缓冲区,防止它们在立方体后面时被绘制。

关于ios - SceneKit 剔除平面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45052772/

相关文章:

ios - 禁用单个 ViewController 的后退导航

ios - UITableView 单元格重用和旧数据

swift - 如何在XCTestCase中测试NSPersistentDocument?

swift - 如何在 swiftUI 中以线性样式 ProgressView 显示 WKWebView 的估计进度?

user-interface - 人机交互 : UI beyond the WIMP Paradigm

ios - Blender + SceneKit(操作方法)

ios - NSMutableData initWithCapacity 荒谬的容量?

Swift:覆盖子类中的类型别名

html - 在 CSS 中创建一个 facebook 图标

algorithm - 为给定坐标的贝塞尔曲线找到合适的参数值