从位于Web服务器中的文件动态加载3d模型

时间:2013-01-31 01:50:46

标签: xcode file opengl webserver

我想制作一个可以从文件中显示3D模型的应用程序。

我已经知道要创建一个显示像香蕉这样的三维模型的应用程序,它是.h头文件中应用程序的一部分。

但我想做的是在应用程序中制作一个小的3D对象列表,当用户选择一个模型时,它将从本地网络服务器上传到手机中,然后手机渲染它。

我不知道该做什么是进行加载3d模型并显示它的动态编程。


我已经完成了测试,我已经在我的本地Web服务器上使用Windows中的写字板编辑了一个文件banana.h,其中包含一个float数组列表,以便提取一个数组并创建一个名为ObjVerts.txt的文本文件

我在Web上做了很多搜索,以便找到一小段代码,可以读取文本文件并将其转换为float数组,但我没有找到任何代码。

我找到了很多代码来读取文件并创建一个NSSMutuableData,但许多代码似乎无效。

似乎最后一句话什么都没有回来!

如果你能引导我一点,我将不胜感激。

这里我尝试了一段代码:

    NSURLRequest *request2 = [NSURLRequest requestWithURL:[NSURL
                                                          URLWithString:@"http://localhost/ObjVerts.txt"]

                                             cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]

    NSURLConnection *connection2=[[NSURLConnection alloc] initWithRequest:request2 delegate:self];

    if (connection2)
    {
        NSMutableData *response2 = [[NSMutableData data2] retain];

        glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) response2);

    }
    else
    {
        NSLog(@"Could not create connection");
    }

感谢瑞吉斯


这可以工作并返回一些数据,但我不知道如何将结果转换为GLfloat数组:

    NSURL *myurl = [NSURL URLWithString:@"http://localhost/ObjVerts.txt"];
    NSData *mystring = [NSData dataWithContentsOfURL:myurl];
    glVertexAttribPointer(vertexHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) mystring[0]); 

感谢瑞吉斯

1 个答案:

答案 0 :(得分:1)

这是一种常见问题解答。但是很好:

从文件或Web资源加载3D模型就像加载任何数据一样。

  1. 解析
  2. 步骤2和3可能以交错的批次进行。例如,对于某些文件类型,您需要先读取并解析几行,以了解下一步要阅读的内容。

    如果要从Web服务器加载它,则必须使用HTTP协议。由于实现这一任务是一项繁琐的工作,因此可以使用libcurl这样的库,为您完成工作。

    解析过程的细节取决于使用的文件格式。但结果将是您的进程地址空间中的数据,就像它是从.h链接的静态数组常量一样,然后就像那样使用它。