0

我正在编写一个 iOS 加载器,它从 plist 加载数据,旨在通过 OpenGL 将顶点数据等发送到 GPU。我可以轻松提取标准类型的对象,如字符串、整数等。

当我遇到作为字典对象的原始数据时,我会感到困惑。plist是我的3D建模软件保存的原生文件,我不是这个软件的作者,所以不知道数据是怎么写入这个对象的。

我确实知道该对象的一些事情,它可能是一个浮点数组,每个顶点都需要一个用于 X、Y 和 Z 的浮点值,下面的示例中有 26 个顶点。

这是 plist 文件中的实际数据对象:

    <key>vertex</key>
    <data>
    AAAAAL8AAAAAAAAAAAAAAAAAAAC/AAAAPwAAAAAAAAA+gAAAvwAA
    AD7ds9cAAAAAPt2z2L8AAAA+f///AAAAAD8AAAC/AAAAsru9LgAA
    AAA+3bPXvwAAAL6AAAEAAAAAPoAAAb8AAAC+3bPXAAAAALM7vS6/
    AAAAvwAAAAAAAAC+gAADvwAAAL7ds9UAAAAAvt2z2L8AAAC+f//9
    AAAAAL8AAAC/AAAAMczeLgAAAAC+3bPYvwAAAD5///0AAAAAvn//
    +L8AAAA+3bPaAAAAAD6AAAA/AAAAPt2z1wAAAAAAAAAAPwAAAD8A
    AAAAAAAAAAAAAD8AAAAAAAAAAAAAAD7ds9g/AAAAPn///wAAAAA/
    AAAAPwAAALK7vS4AAAAAPt2z1z8AAAC+gAABAAAAAD6AAAE/AAAA
    vt2z1wAAAACzO70uPwAAAL8AAAAAAAAAvoAAAz8AAAC+3bPVAAAA
    AL7ds9g/AAAAvn///QAAAAC/AAAAPwAAADHM3i4AAAAAvt2z2D8A
    AAA+f//9AAAAAL5///g/AAAAPt2z2gAAAAA=
    </data> 

关于如何阅读这个的任何想法?这就是我所在的位置:

// get plist
NSString *path = [[NSBundle mainBundle] pathForResource:@"Cylinder" ofType:@"jas"];
NSDictionary *cheetahFile = [NSDictionary dictionaryWithContentsOfFile:path];
NSArray *objectArray = [cheetahFile objectForKey:@"Objects"];
NSDictionary *model = [objectArray objectAtIndex:1];

//get vertex count
GLshort vertCount = [[model valueForKey:@"vertexcount"] intValue];

//All good so far...but...

//get vertex data?... this doesn't work:
NSMutableArray *vertArray = [NSMutableArray arrayWithObject:[model objectForKey:@"vertex"]];

PS如果我犯了菜鸟的错误,请提前道歉。我的职业是设计师,不是程序员。所以当我吃蜡笔的时候,用舒缓的语气慢慢说话。:)

4

1 回答 1

0

<data>部分是一个编码NSData对象。你可以这样做:

NSData *vertexData = model[@"vertex"];

你用这些数据做什么是另外一个讨论。

于 2013-05-13T22:51:35.597 回答