OpenGL ES 在iOS平台加载3dmax导出的obj模型

OpenGL ES 在iOS平台加载3dmax导出的obj模型

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

以下注释部分涉及到文件按行读取与块的使用。

关于obj文件格式,后续补充,需要说明obj格式以明文文本存储模型信息,但无法承载灯光及其它信息,需要时,可深入研究3ds这种二进制的文件格式,相对来说从3dmax导出的信息比较全面,包括灯光信息,但也较有难度。

后续会改成c++的代码,并处理同一个模型文件中的多个几何体的情况,再完善本贴。

    // 获取文档根目录路径,也即itunes共享的目录
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    // 默认只有一个,就取第一个
    NSString *documentsDirectory = [paths objectAtIndex:0];
    // 文档根目录串附加一个文件名,构造出一个该目录下文件的完整路径
    NSString *absoluteFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
    // 文件管理器对象单例获取
    NSFileManager *fileManager = [NSFileManager defaultManager];
    // 判断上面构建的完整路径对应的文件是否存在
    if (![fileManager fileExistsAtPath:absoluteFileName]) {

        // 文件不存在,则用应用包路径再构建该文件的完整路径
        absoluteFileName = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"1111.obj"];
    }

    // 使用Utf-8编码读取该文件内容
    NSString *fileContent = [NSString stringWithContentsOfFile:absoluteFileName encoding:NSUTF8StringEncoding error:nil];

    // 对整个文件的内容,用换行符分隔成多个字符串,得到一个数组
    NSArray *lines = [fileContent componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

    // 使用块技术,枚举数组中保存的文件内容的每一行,此块使用是串行的
    [lines enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

        // 块传入参数:obj为数组中idx位置保存的一行字符串,此处做了首尾去除空白符的处理,任何时侯想跳出块处理,给 &stop 赋一 YES 值即可中止以后的块调用
        NSString *line = [(NSString *)obj stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

        // 是vt、vn、v、f中的一类,至少3个字符以上
        if (line.length >3) {

            if ([[line substringToIndex:3] isEqualToString:@"vt "]) {

            }
            else if ([[line substringToIndex:3] isEqualToString:@"vn "]) {

            }
            else if ([[line substringToIndex:2] isEqualToString:@"v "]) {

            }
            else if ([[line substringToIndex:2] isEqualToString:@"f "]) {

            }
        }
    }];
时间: 2024-10-31 03:40:08

OpenGL ES 在iOS平台加载3dmax导出的obj模型的相关文章

OpenGL ES 在 iOS 平台纹理贴图倒置的问题研究

OpenGL ES 在 iOS 平台纹理贴图倒置的问题研究 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. (一大疑惑,为什么android上关于OpenGL ES 开发的资料很多,确涉及该主题

3dmax导出的obj有时需要转成utf-8格式才能被ios读取

3dmax导出的obj有时需要转成utf-8格式才能被ios读取 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 在做OpenGL ES研究过程中,需要加载3dmax导出的obj模型文件,该文件

ios webview加载本地文件时崩溃

问题描述 ios webview加载本地文件时崩溃 加载本地一个docx格式的文件,程序崩溃,exc_bad_access 完全没有异常信息 解决方案 http://www.lxway.com/884821684.htm 解决方案二: 至少要上一下给我们代码看看嘛 解决方案三: iOS webView 加载文件 及 文件操作iOS中webview加载本地html文件iOS webview 加载html 乱码

js-求教IOS webview加载html遇到的问题

问题描述 求教IOS webview加载html遇到的问题 项目中需要加载远程html但是发现一旦执行了style.display=block之后js控制会失效,求各位大神指点 解决方案 http://blog.csdn.net/u013243469/article/details/41084855看看这个博客能帮带你吗 解决方案二: 楼主 页面直接通过手机浏览器 访问的话 也会失效么

ios uiwebview加载jsp界面获取地理位置信息

问题描述 ios uiwebview加载jsp界面获取地理位置信息 我用uiwebview加载一个jsp页面,jsp页面中有通过geolocation请求地理位置,我在iOS手机上应该加什么才能让jsp页面能够获取到地理位置

ios异步加载表格数据及内容不能及时显示的问题

异步事件,就是说这一个代码或者代码块,并不会阻塞程序的运行,程序会立即执行下一条语句,而这条语句,会在相应的方法调用结束之后,执行它自身的回调函数发送一些信号,来表明这个异步事件完成.就像你约会提前1小时到见面地点,先去买点东西踩点什么的(--),等GF/BF到了之后短信通知你,你就立即回来.而不是一直在原地等到对方过来(--) 最早使用异步开发,是在使用JavaScript来开发Web前端的时候,XMLHttpRequest或者jQuery的$.ajax中,都会用到回调函数,来指明成功或者失败

iOS UITextView加载本地html文件例子

有时候我们不是从服务器上直接加载一个网页,而是需要加载本地的html文件,具体实现的代码如下: - (void)viewDidLoad {    [super viewDidLoad];    self.view.backgroundColor = [UIColor whiteColor];         //创建从Bundle中来自HTML文件的URL    NSURL *html = [[NSBundle mainBundle] URLForResource:@"right_obligat

[IOS]来回加载大量图片内存溢出的问题

用xcode的instrument工具查看内存使用情况时,发现程序使用内存情况很稳定维持在1.3M左右,也没有内存泄漏.那么问题来了,程序无故退出肯定是内存溢出了,而instrument并显示没有溢出(一般单个程序内存消耗唯20M左右会发警告,30M程序崩溃退出).所以一直在想是不是哪个地方忘记释放内存了,经过仔细检查,并不存在没有释放的内存啊,纠结了一天.最后终于找到问题所在了,是[UIImage imageNamed@""]在搞鬼:       翻看了一些网上资料http://ww

iOS简单加载一个网页的方法

  .h文件中 @property(strong ,nonitomic) UIWebView * webView; .m文件中 -(void)viewDidLoad { self.webview = [[UIWebView alloc]initWithFormat:CGRectmake(0,0,320,480)]; [self.view addSubview:self.webView]; NSUrlRequeast * request = [NSURLRequest requestWithUrl