【问题标题】:Is there a way to add an outline in scene kit?有没有办法在场景套件中添加轮廓?
【发布时间】:2015-06-22 07:51:18
【问题描述】:

我一直在用场景工具包制作游戏,但物体的边缘很难看到,导致一些游戏细节无法看到。有没有办法在所有游戏对象周围画出黑色轮廓?

【问题讨论】:

  • 您的问题中没有足够的信息来使其有意义地回答。包括您现有代码的示例。
  • 是的,有一种方法,但它会涉及使用 SCNTechnique 执行多通道渲染。它将涉及在一次渲染中渲染场景的颜色和深度,然后对深度进行边缘检测(例如 Sobel 过滤器)并将边缘合成到来自第一次渲染的颜色之上。对所有这些都进行详细说明的答案可能太长,无法获得好的答案。

标签: xcode opengl blender scenekit 3d-modelling


【解决方案1】:

您可以使用另一个答案中提到的SCNTechnique(您可以查看这篇关于cel shading 的文章,它具有边缘检测通道),但全帧后期处理非常昂贵。

在 OS X 上,您还可以利用几何着色器(请参阅 this article)。但它在 iOS 上不可用,并且可能更难实现和正确。

我会采用一种更简单的技术,它只涉及顶点和片段着色器。您可以查看this article,它提供了一个使用SCNProgram 或着色器修改器很容易在SceneKit 中重新创建的示例。

【讨论】:

    【解决方案2】:

    这里有一个使用 SCNTechnique 为节点制作发光轮廓的示例: https://github.com/laanlabs/SCNTechniqueGlow

    您可以修改颜色和模糊的方法来实现描边的轮廓效果。

    【讨论】:

      【解决方案3】:

      另一个 SCNTechnique 示例,在此处引用:https://www.nurfacegames.com/everything-you-wanted-to-know-about-outline-shaders/,是将您的节点在后面稍微大一点,然后再以常规大小在前面。

      这是一个游乐场示例:https://github.com/mackhowell/scenekit-outline-shader-scntechnique

      【讨论】:

        猜你喜欢
        • 2015-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        • 1970-01-01
        相关资源
        最近更新 更多