我正在编写一个iOS加载程序,它将来自打算通过OpenGL发送顶点数据等的plist的数据加载到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"]];
P.S。如果我犯了一个菜鸟错误,请提前抱歉。我是专业的设计师,而不是程序员。因此,当我吃蜡笔时,使用舒缓的音调说话很慢。 :)
答案 0 :(得分:0)
<data>
部分是编码的NSData
对象。你可以这样做:
NSData *vertexData = model[@"vertex"];
您对该数据的处理是另一个完整的讨论。