0

頂点データなどを OpenGL 経由で GPU に送信することを意図した plist からデータをロードする iOS ローダーを作成しています。文字列や整数などの標準型のオブジェクトを簡単に抽出できます。

私が困惑するのは、辞書オブジェクトとして生データのように見えるものに遭遇したときです。plist は私の 3D モデリング ソフトウェアによって保存されたネイティブ ファイルであり、私は作成者ではないため、データがこのオブジェクトにどのように書き込まれたかはわかりません。

オブジェクトについて私が知っていることのいくつかは、おそらく float の配列であり、各頂点には X、Y、および Z の float 値が必要であり、以下の例には 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 に答える