System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及三維建模,具體涉及一種用于三維模型的小紋理聚合自動映射方法。
技術介紹
1、近年來,隨著數字化、智能化技術在生活中的運用,三維建模設計以及三維仿真領域也隨之快速發展,對模型的渲染速度要求也隨之越來越高,三維建模的過程需要花費巨大的精力去做一些重復的工作。為此,研究出能夠更節省人力,提升模型渲染效率的技術尤其關鍵。傳統的紋理只能單個紋理文件依次手動映射或者手動通過photoshop、gimp等圖片處理工具將多張小紋理按照規則拼接成大紋理,拼接的過程繁瑣且十分耗時,大大降低了建模的效率。現有的presagis?creator建模軟件自帶的texture?compositor插件也只能合并同一個平面的紋理,面對錯綜復雜結構的模型,合并效率相比傳統手工方式提升不明顯,達不到預期效果。
技術實現思路
1、本專利技術的目的在于,提供一種用于三維模型的小紋理聚合自動映射方法,能夠有效增加紋理的渲染效率,高效且方便的將模型的所有紋理完成合并并對模型的紋理映射,并且能夠最大限度的提高紋理合并之后大紋理的邊界吻合程度,減少紋理合并內部的碎片空間,提高聚合紋理文件的利用率,節約內存資源。
2、本專利技術采取的技術方案是:一種用于三維模型的小紋理聚合自動映射方法,包括如下步驟:
3、s1:對三維模型中不同格式的紋理文件進行格式轉換,將紋理文件轉換為統一格式;
4、s2:根據三維模型上各頂點保存的的紋理映射 uv坐標值判斷是否需要對紋
5、s3:對統一格式且重復擴張處理后的紋理文件采用基于貼邊法的紋理合并算法進行計算,得到各個紋理在聚合紋理中的相對坐標,并根據所述相對坐標對各個紋理逐個進行合并,形成排列整齊且內部碎片空閑空間最小化的聚合紋理;
6、s4:基于步驟s3生成的聚合紋理,對三維模型各頂點的紋理映射 uv坐標進行轉換,通過貼有原始小紋理的模型幾何面上各頂點的紋理映射 uv坐標,計算出用聚合紋理映射模型幾何面的各頂點的紋理映射 uv坐標,同時用聚合紋理代替原始小紋理,實現聚合紋理模型的自動映射,達到與小紋理映射模型相同的渲染效果。
7、進一步地,所述步驟s1的具體步驟為:將不同格式的紋理文件統一轉化為png格式文件;其中,對于jpg格式的文件,進行解析和rgb數據的提取;對于rgb格式或rgba格式的文件,首先分析rgb文件或rgba文件的rgb信息,獲得rgb格式16進制文件,并對各通道數據分塊存儲,其次分別從各通道數據塊中提取相對位置相同的三個字節數據共同構成(r,g,b)表示一個像素,直至提取完整張紋理圖片中所有像素,獲取紋理文件完整的rgb信息,最后提取rgb文件或rgba文件的顏色數據,其中,為使rgb文件和rgba文件的顏色數據格式相同,便于算法兼容,對于沒有alpha通道的rgb圖片種類,則將alpha數據值設置為255,隨后將各個紋理文件rgb數據與alpha數據合并,構成紋理圖片新的rgba數據。
8、進一步地,所述步驟s2的具體步驟為:
9、s201:使用深度遍歷算法,查詢出貼有紋理的幾何面的紋理信息以及幾何面各頂點的紋理映射 uv坐標,并保存紋理信息以及映射有該紋理的幾何面上頂點的紋理映射 uv坐標的最小值和最大值;
10、s202:將保存好的紋理信息結合紋理映射 uv坐標最小值和最大值進行計算,計算出擴張之后紋理的幾何面頂點的紋理映射 uv坐標,具體公式為:
11、;
12、;
13、其中, u為轉換前頂點的紋理映射坐標的 u坐標, v為轉換前頂點的紋理映射坐標的 v坐標, minu表示紋理映射 uv坐標中 u坐標的最小值, minv表示紋理映射 uv坐標中 v坐標的最小值, maxu表示紋理映射 uv坐標中 u坐標的最大值, maxv表示紋理映射 uv坐標中 v坐標的最大值, new_u映射有擴張之后紋理的幾何面頂點的紋理映射坐標的 u坐標, new_v映射有擴張之后紋理的幾何面頂點的紋理映射坐標的 v坐標,表示向下取整,表示向上取整。
14、進一步地,所述步驟s3的具體步驟為:
15、s301:創建一張白色圖片,作為紋理合并的畫布;
16、s302:利用基于貼邊法的紋理合并算法,得出每一張小紋理在聚合紋理之中的相對位置坐標,其中,坐標以矩形紋理的左下角為準;
17、s303:根據步驟s302得出的紋理相對位置坐標以及紋理的寬度和高度,確定小紋理在聚合紋理中的區域;
18、s304:將步驟s1中得到的各個小紋理的rgba數據逐個寫入聚合紋理中對應的區域,生成一張聚合紋理,完成紋理的合并操作。
19、進一步地,所述步驟s302的具體步驟為:將單張紋理進行基于面積從大到小的排列,引入空閑邊概念,空閑邊是指進行合并時能夠用小紋理的某一邊與之鄰接的邊,依據空閑邊使用小紋理的長邊進行貼邊,從小到大遍歷空閑邊,進行空閑邊的判優,判優規則為:先判斷空閑邊的長度,長度差值越大優先級越低,長度相同時優先級最高;確定好空閑邊長度之后,對長度相同的空閑邊再進行方向上的判優;對于水平方向的空閑邊,右邊的優先級高于左邊,對于垂直方向的空閑邊,上邊的優先級高于下邊;若空閑邊長度和方向都相同,則按照遍歷空閑邊的先后順序確定優先級;隨后再進行紋理的越界判斷,判斷進行貼邊合并之后是否超出聚合紋理規定區域,找出最適合與小紋理的最長邊進行鄰接的邊,貼邊完畢確定并保存紋理此時的左下角坐標,完成一塊小紋理的貼邊后進行空閑邊的整理,再進行下一塊紋理的貼邊,直到所有的紋理完成貼邊。
20、進一步地本文檔來自技高網...
【技術保護點】
1.一種用于三維模型的小紋理聚合自動映射方法,其特征在于,包括如下步驟:
2.根據權利要求1所述的一種用于三維模型的小紋理聚合自動映射方法,其特征在于,所述步驟S1的具體步驟為:將不同格式的紋理文件統一轉化為PNG格式文件;其中,對于JPG格式的文件,進行解析和RGB數據的提取;對于RGB格式或RGBA格式的文件,首先分析RGB文件或RGBA文件的RGB信息,獲得RGB格式16進制文件,并對各通道數據分塊存儲,其次分別從各通道數據塊中提取相對位置相同的三個字節數據共同構成(R,G,B)表示一個像素,直至提取完整張紋理圖片中所有像素,獲取紋理文件完整的RGB信息,最后提取RGB文件或RGBA文件的顏色數據,其中,為使RGB文件和RGBA文件的顏色數據格式相同,便于算法兼容,對于沒有Alpha通道的RGB圖片種類,則將Alpha數據值設置為255,隨后將各個紋理文件RGB數據與Alpha數據合并,構成紋理圖片新的RGBA數據。
3.根據權利要求2所述的一種用于三維模型的小紋理聚合自動映射方法,其特征在于,所述步驟S2的具體步驟為:
4.根據權利要求
5.根據權利要求4所述的一種用于三維模型的小紋理聚合自動映射方法,其特征在于,所述步驟S302的具體步驟為:將單張紋理進行基于面積從大到小的排列,引入空閑邊概念,空閑邊是指進行合并時能夠用小紋理的某一邊與之鄰接的邊,依據空閑邊使用小紋理的長邊進行貼邊,從小到大遍歷空閑邊,進行空閑邊的判優,判優規則為:先判斷空閑邊的長度,長度差值越大優先級越低,長度相同時優先級最高;確定好空閑邊長度之后,對長度相同的空閑邊再進行方向上的判優;對于水平方向的空閑邊,右邊空閑的優先級高于左邊空閑,對于垂直方向的空閑邊,上邊空閑的優先級高于下邊;若空閑邊長度和方向都相同,則按照遍歷空閑邊的先后順序確定優先級;隨后再進行紋理的越界判斷,判斷進行貼邊合并之后是否超出聚合紋理規定區域,找出最適合與小紋理的最長邊進行鄰接的邊,貼邊完畢確定并保存紋理此時的左下角坐標,完成一塊小紋理的貼邊后進行空閑邊的整理,再進行下一塊紋理的貼邊,直到所有的紋理完成貼邊。
6.根據權利要求4所述的一種用于三維模型的小紋理聚合自動映射方法,其特征在于,所述步驟S4的具體步驟為:
...【技術特征摘要】
1.一種用于三維模型的小紋理聚合自動映射方法,其特征在于,包括如下步驟:
2.根據權利要求1所述的一種用于三維模型的小紋理聚合自動映射方法,其特征在于,所述步驟s1的具體步驟為:將不同格式的紋理文件統一轉化為png格式文件;其中,對于jpg格式的文件,進行解析和rgb數據的提取;對于rgb格式或rgba格式的文件,首先分析rgb文件或rgba文件的rgb信息,獲得rgb格式16進制文件,并對各通道數據分塊存儲,其次分別從各通道數據塊中提取相對位置相同的三個字節數據共同構成(r,g,b)表示一個像素,直至提取完整張紋理圖片中所有像素,獲取紋理文件完整的rgb信息,最后提取rgb文件或rgba文件的顏色數據,其中,為使rgb文件和rgba文件的顏色數據格式相同,便于算法兼容,對于沒有alpha通道的rgb圖片種類,則將alpha數據值設置為255,隨后將各個紋理文件rgb數據與alpha數據合并,構成紋理圖片新的rgba數據。
3.根據權利要求2所述的一種用于三維模型的小紋理聚合自動映射方法,其特征在于,所述步驟s2的具體步驟為:
4.根據權利要求3所述的一種用于三維模型的小紋...
【專利技術屬性】
技術研發人員:孫卡,吳旭東,涂家豪,萬俊杰,彭彬,聶鵬承,薛元,艾代林,
申請(專利權)人:江西省軍民融合研究院,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。