Nanashi-soft○プログラマ専用○DirectX11開発○
~面頂点リストの直後から・pmd.cppに材質リストデータ読み込み
//材質リスト
unsigned long material_count;
struct t_material{
float diffuse_color[3];
float alpha;
float specularity;
float specular_color[3];
float mirror_color[3];
unsigned char toon_index;
unsigned char edge_flag;
unsigned long face_vert_count;
char texture_file_name[20];
};
t_material *material;
~面頂点リストデータ読み込みの直後から・メインプログラムに頂点データにカラーを当てるのを追加
//材質リスト材質数
fread(&material_count, sizeof(material_count), 1, hFP);
//材質リストデータ読み込み
material = new t_material[material_count];
fread(material, 70, material_count, hFP);
~インデックスデータを取得の直後から
//カラーデータを取得
int COLORSU = modeldata->material_count;
int cnt_idx = 0; //インデックスカウンター
for(int i=0; i < COLORSU; i++){
//マテリアルにあるカウンター分回す
for(int j=0; j < modeldata->material[i].face_vert_count; j++){
//インデックスから頂点座標の行数を取り出す
int pos_vec = modeldata->face_vert_index[cnt_idx];
cnt_idx++; //インデックスカウンターを進める
//その頂点座標のカラーが現在のマテリアルカラー
hVectorData[pos_vec].col[0] = modeldata->material[i].diffuse_color[0]; //R
hVectorData[pos_vec].col[1] = modeldata->material[i].diffuse_color[1]; //G
hVectorData[pos_vec].col[2] = modeldata->material[i].diffuse_color[2]; //B
hVectorData[pos_vec].col[3] = modeldata->material[i].alpha; //A
}
}