提示コードですが下記の.mtlファイルのnewmtl Material.001
とありますがこの001
の文字列を変数1
として数値変数に保存したいのですが///
コメント部のコードで文字を描画するまでは実装出来たのですが文字列から特定文字から先をを算出
する方法が知りたいです。
newmtl Material.001 Ns 225.000000 Ka 1.000000 1.000000 1.000000 Kd 0.800000 0.800000 0.800000 Ks 0.000000 0.000000 0.000000 Ke 0.000000 0.000000 0.000000 Ni 1.450000 d 1.000000 illum 1 map_Kd hair.png newmtl Material.002 Ns 225.000000 Ka 1.000000 1.000000 1.000000 Kd 0.800000 0.800000 0.800000 Ks 0.000000 0.000000 0.000000 Ke 0.000000 0.000000 0.000000 Ni 1.450000 d 1.000000 illum 1 map_Kd skin.png
cpp
1// ##################################### .mtlファイル読み込み ##################################### 2std::shared_ptr<FrameWork::Material> FrameWork::GetMaterial(const char* path) 3{ 4#define LINE_BUFFER ((int)(500)) 5 6 FrameWork::Material mtl; 7 8 FILE *file; 9 fopen_s(&file,path, "r"); 10 if (file == NULL) 11 { 12 std::cerr << ".mtlファイルが開けません: " << path << std::endl; 13 assert(0); 14 } 15 else 16 { 17 while (true) 18 { 19 char line[LINE_BUFFER] = { '\0' }; 20 21 int res = fscanf_s(file, "%s", line, LINE_BUFFER); 22 23 if (res == EOF) 24 { 25 break; 26 } 27//////////////////////////////////////////////////////////////////////////////////////////////////////// 28 if (strcmp(line, "newmtl") == 0) 29 { 30 31 const char* str[500] = {'\0'}; 32 33 fscanf_s(file, "%s",str, LINE_BUFFER); 34 printf("%s\n",str); 35 } 36//////////////////////////////////////////////////////////////////////////////////////////////////////// 37 } 38 } 39 40 return std::make_shared<FrameWork::Material>(mtl); 41} 42
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。