0

仕事用のWavefrontオブジェクトローダーを書いているのは、プロのプロジェクトで理解できないコードを使用することに抵抗があるためです。明らかな最初のステップの後、どの部分がどの部分であるかを分類し、頂点をロードしてログに記録しようとしています。何よりもまず、値を保持するC構造体を作成しました。

struct Vertice {
    float x;
    float y;
    float z;
};

次に、これを効果的にログに記録する方法が必要だったので、このサイトにあるものに触発されたプリプロセッサ関数を作成しました。ジーゼ、君たちはすべてを持っている。

#define LogVertice(VERTICE) NSLog(@"Vertice - X: %0.00000f, Y: %0.00000f, Z: %0.00000f", VERTICE.x, VERTICE.y, VERTICE.z);

次に、実際にロードして頂点を解析してみます。

NSArray *verticeLineParts = [currentLine componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
struct Vertice v;
v.x = [[verticeLineParts objectAtIndex:1] floatValue];
v.y = [[verticeLineParts objectAtIndex:2] floatValue];
v.z = [[verticeLineParts objectAtIndex:3] floatValue];
NSLog(@"%@", currentLine);
LogVertice(v);

間違っていると言う以外に、出力を説明するための最良の方法がわからないので、お見せします。出力の最初の5行:

2010-10-14 13:46:03.587 ObjLoader[1353:207] v -0.035910 1.710543 -0.048286
2010-10-14 13:46:03.594 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
2010-10-14 13:46:03.595 ObjLoader[1353:207] v -0.041089 1.710543 -0.048951
2010-10-14 13:46:03.596 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
2010-10-14 13:46:03.596 ObjLoader[1353:207] v -0.040913 1.711848 -0.048951
2010-10-14 13:46:03.597 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
2010-10-14 13:46:03.598 ObjLoader[1353:207] v -0.040396 1.713069 -0.048951
2010-10-14 13:46:03.599 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0
2010-10-14 13:46:03.600 ObjLoader[1353:207] v -0.039573 1.714114 -0.048951
2010-10-14 13:46:03.600 ObjLoader[1353:207] Vertice - X: -0, Y: 2, Z: -0

そして、ファイルの最初の5つの頂点。

v -0.035910 1.710543 -0.048286
v -0.041089 1.710543 -0.048951
v -0.040913 1.711848 -0.048951
v -0.040396 1.713069 -0.048951
v -0.039573 1.714114 -0.048951

私はまともなObjective-Cプログラマーだと思いますが、どうやらフロートを正しく取得することすらできないようです。誰かが私の明らかなエラーを見ることはできますか?

4

1 に答える 1

1

ログ機能を変更すると修正されます。

#define LogVertice(VERTICE) NSLog(@"Vertice - X: %f, Y: %f, Z: %f", VERTICE.x, VERTICE.y, VERTICE.z);
于 2010-10-14T19:07:13.787 に答える