如何在 SceneKit 中的盒子中创建一个洞?

How to create a hole in the box in SceneKit?

我正在使用 SceneKit 为 Swift iOS 应用创建 3D 房间。

我正在使用多个盒子并将它们放在一起以创建房间的不同墙壁。我还想为我需要在墙上开洞的房间添加门和 windows。这看起来是一个非常常见的场景,但我找不到任何相关的答案。

我知道有多种方法 -

  1. 最简单,不切框。放置另一个带有门或墙纹理的盒子。

    • 但我确实想在房间外面放置一个光源,并希望它通过这些门流入房间,windows
  2. 为单个墙创建多个盒子并将它们放在一起形成一个几何图形

    • 也许是我最后的选择。
  3. 创建自定义几何图形。

    • 感觉太复杂了,每个三角形都要自己画。不确定?

但我真正期待的是 -

  1. 从几何中减去几何?
  2. 已经在处理这些复杂问题的库?

任何指点都会很有帮助。

谢谢。

Scene kit 提供了一些很棒的潜力,但它不能替代 3D 建模程序。如果您想要的东西远远超出在平面中使用基元和挤压进行组装,您应该考虑在专用的 3-D 包中构建模型并将模型作为 .dae 文件导出到 SceneKit 中。你可以看看 Blender。它是免费的,并且可以在网上随时获得。我怀疑它可以轻松地做你想做的事,并且学习曲线将通过图形程序的高级功能而不是编码来补偿。

我认为@bpedit 描述了最好的方法。

一个较弱的第二选择是使用 SCNShape 来构建你的几何体。这仍然会给您留下构建与您的墙相匹配的贝塞尔路径的问题 layout/topology。这在短期内可能是一个有用的 hack,可以让您免于立即学习建模软件。但我预测您最终仍会转向使用 Blender、SketchUp、Cheetah 3D 或 Maya 等工具。