0

我想制作一个应用程序来显示文件中的 3d 模型。

我已经知道要创建一个显示 3d 模型的应用程序,例如香蕉,它是 .h 头文件中应用程序的一部分。

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

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


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

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

我发现了很多读取文件并生成 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]); 

谢谢瑞吉斯

4

1 回答 1

1

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

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

  1. 打开
  2. 解析

第 2 步和第 3 步可能会分批进行。例如,对于某些文件类型,您需要先阅读和解析几行,才能知道接下来要阅读什么。

如果你想从网络服务器加载它,你必须使用 HTTP 协议。由于实现这是一项繁琐的任务,因此存在现成的库,例如libcurl,可以为您完成这项工作。

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

于 2013-01-31T11:46:46.153 回答