在Cocos3D中加载HDRi地图

时间:2014-07-04 07:56:54

标签: 3d textures blender cocos3d hdr

我想在iPhone应用程序中加载HDRi地图(类似于谷歌地图),然后我希望能够加载一些3D角色在场景中播放。

您可以在此处看到我要加载的示例:

enter image description here

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的结果截图:

enter image description here enter image description here enter image description here

1 个答案:

答案 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纹理宽度和高度。