有没有办法在 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 噪声使自定义几何平面的顶点变得颠簸:
我可以在 SceneKit 中使用高度图吗? 有什么函数或 api 可以用来实现它吗?
我想做一个游戏,这对我很有帮助。
SCNMaterial
没有专用的 SCNMaterialProperty
(就像法线贴图一样),但您可能可以使用着色器修改器实现您想要的效果。
我不知道,但这里有一个方便的 converter 用于从高度贴图制作法线贴图。似乎需要您检查 "invert height" 才能正常工作,否则默认值对我有用。
能够在 SceneKit 中使用高度贴图会很好,但这是次要的事情。
我创建了一个自定义 Core Image 过滤器,它将您的 height/bump 贴图转换为可与 SceneKit 材质一起使用的法线贴图。您可以阅读它并下载示例实现 at my blog.
简而言之,法线贴图包括映射到红色、绿色和蓝色的 x、y 和 z 轴的位移数据。我的过滤器查看单色凹凸贴图中每个像素的水平和垂直斜率,并根据这些输出红色和绿色。蓝色和 alpha 通道始终设置为 1。
此滤镜可用于程序源(例如渐变)或现有图像。
我不确定这是否是您想要的。这使用 perlin 噪声使自定义几何平面的顶点变得颠簸: