如何在SceneKit中制作平面镜

Yu *_* Fu 2 objective-c ios scenekit swift

对于SCNFloor,如果反射设置为1并且reflectionFallOffEnd足够大,它就会像一面镜子。

我的问题是如何将其应用于其他几何形状(例如平面或盒子)?因为我想在我的游戏中拥有一面镜子。

Mou*_*ach 5

我对如何使用 Scenekit 进行反射进行了大量研究。

以下是我发现的不同线索(遗憾的是,它们都需要大量的代码和研究):

屏幕空间反射

优点:

  • 便宜的
  • 容易制作

缺点

  • 看起来并不总是很好
  • 我不确定如何使用 SCNTechnique 输出正常通道

视差贴图立方体贴图

优点:

  • 便宜的
  • 看起来好赞

缺点

  • 除非使用图像代理,否则没有实时对象
  • 网上没有好的代码示例,需要研究
  • 不太确定如何将它与 SCNProgram 一起使用

两个相机+模板

优点:

  • 实际的
  • 即时的
  • 几乎内置

缺点

  • pointOfView没有SCNTechnique 的文档
  • 没有有关模板的文档
  • 需要渲染场景两次

OpenGL镜像

优点:

  • 实际上复制了几何形状,所以非常准确
  • 这是SCNFloor使用的技术(我认为)

缺点

  • 几何体可以与镜像平面进行裁剪(SCNFloor 会发生这种情况)
  • 除飞机外无法在任何其他地方使用
  • 需要 OpenGL 代码

4 个相机链接到立方体贴图

优点:

  • 易于设置
  • 即时的
  • 适用于任何物体
  • 现代视频游戏中非常流行的技术

缺点

  • 我不知道这是否有效
  • 对于单个镜子需要渲染场景 5 次
  • 不太准确,具体取决于对象

我的结论是我们需要更多关于使用 SCNTechnique 的帮助。我们可以用它构建令人惊奇的东西,但缺乏文档和示例是一个大问题。

如果您能具体说明您想要哪种镜子,我将很乐意帮助您选择最佳方式。