有没有办法在 SceneKit 中使用高度贴图?

Is there a way to use height map with SceneKit?

我可以在 SceneKit 中使用高度图吗? 有什么函数或 api 可以用来实现它吗?

我想做一个游戏,这对我很有帮助。

SCNMaterial 没有专用的 SCNMaterialProperty(就像法线贴图一样),但您可能可以使用着色器修改器实现您想要的效果。

我不知道,但这里有一个方便的 converter 用于从高度贴图制作法线贴图。似乎需要您检查 "invert height" 才能正常工作,否则默认值对我有用。

能够在 SceneKit 中使用高度贴图会很好,但这是次要的事情。

我创建了一个自定义 Core Image 过滤器,它将您的 height/bump 贴图转换为可与 SceneKit 材质一起使用的法线贴图。您可以阅读它并下载示例实现 at my blog.

简而言之,法线贴图包括映射到红色、绿色和蓝色的 x、y 和 z 轴的位移数据。我的过滤器查看单色凹凸贴图中每个像素的水平和垂直斜率,并根据这些输出红色和绿色。蓝色和 alpha 通道始终设置为 1。

此滤镜可用于程序源(例如渐变)或现有图像。

我不确定这是否是您想要的。这使用 perlin 噪声使自定义几何平面的顶点变得颠簸:

https://github.com/Utsira/SceneKitBumpMapPlane