将 Cinema 4D 模型和纹理放入 iPhone 应用程序中
我是一名 iPhone 开发人员,我正在尝试将我在 Cinema 4D 中创建的 3D 模型放入我正在制作的应用程序中。我实际上已经找到了一种获取模型的方法(通过将其导出为 .dae 或 obj 并使用 python 脚本),效果非常好,但我无法获取它附带的纹理。我的脚本实际上也只能处理 1 个纹理。
基本上我需要在 c4d 中创建和导出 UV 贴图(但我不知道如何做到这一点),或者我找到一种方法使用脚本或 PowerVR 将多个纹理读取到我的 Open Gl - ES 应用程序中。 (这可能更好)
很抱歉提出了菜鸟问题,但我对 3D 世界还很陌生。
干杯
Im an iPhone developer and i'm trying to get a 3D model that I create in Cinema 4D into an app im making. I have actually found a way to get the model in (by exporting it as a .dae or obj and using a python script) which works really well however I can't get the textures to come with it. My script actually can only handle 1 texture as well.
Basically I need to ether create and export a UV map in c4d (but I have no idea how to do this) or I figure out a way to read multiple textures into my Open Gl - ES app with a script or PowerVR. (this is probably better)
Sorry for the noob questions but im very new at the 3D world.
Cheers
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议你使用 Blender。将 Cinema-4D 模型导出到 Blender 并使用 Blender 创建 UVMap。
您需要缝合并打开模型。之后,为您的纹理保存 targa 模板,将您的纹理应用到该 targa 上。将其另存为 png 或 jpg。将该纹理图像应用到 Blender 中的模型中。现在您可以导出 Wavefront OBJ 文件。
使用 OpenGLOBJLoader 类在 iPhone 中渲染模型。
还有一件事:您应该反转 y 轴上的纹理坐标(从 1 中减去),以便正确渲染纹理。
例如,如果您有这样的纹理坐标:
vt 0.800008 0.400000
VT 0.800008 0.150000
...
确保将它们颠倒如下:
vt 0.800008 0.600000
VT 0.800008 0.850000
...
I would recommend that you use Blender. Export your Cinema-4D model for Blender and use Blender to create UVMaps.
You need to make seams and unwrap the model. After that save a targa template for your texture, apply your texture on that targa. Save it as png or jpg. Apply that texture image to your model in Blender. Now you can export Wavefront OBJ file.
Use OpenGLOBJLoader class to render your model in iPhone.
And one more thing: you should invert (subtract from 1) texture coordinates on y axis in order to get your texture rendered properly.
For example, if you have texture coordinates like this:
vt 0.800008 0.400000
vt 0.800008 0.150000
...
make sure that you have them inverted like this:
vt 0.800008 0.600000
vt 0.800008 0.850000
...