欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種在三維場(chǎng)景中渲染文字的方法與流程

文檔序號(hào):11922498閱讀:607來源:國(guó)知局
一種在三維場(chǎng)景中渲染文字的方法與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種在三維場(chǎng)景中渲染文字的方法。



背景技術(shù):

三維模型廣泛用任何使用三維圖形的地方。實(shí)際上,它們的應(yīng)用早于個(gè)人電腦上三維圖形的流行。許多計(jì)算機(jī)游戲使用預(yù)先渲染的三維模型圖像作為sprite用于實(shí)時(shí)計(jì)算機(jī)渲染。

現(xiàn)在,三維模型已經(jīng)用于各種不同的領(lǐng)域。在醫(yī)療行業(yè)使用它們制作器官的精確模型;電影行業(yè)將它們用于活動(dòng)的人物、物體以及現(xiàn)實(shí)電影;視頻游戲產(chǎn)業(yè)將它們作為計(jì)算機(jī)與視頻游戲中的資源;在科學(xué)領(lǐng)域?qū)⑺鼈冏鳛榛衔锏木_模型;建筑業(yè)將它們用來展示提議的建筑物或者風(fēng)景表現(xiàn);工程界將它們用于設(shè)計(jì)新設(shè)備、交通工具、結(jié)構(gòu)以及其它應(yīng)用領(lǐng)域;在最近幾十年,地球科學(xué)領(lǐng)域開始構(gòu)建三維地質(zhì)模型。

三維模型本身是不可見的,可以根據(jù)簡(jiǎn)單的線框在不同細(xì)節(jié)層次渲染的或者用不同方法進(jìn)行明暗描繪(shaded)。但是,許多三維模型使用紋理進(jìn)行覆蓋,將紋理排列放到三維模型上的過程稱作紋理映射。紋理就是一個(gè)圖像,但是它可以讓模型更加細(xì)致并且看起來更加真實(shí)。

三維文字渲染在三維模型中也有廣泛的應(yīng)用,但是三維引擎中原有的文字渲染方式只能渲染在屏幕固定位置上,無法達(dá)到在三維場(chǎng)景內(nèi)任意位置渲染的要求。為了實(shí)現(xiàn)在三維場(chǎng)景中任意位置渲染文字,在三維場(chǎng)景中構(gòu)建網(wǎng)格建立模型,生成對(duì)應(yīng)文字的紋理圖片,把紋理與模型結(jié)合,使用渲染模型的方式(通過GPU固定管線提交紋理,提交對(duì)應(yīng)的頂點(diǎn)與紋理坐標(biāo))來渲染文字。并且考慮內(nèi)存的消耗與渲染的壓力,需要對(duì)文字紋理實(shí)行最大程度的復(fù)用。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明針對(duì)現(xiàn)有技術(shù)中硬件要求高、渲染效率低的缺點(diǎn),提供了一種在三維場(chǎng)景中渲染文字的方法。

為了解決上述技術(shù)問題,本發(fā)明通過下述技術(shù)方案得以解決。

一種在三維場(chǎng)景中渲染文字的方法,包括如下步驟:

(1)獲取到字符串后,將字符串拆分成一個(gè)個(gè)字符,然后拆分后的字符按照實(shí)體字符和格式字符分成兩類,格式字符用于格式對(duì)齊,實(shí)體字符用于渲染;

(2)將步驟(1)拆分字符串中的每一個(gè)實(shí)體字符為一個(gè)獨(dú)立單元,通過獲取的三維空間信息中,包括的文字渲染的中心點(diǎn)坐標(biāo),根據(jù)中心點(diǎn)坐標(biāo)為每一獨(dú)立單元在三維空間中構(gòu)建網(wǎng)格并建立模型;

(3)對(duì)每一類文字字體創(chuàng)建一個(gè)管理對(duì)象,每個(gè)管理對(duì)象為每類字體的字庫(kù),用于管理已經(jīng)生成的用于表現(xiàn)實(shí)體字符可視效果的紋理,在管理過程中對(duì)多個(gè)字符產(chǎn)生的紋理數(shù)據(jù)進(jìn)行合并,得到一個(gè)大紋理,并且記錄了紋理被合并的字符的紋理貼圖信息;

