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 - 如何在编辑模式下(在 UITableView 中)执行不同的 segue?

android - 从 RelativeLayout 或 Group Drawables 中获取 Drawables

java - 缓冲图像动画代码无法正确重画

ios - AFNetworking - AFHTTPRequestOperation - 检查 setUploadProgressBlock 失败?

javascript - 使用 css/js 禁用 Mobile Safari Webview 中的反弹?

ios - 应用商店 : App downloadable only for 3GS and above?

javascript - 如何在饼图中填充一定份额的切片?

ios - PFUser logInWithAuthTypeInBackground(错误 : Twitter auth configuration missing)

swift - 401 alamofire 获取带有 header 的请求

swift - UIScrollView 中的 UIImageView 和 UIWebView