提示コードのwhile();文のコードですがなぜ文字化けしてしまうのでしょうか?継続条件で改行が来たらループを抜けるように処理を記述しているのですがなぜ最後に文字化けするのでしょうか?
obj
1# Blender v2.83.6 OBJ File: '' 2# www.blender.org 3mtllib untitled.mtl 4o Cube 5v 1.000000 1.000000 -1.000000 6v 1.000000 -1.000000 -1.000000 7v 1.000000 1.000000 1.000000 8v 1.000000 -1.000000 1.000000 9v -1.000000 1.000000 -1.000000 10v -1.000000 -1.000000 -1.000000 11v -1.000000 1.000000 1.000000 12v -1.000000 -1.000000 1.000000 13vt 0.625000 0.500000 14vt 0.875000 0.500000 15vt 0.875000 0.750000 16vt 0.625000 0.750000 17vt 0.375000 0.750000 18vt 0.625000 1.000000 19vt 0.375000 1.000000 20vt 0.375000 0.000000 21vt 0.625000 0.000000 22vt 0.625000 0.250000 23vt 0.375000 0.250000 24vt 0.125000 0.500000 25vt 0.375000 0.500000 26vt 0.125000 0.750000 27vn 0.0000 1.0000 0.0000 28vn 0.0000 0.0000 1.0000 29vn -1.0000 0.0000 0.0000 30vn 0.0000 -1.0000 0.0000 31vn 1.0000 0.0000 0.0000 32vn 0.0000 0.0000 -1.0000 33usemtl Material 34s off 35f 1/1/1 5/2/1 7/3/1 3/4/1 36f 4/5/2 3/4/2 7/6/2 8/7/2 37f 8/8/3 7/9/3 5/10/3 6/11/3 38f 6/12/4 2/13/4 4/5/4 8/14/4 39f 2/13/5 1/1/5 3/4/5 4/5/5 40f 6/11/6 5/10/6 1/1/6 2/13/6 41
cpp
1#include <iostream> 2#include <fstream> 3#include <string> 4 5int main() 6{ 7 //ファイル読み込み 8 const char* namefile = "Cube.obj"; 9 std::ifstream ifs(namefile); 10 11 std::string str; 12 13 if (ifs.is_open() == true) 14 { 15 //printf("ファイル名: %s\n\n",namefile); 16 while (std::getline(ifs,str )) 17 { 18 19 if ((strstr(str.c_str(),"v ")) != NULL) 20 { 21 22 const char* data = str.c_str(); 23 int i = 2; 24 while ((data[i] != '\n')) 25 { 26 27 //printf("%c", data[i]); 28 putchar(data[i]); 29 i++; 30 31 32 } 33 34 //i++; 35 printf("\n"); 36 37 } 38 39 printf("\n"); 40 41 } 42 } 43 else 44 { 45 printf("Error ファイル名:%s \n",namefile); 46 } 47 48 return 0; 49} 50
理論的にxファイルと変わらないですが瞬殺でしたか。それでwebfront.objじゃ、translatef でしか動かせないから不満になると....あと前スレの、できればテクスチャを出せた場合の正解を書いていってほしいんですが。後、webfront.obj でも部品をつくれば、動かせると思います。一応。
vaoを用意していなかったことと。オフセットの設定でした。またRenderDocを使ってデバックすればよかった問題でした。
シェーダ側?の問題でしたか。回答ありがとうございます。で、この後どうするんですか。webfront.objを瞬殺するのか、xでスキニングを解くのか(私がやりたいだけ)、fbxを解くのか(もしかしたら木構造が必要?)、本命はfbxですが。あとシェーダどうやって覚えたんですか。私も導入程度に覚えたいです。
いえ、シェーダーとソースコード両方問題でした。シェーダーは自分はゲームプログラミングc++
という本でちょっと知りあとはこの質問サイトで質問したりネットで調べたりしました。
じゃあ、私も読んでみるかな。リンクできる^^程度でいいんだけど。
あとxファイルでつくる人はいなそうだから評価はもらえないかもしれない。
本当か知らないけど、fbxファイルをつくるには、xファイルを練習すればいいと書いてあったけど
本当かどうか。
修正欄であれですけど。.objファイルを読み取るさいの文字列をfloat型に変換するという処理提示コードのような方法が合っているのでしょうか?
だいたい全部fscanfでfloat型やint型の配列に読みこんだとしかいえない。読み取る数は同じだしコメント邪魔なら...に変えるけど。自動化はしてない。(完全にあってるかは知らない。)
この手のコードは自動化するものでははないのでしょうか?
そうだと思うけど、コードがかぶるのが嫌だったから、自動化するか、次のファイルにとびつくかの選択だった。自動化しなくても、地面を複数だすのは簡単だけど、草をだすのはむずかしいので迷いましたけど(重いと思うよ。)追記キャラクター動かないし。あとはwhileループ苦手。forループのほうが得意なのが災いした。
ゲームプログラミングc++
という本を手にもってみました。
回答1件
あなたの回答
tips
プレビュー