(4)每一個(gè)獨(dú)立單元內(nèi)的字符,在字符對(duì)應(yīng)文字字體的字庫(kù)中,進(jìn)行查找對(duì)應(yīng)的紋理貼圖信息,查找到時(shí),把查找到的紋理貼圖信息與構(gòu)建的網(wǎng)格對(duì)應(yīng);如果未查找到,實(shí)時(shí)生成所需紋理貼圖,把生成的紋理貼圖信息導(dǎo)入字庫(kù)管理,并把生成的紋理貼圖信息與構(gòu)建的網(wǎng)格模型對(duì)應(yīng);

(5)最后根據(jù)步驟(2)構(gòu)建的網(wǎng)格模型和步驟(4)生成的紋理貼圖信息,通過圖形API向GPU提交渲染指令,把文字渲染在三維場(chǎng)景中。

作為優(yōu)選,步驟(1)中,實(shí)體字符為文字和標(biāo)點(diǎn)符號(hào),需要被渲染;格式字符為空格符和換行符,不需要被渲染。

作為優(yōu)選,步驟(2)中,構(gòu)建網(wǎng)格的過程為將三個(gè)頂點(diǎn)之間連線,構(gòu)建成一個(gè)三角面片。

作為優(yōu)選,步驟(3)中,紋理貼圖信息包括紋理位置信息和紋理大小。

本發(fā)明由于采用了以上技術(shù)方案,具有顯著的技術(shù)效果:

本發(fā)明解決了在三維場(chǎng)景中任意位置渲染文字的需求。通過在三維場(chǎng)景中構(gòu)建網(wǎng)格使文字成為模型,并給模型對(duì)應(yīng)紋理,使文字更簡(jiǎn)便地可以直接使用GPU渲染固定管線進(jìn)行渲染。并對(duì)所有文字紋理進(jìn)行了合并工作,使紋理可以得到復(fù)用,減少CPU向GPU提交紋理數(shù)據(jù)的次數(shù),降低了渲染的時(shí)間消耗,使文字渲染更高效。

附圖說明

圖1是本發(fā)明一種在三維場(chǎng)景中渲染文字的方法的流程示意圖;

圖2是本發(fā)明一種在三維場(chǎng)景中渲染文字的方法的效果示意圖。

具體實(shí)施方式

下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。

如圖1至圖2所示,一種在三維場(chǎng)景中渲染文字的方法,包括如下步驟:

(1)獲取到字符串后,將字符串拆分成一個(gè)個(gè)字符,然后拆分后的字符按照實(shí)體字符和格式字符分成兩類,格式字符用于格式對(duì)齊,實(shí)體字符用于渲染,實(shí)體字符為文字和標(biāo)點(diǎn)符號(hào),需要被渲染;格式字符為空格符和換行符,不需要被渲染;

(2)將步驟(1)拆分字符串中的每一個(gè)實(shí)體字符為一個(gè)獨(dú)立單元,通過獲取的三維空間信息中,包括的文字渲染的中心點(diǎn)坐標(biāo),根據(jù)中心點(diǎn)坐標(biāo)為每一獨(dú)立單元在三維空間中構(gòu)建網(wǎng)格并建立模型,構(gòu)建網(wǎng)格的過程為將三個(gè)頂點(diǎn)之間連線,構(gòu)建成一個(gè)三角面片;

(3)對(duì)每一類文字字體創(chuàng)建一個(gè)管理對(duì)象,每個(gè)管理對(duì)象為每類字體的字庫(kù),用于管理已經(jīng)生成的用于表現(xiàn)實(shí)體字符可視效果的紋理,在管理過程中對(duì)多個(gè)字符產(chǎn)生的紋理數(shù)據(jù)進(jìn)行合并,得到一個(gè)大紋理,并且記錄了紋理被合并的字符的紋理貼圖信息,紋理貼圖信息包括紋理位置信息和紋理大?。?/p>

(4)每一個(gè)獨(dú)立單元內(nèi)的字符,在字符對(duì)應(yīng)文字字體的字庫(kù)中,進(jìn)行查找對(duì)應(yīng)的紋理貼圖信息,查找到時(shí),把查找到的紋理貼圖信息與構(gòu)建的網(wǎng)格對(duì)應(yīng);如果未查找到,實(shí)時(shí)生成所需紋理貼圖,把生成的紋理貼圖信息導(dǎo)入字庫(kù)管理,并把生成的紋理貼圖信息與構(gòu)建的網(wǎng)格模型對(duì)應(yīng);

