我想在iPhone应用程序中加载HDRi地图(类似于谷歌地图),然后我希望能够加载一些3D角色在场景中播放。
您可以在此处看到我要加载的示例:
http://www.hdri-hub.com/hdrishop/freesamples/freehdri/item/117-hdr-041-path-free
目前我正在使用Cocos3D通过POD导出文件从Blender加载3D模型,所以也许有一种方法可以在Cocos3D中加载HDRi。我发现这个类CC3STBImage可用于加载HDR类型,但我不知道如何使用它(并没有找到示例)。我已经看到CC3Texture2DContent具有initFromSTBIFile:方法,用于' phdr'文件扩展名,也许HDRi可以作为纹理加载?
[编辑]
我设法加载了一个带有图像的球形网格,请参阅下面的答案和评论。这里通过在天空盒中查看CC3Camera的结果截图:
答案 0 :(得分:1)
正如您所提到的,CC3STBImage
类提供了HDRi支持。 CC3STBImage useForFileExtensions
方法中提供了使用此类的文件扩展名列表。如果您不想将文件重命名为*.phdr
,则可以将此文件扩展名添加到此集合中。
一旦确保您的HDRi文件扩展名在上面的集合中,您就可以通过以下方式将HDRi文件加载到CC3Texture
:
[CC3Texture textureFromFile: @"myFile.phdr"];
CC3STBImage
使用stb_image.c
文件中提供的第三方库。请查看该文件中的注释,了解有关HDRi支持的更多信息以及任何潜在的限制。
请记住,iOS OpenGL实现限制了纹理的大小。 Cocos3D 会在应用启动期间记录当前平台的最大纹理大小。在日志中查找条目,例如:
[info] Maximum texture size: 4096
表示该平台支持的最大OpenGL纹理宽度和高度。