1.一種動(dòng)態(tài)細(xì)節(jié)層次模型實(shí)現(xiàn)的方法,其特征在于包括對模型的預(yù)處理和對自定義文件解析兩部分:
對模型的預(yù)處理:
1.1.找出最小度量誤差的頂點(diǎn)序列;
1.2.保存被刪除點(diǎn)舊id和新id的對應(yīng)permutation[vertex[i]->id]= vertex.num-1;
1.3.保存替代頂點(diǎn)的舊id到map[vertex.num-1];
1.4.對折疊代價(jià)或度量誤差最小的頂點(diǎn)序列進(jìn)行半邊折疊,并更新被刪除點(diǎn)的鄰居點(diǎn)的度量誤差;
1.5.步驟1.1到步驟1.4循環(huán)vertex.num次;
1.6.利用permutation數(shù)組將map中的替代頂點(diǎn)的舊id替換為新id,map[i] = permutation[map[i]];
1.7.利用permutation數(shù)組對頂點(diǎn)按重要度進(jìn)行排序,將三角形三元組的舊id替換為新id;
2.解析自定義文件
2.1.用原模型頂點(diǎn)數(shù)vert.num乘以精簡度percent得到新模型的頂點(diǎn)數(shù)vert.num * percent,取出前vert.num * percent個(gè)頂點(diǎn);
2.2.對三角形序列的三個(gè)頂點(diǎn)序號tri.at(i).t[0],tri.at(i).t[1],tri.at(i).t[2],分別根據(jù)map折疊數(shù)組快速找到替代頂點(diǎn)序號;
2.3.如果三角形序列的三個(gè)頂點(diǎn)序號tri.at(i).t[0],tri.at(i).tri[1],tri.at(i).tri[2]有相同的,則表示這個(gè)三角形無效;
2.4.根據(jù)前vert.num * percent個(gè)頂點(diǎn)和有效三角形得到任意比例的模型,最終實(shí)現(xiàn)動(dòng)態(tài)細(xì)節(jié)層次模型。