(5)最后根據(jù)步驟(2)構(gòu)建的網(wǎng)格模型和步驟(4)生成的紋理貼圖信息,通過圖形API向GPU提交渲染指令,把文字渲染在三維場(chǎng)景中。

字符串由一個(gè)個(gè)獨(dú)立的字符組成,其中可以根據(jù)作用不同將字符分成實(shí)體字符和格式字符兩類,格式字符是用于格式對(duì)齊的字符,實(shí)體字符需要被渲染。每一個(gè)實(shí)體字符為一個(gè)獨(dú)立單元,通過對(duì)應(yīng)的三維場(chǎng)景坐標(biāo),為每一獨(dú)立單元在三維場(chǎng)景中創(chuàng)建頂點(diǎn),構(gòu)建網(wǎng)格,建立具體的三維模型。每一個(gè)實(shí)體字符還需要生成對(duì)應(yīng)的紋理,來表現(xiàn)具體字符的可視效果。為每一類文字字體創(chuàng)建一個(gè)管理已經(jīng)生產(chǎn)的所有紋理的管理對(duì)象,這里簡(jiǎn)稱為字庫(kù)。在字庫(kù)中保存了具體的紋理,這個(gè)紋理為多個(gè)字符生產(chǎn)的紋理數(shù)據(jù)進(jìn)行合并得到的大紋理,字庫(kù)還管理了當(dāng)前已生產(chǎn)的所有字符對(duì)應(yīng)的紋理信息,包括存在于這個(gè)大紋理中的紋理坐標(biāo)與大小。實(shí)體字符通過字庫(kù)查找紋理信息,如未查找到,實(shí)時(shí)生成紋理數(shù)據(jù),導(dǎo)入字庫(kù)管理,進(jìn)行紋理合并后,獲取紋理信息。把獲取的紋理信息與構(gòu)建的模型對(duì)應(yīng),為模型的每個(gè)網(wǎng)格頂點(diǎn)給定對(duì)應(yīng)的紋理坐標(biāo)。最后通過圖形API向GPU提交渲染指令,把文字渲染在三維場(chǎng)景中。

實(shí)施例1

在三維場(chǎng)景中坐標(biāo)為(0.0,0.0,0.0)的位置上,需要渲染文字“一種在三維場(chǎng)景中渲染文字的方法”。先把這個(gè)字符串拆分為15個(gè)獨(dú)立字符。這15個(gè)字符都屬于實(shí)體字符。為每一個(gè)字計(jì)算出在三維場(chǎng)景中構(gòu)建模型所需要的頂點(diǎn),使用這些頂點(diǎn),構(gòu)建成一個(gè)模型。這15個(gè)字都是不同的,所以為每一個(gè)字生成一張紋理,并把這15張紋理合并為一張,記錄下每一個(gè)字對(duì)應(yīng)的紋理在合并后紋理中的坐標(biāo)位置。把這15個(gè)字的模型與紋理坐標(biāo)位置一一對(duì)應(yīng)起來。先通過圖形API向GPU提交合并的那張大紋理,然后挨個(gè)提交這15個(gè)字對(duì)應(yīng)的模型與紋理坐標(biāo),通過GPU渲染固定管線將最終效果渲染出來。

總之,以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所作的均等變化與修飾,皆應(yīng)屬本發(fā)明專利的涵蓋范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
东兰县| 红桥区| 石景山区| 托克托县| 金塔县| 定南县| 如东县| 依安县| 河北区| 胶南市| 凤阳县| 苍南县| 崇仁县| 安宁市| 缙云县| 永嘉县| 临城县| 县级市| 漾濞| 平陆县| 福泉市| 梧州市| 苍溪县| 顺平县| 芜湖市| 石棉县| 阳朔县| 香格里拉县| 乾安县| 新巴尔虎左旗| 深泽县| 昌都县| 策勒县| 沁源县| 始兴县| 桂林市| 永昌县| 萝北县| 高青县| 竹北市| 武功县|