一種立體圖形顯示的方法、裝置及設備與流程
2023-12-02 17:42:31 2

本申請涉及計算機技術領域,特別涉及立體圖形顯示的方法及裝置。
背景技術:
目前,在教學、繪圖等場景中,往往會涉及立體圖形輪廓的顯示。在顯示過程中,對於任一視角,我們所能看到的立體圖形的輪廓常常用實線顯示,被立體圖形遮擋的我們看不到的輪廓常常用虛線顯示。
現有技術中,通常以偽3d的方式來實現上述顯示效果,即:在特定的視角下,以2d繪圖的方式,手動繪製該視角下圖形的輪廓。以圖1所示的圓柱體為例,當以圖中特定角度俯視圓柱體的上底面時,下底的弧線abcdef被圓柱體遮擋,此時用虛線繪製,同時母線aa』以及母線ff』用實線繪製以顯示圓柱體的側面輪廓。可見,現有技術只能以特定視角來區分顯示立體圖形的輪廓,無法實時變換不同視角下圖形輪廓的可見性,用戶體驗較差。
技術實現要素:
本發明實施例提供立體圖形顯示的方法、裝置及設備,用於解決現有技術只能以特定視角顯示立體圖形的輪廓,用戶體驗較差的問題。
根據本發明實施例的第一方面,提供一種立體圖形顯示的方法,所述立體圖形輪廓包括底面輪廓和輪廓母線,所述方法包括:
在圖形用戶界面上顯示所述立體圖形;
接收對所述立體圖形的旋轉操作指令;
根據所述旋轉操作指令變換所述立體圖形顯示的視角;
隨所述立體圖形顯示視角的變化,實時確定所述底面輪廓在當前視角的可見部分與不可見部分、以及所述輪廓母線的位置;
根據所述輪廓母線的位置顯示所述輪廓母線,並將所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示。
根據本發明實施例的第二方面,提供一種立體圖形顯示的裝置,所述立體圖形輪廓包括底面輪廓和輪廓母線,所述裝置包括:
顯示單元,用於在圖形用戶界面上顯示所述立體圖形;
接收單元,用於接收對所述立體圖形的旋轉操作指令;
變換單元,用於根據所述旋轉操作指令變換所述立體圖形顯示的視角;
第一確定單元,用於隨所述立體圖形顯示視角的變化,實時確定所述底面輪廓在當前視角的可見部分與不可見部分;
第二確定單元,用於隨所述立體圖形顯示視角的變化,實時確定所述輪廓母線的位置;
所述顯示單元,還用於根據所述輪廓母線的位置顯示所述輪廓母線,並將所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示。
根據本發明實施例的第三方面,提供一種計算機設備,包括存儲器、處理器及存儲在存儲器上並可在處理器上運行的電腦程式,其特徵在於,所述處理器執行所述程序時實現以下步驟:
在圖形用戶界面上顯示所述立體圖形;
接收對所述立體圖形的旋轉操作指令;
根據所述旋轉操作指令變換所述立體圖形顯示的視角;
隨所述立體圖形顯示視角的變化,實時確定所述立體圖形的底面輪廓在當前視角的可見部分與不可見部分、以及所述立體圖形的輪廓母線的位置;
根據所述輪廓母線的位置顯示所述輪廓母線,並將所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示。
由以上技術方案可見,本發明實施例根據顯示視角的變化,實時確定立體圖形的底面輪廓在當前視角的可見部分與不可見部分以及立體圖形的輪廓母線的位置。實現了在三維旋轉操作的任一顯示視角中,對立體圖形的輪廓母線的顯示,以及對立體圖形底面輪廓的不可見部分與立體圖形輪廓的其它部分的區分顯示,其對立體圖形的顯示更直觀,用戶體驗較好。
附圖說明
圖1為一圓柱體在特定視角的透視圖;
圖2為本發明立體圖形顯示的方法的一個實施例流程圖;
圖3為本發明立體圖形顯示的方法的另一個實施例流程圖;
圖4為一圓柱體在特定視角的另一透視圖;
圖5為本發明立體圖形顯示的裝置所在設備的一種硬體結構圖;
圖6為本發明立體圖形顯示的裝置的一個實施例框圖。
具體實施方式
為了使本技術領域的人員更好的理解本發明實施例中的技術方案,並使本發明實施例的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖對本發明實施例中的技術方案作進一步詳細的說明。
參見圖2,圖2為本發明立體圖形顯示的方法的一個實施例流程圖,所述立體圖形輪廓包括底面輪廓和輪廓母線,所述方法包括以下步驟:
步驟201:在圖形用戶界面上顯示所述立體圖形。
本步驟中,上述立體圖形可以是圓柱、圓錐以及圓臺。
步驟202:接收對所述立體圖形的旋轉操作指令。
步驟203:根據所述旋轉操作指令變換所述立體圖形顯示的視角。
步驟204:隨所述立體圖形顯示視角的變化,實時確定所述底面輪廓在當前視角的可見部分與不可見部分、以及所述輪廓母線的位置。
在一個可選的例子中,可以預先在上述底面輪廓上按照固定的間隔設置節點,所述節點可將底面輪廓劃分為多個輪廓段。如果任一輪廓段兩頂點在當前視角均為可見,則判斷所述任一輪廓段在當前視角為可見,如果所述任一輪廓段兩頂點在當前視角不均為可見,則判斷所述任一輪廓段在當前視角為不可見。需要指出的是,上述用於設置節點的固定間隔決定了節點設置的密度,在考慮顯示設備圖像處理性能的情況下,這個固定間隔應儘量小,一個通常的值為10個像素點。
其中,對上述節點在當前視角可見性判斷可以藉助當前視角的投影矩陣以及三維引擎提供的命中測試來實現,具體的執行方式可以包括:通過當前視角的投影矩陣,確定上述節點在當前視角所對應投影平面的投影點;通過三維引擎提供的命中測試,確定上述投影點在上述立體圖形中的命中點;判斷上述命中點與上述節點是否滿足預設的近似重合條件;如果是,則判斷上述節點在當前視角為可見,如果否,則判斷上述節點在當前視角為不可見。
其中,預設的近似重合條件可以是關於命中點與節點在立體圖形中距離的一個預設閾值,當命中點與節點在立體圖形中的距離小於這個預設閾值時則判定命中點與節點近似重合;預設的近似重合條件也可以是關於命中點與節點在立體圖形中的三維坐標的預設誤差,當命中點的三維坐標與節點的三維坐標在任一維度的誤差小於這個預設誤差時則判定命中點與節點近似重合。
需要指出的是,上述關於距離的預設閾值應小於兩相鄰節點間的間隔距離;上述關於三維坐標的誤差閾值,應小於兩相鄰節點間的坐標差。一個通常的關於距離的預設閾值為1個像素距離。
在另一個可選的例子中,可以將與所述不可見節點相鄰的可見節點(以下簡稱轉折節點)與其對應點的連線,確定為所述輪廓母線的位置。需要指出的是,對於圓錐這樣僅有一個底面的立體圖形,僅需確定圓錐底面的轉折節點,該轉折節點即為所述輪廓母線的位置,連接轉折節點與圓錐的頂點即為所述輪廓母線,這裡圓錐的頂點即為上述對應點。對於圓臺或圓柱這樣有兩個底面的立體圖形,需分別確定每個底面節點的可見性,若兩個底面均存在轉折節點,則可以通過從屬於上下底面的轉折節點來確定輪廓母線的位置,這裡上下底面的轉折節點互為上述對應點;若僅有一個底面存在轉折節點,則可以在另一底面確定轉折節點的對應點,連接轉折節點及其對應點來確定輪廓母線的位置,其中,上述對應點的確定可以是通過做垂線的方式,以圓柱為例,假設圓柱的上底面完全可見,下底面存在轉折節點,下底面轉折節點在上底面的對應點的判斷方法可以是:在下底面轉折節點作該轉折節點所在底面的垂線,判定該垂線與上底面的交點為該轉折節點的對應點。
步驟205:根據所述輪廓母線的位置顯示所述輪廓母線,並將所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示。
本步驟中,上述區分展示可以是:
分別用實線和虛線對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示;
或,分別用不同透明度對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示;
或,分別用不同灰度對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示,其中,上述灰度可以是同一顏色的不同灰度也可以是不同顏色的不同灰度;
或,分別用不同顏色對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示;
或,分別用線條的不同粗細對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示。
由以上技術方案可見,本發明實施例根據顯示視角的變化,實時確定立體圖形的底面輪廓在當前視角的可見部分與不可見部分以及立體圖形的輪廓母線的位置。實現了在三維旋轉操作的任一顯示視角中,對立體圖形的輪廓母線的顯示,以及對立體圖形底面輪廓的不可見部分與立體圖形輪廓的其它部分的區分顯示,其對立體圖形的顯示更直觀,用戶體驗較好。
參見圖3,圖3為本發明立體圖形顯示的方法的另一個實施例流程圖,該實施例對立體圖形輪廓的展示過程進行了詳細說明,所述立體圖形輪廓包括底面輪廓和輪廓母線,所述方法包括:
步驟301:在圖形用戶界面上顯示該立體圖形,接收對該立體圖形的旋轉操作指令並按上述指令變換上述立體圖形的顯示視角。
本步驟中,上述立體圖形可以是圓柱、圓錐以及圓臺。
步驟302:隨該立體圖形顯示視角的變化,通過當前視角的投影矩陣,實時確定每一節點在當前視角所對應投影平面的投影點。
本步驟中,上述節點按照預設間隔設置在上述底面輪廓上,用以將上述底面輪廓劃分為多個輪廓段。需要指出的是,上述用於設置節點的固定間隔決定了節點設置的密度,在考慮顯示設備圖像處理性能的情況下,這個固定間隔應儘量小,一個通常的值為10個像素點。
步驟303:通過三維引擎提供的命中測試,實時確定上述投影點在上述立體圖形中的命中點。
下面,通過圖4來介紹本步驟301和步驟302中投影平面,投影點,以及命中點的概念。圖4中,點e是所示圓柱體預設節點中的一個節點(為便於說明,圖4隻列出了圓柱底面輪廓中的部分節點),按圖中所示展示視角,此時e點為不可見點。點e1為所示圓柱體側面上的一個點。如果將所示的圓柱體圖像看做一個在當前視角的透視圖,點e1在當前視角將遮擋點e,其中,上述透視圖所在的二維平面即為上述投影平面,點e在該透視圖(投影平面)的投影即為點e的投影點,點e1即為點e的投影點的命中點。
步驟304:實時計算上述節點與其對應命中點在立體圖形中的距離是否小於預設距離閾值,如果是,則執行步驟305,如果否,則執行步驟306。
本步驟中,上述預設距離閾值可以是固定值;也可以是隨立體圖形大小變化而變化的一個動態值。需要指出的是,上述關於距離的預設閾值應小於兩相鄰節點間的間隔距離。一個通常的關於距離的預設閾值為1個像素距離。
步驟305:判定上述節點在當前視角為可見。
步驟306:判定上述節點在當前視角為不可見。
步驟307:將與上述不可見節點相鄰的可見節點與其對應點的連線確定為上述輪廓母線的位置。
本步驟中,需要指出的是,如果上述立體圖形是圓錐這樣僅有一個底面的立體圖形,僅需確定圓錐底面的轉折節點,該轉折節點即為所述輪廓母線的位置,連接轉折節點與圓錐的頂點即為所述輪廓母線,這裡圓錐的頂點即為上述對應點。
對於圓臺或圓柱這樣有兩個底面的立體圖形,需分別確定每個底面節點的可見性,若兩個底面均存在轉折節點,則可以通過從屬於上下底面的轉折節點來確定輪廓母線的位置,這裡上下底面的轉折節點互為上述對應點;若僅有一個底面存在轉折節點,則可以在另一底面確定轉折節點的對應點,連接轉折節點及其對應點來確定輪廓母線的位置,其中,上述對應點的確定可以是通過做垂線的方式,以圓柱為例,假設圓柱的上底面完全可見,下底面存在轉折節點,下底面轉折節點在上底面的對應點的判斷方法可以是:在下底面轉折節點作該轉折節點所在底面的垂線,判定該垂線與上底面的交點為該轉折節點的對應點。
步驟308:判斷任一組相鄰節點在當前視角是否均為可見,如果是則執行步驟309,如果否則執行步驟310。
步驟309:判定上述任一組相鄰節點間的輪廓段在當前視角為可見。
步驟310:判定上述任一組相鄰節點間的輪廓段在當前視角為不可見。
步驟311:根據上述輪廓母線的位置顯示上述輪廓母線,並分別用實線和虛線對上述底面輪廓的不可見部分與上述立體圖形輪廓的其它部分區分顯示。
本步驟中,上述區分展示可以是:
分別用實線和虛線對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示;
或,分別用不同透明度對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示;
或,分別用不同灰度對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示,其中,上述灰度可以是同一顏色的不同灰度也可以是不同顏色的不同灰度;
或,分別用不同顏色對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示;
或,分別用線條的不同粗細對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示。
在另一個可選的例子中,除了分別用實線和虛線對上述底面輪廓的不可見部分與上述立體圖形輪廓的其它部分區分顯示,當用戶點擊立體圖形的任一表面時,還可以通過命中測試實現對用戶點擊的表面的判斷,同時對用戶點擊的表面與立體圖形的其它表面進行區分顯示,以圖4為例,具體可以包括以下步驟:
接收對圖4所示圓柱體的點擊操作指令;
通過三維引擎提供的命中測試,確定所述點擊操作指令的點擊點在所示圓柱體中的點擊命中點為e1;
在所示圓柱體的中,判斷所述點擊命中點e1所在的目標面為所示圓柱體的側面;
將所示圓柱體的側面進行著色顯示。
由以上技術方案可見,本發明實施例根據顯示視角的變化,實時確定立體圖形的底面輪廓在當前視角的可見部分與不可見部分以及立體圖形的輪廓母線的位置。實現了在三維旋轉操作的任一顯示視角中,對立體圖形的輪廓母線的顯示,以及對立體圖形底面輪廓的不可見部分與立體圖形輪廓的其它部分的區分顯示,其對立體圖形的顯示更直觀,用戶體驗較好。
下面通過一個具體的應用實例對本發明實施例進行說明,該應用實例結合圖4示出的圓柱體進行描述,其中,假設所示圓柱體可沿任意方向移動或任意軸旋轉,需要實時用實線顯示其可見輪廓,用虛線顯示其不可見輪廓。顯示過程如下:
在上述底面輪廓上按照10個像素點的固定的間隔設置節點,所述節點可將底面輪廓劃分為多個輪廓段;
在圖形用戶界面上顯示上述圓柱體,接收對該圓柱體的旋轉操作指令,根據上述旋轉操作指令變換該圓柱體顯示的視角;
隨所述圓柱體展示視角的變化,通過當前視角的投影矩陣m,實時確定所示圓柱體每一節點在當前視角所對應投影平面的投影點,以圖4所示視角以及頂點e為例,其投影點可表示為e*m;
通過三維引擎(wpfmedia3d)提供的命中測試,實時確定所示圓柱體每一節點在當前視角投影點的命中點,以圖4所示視角以及投影點e*m為例,通過命中測試,投影點e*m在所述立體圖形中的三維命中點為e1;
實時、分別計算所示圓柱體每一節點與其對應命中點在所述立體圖形中的像素距離是否小於1個像素,若是則判定所述頂點在當前視角為不可見,若否則判定所述頂點在當前視角為可見,以圖4所示視角以及頂點e為例,計算ee1的像素距離,在判斷ee1的像素距離小於1像素後,所以判定點h為不可見點;
根據所示圓柱體上各節點在當前視角的可見性,分別在圓柱體上底面或下底面判斷出與不可見節點相鄰的可見節點(以下簡稱轉折節點),確定所示圓柱體在當前視角的輪廓母線,以圖4所示視角為例,此時上底面所有節點可見,不存在轉折節點,下底面轉折節點為f和a,在點f和點a作下底面的垂線1和垂線2,找到垂線1和垂線2分別與上底面的交點f』及a』,f』f以及a』a即為所示圓柱體在當前視角的輪廓母線。
判斷每一組相鄰節點在當前視角是否均為可見,若是則判定上述任一組相鄰節點間的輪廓段在當前視角為可見,若否則判定上述任一組相鄰節點間的輪廓段在當前視角為不可見。以圖4所示視角以及所示圓柱體的下底面為例,處於弧線abcdef間的輪廓段為不可見輪廓段,處於弧線fghija間的輪廓段為可見輪廓;
實時顯示所確定的輪廓母線,以圖4所示視角為例,此時顯示上述輪廓母線f』f以及a』a;
實時、分別用實線和虛線對上述底面輪廓的不可見部分與上述立體圖形輪廓的其它部分區分顯示,以圖4所示視角以及所示圓柱體的下底面為例,弧線fghija以實線顯示,弧線abcdef以虛線顯示。
與前述立體圖形顯示的方法的實施例相對應,本申請還提供了立體圖形顯示的裝置的實施例。
本申請立體圖形顯示的裝置的實施例可以通過軟體實現,也可以通過硬體或者軟硬體結合的方式實現。以軟體實現為例,作為一個邏輯意義上的裝置,是通過其所在設備的處理器將非易失性存儲器中對應的電腦程式指令讀取到內存中運行形成的。從硬體層面而言,如圖5所示,為本申請立體圖形顯示的裝置所在設備的一種硬體結構圖,除了圖5所示的處理器、內存、網絡接口、以及非易失性存儲器之外,實施例中裝置所在的設備通常根據該設備的實際功能,還可以包括其他硬體,對此不再贅述。
請參考圖6,為本發明立體圖形顯示的裝置的一個實施例框圖,所述立體圖形輪廓包括底面輪廓和輪廓母線,所述裝置包括:顯示單元610,接收單元620,變換單元630,第一確定單元640,第二確定單元650。
顯示單元610,用於在圖形用戶界面上顯示所述立體圖形;
接收單元620,用於接收對所述立體圖形的旋轉操作指令;
變換單元630,用於根據所述旋轉操作指令變換所述立體圖形顯示的視角;
第一確定單元640,用於隨所述立體圖形顯示視角的變化,實時確定所述底面輪廓在當前視角的可見部分與不可見部分;
第二確定單元650,用於隨所述立體圖形顯示視角的變化,實時確定所述輪廓母線的位置;
所述顯示單元610,還用於根據所述輪廓母線的位置顯示所述輪廓母線,並將所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示。
由以上技術方案可見,本發明實施例根據顯示視角的變化,實時確定立體圖形的底面輪廓在當前視角的可見部分與不可見部分以及立體圖形的輪廓母線的位置。實現了在三維旋轉操作的任一顯示視角中,對立體圖形的輪廓母線的顯示,以及對立體圖形底面輪廓的不可見部分與立體圖形輪廓的其它部分的區分顯示,其對立體圖形的顯示更直觀,用戶體驗較好。
在一個可選的例子中,所述第一確定單元640包括(圖6中未示出):節點可見性確定子單元,輪廓段可見性判斷子單元。
節點可見性確定子單元,用於確定所述底面輪廓上每一節點在當前視角的可見性,所述節點按照預設間隔設置在所述底面輪廓上,用以將所述底面輪廓劃分為多個輪廓段;
輪廓段可見性判斷子單元,用於當任一輪廓段兩頂點在當前視角均為可見時,判斷所述任一輪廓段在當前視角為可見,當所述任一輪廓段兩頂點在當前視角不均為可見時,判斷所述任一輪廓段在當前視角為不可見。
在另一個可選的例子中,所述第二確定單元650包括(圖6中未示出):節點可見性確定子單元,輪廓母線位置確定子單元。
節點可見性確定子單元,用於確定所述底面輪廓上每一節點在當前視角的可見性,所述節點按照預設間隔設置在所述底面輪廓上,用以將所述底面輪廓劃分為多個輪廓段;
輪廓母線位置確定子單元,用於將與所述不可見節點相鄰的可見節點與其對應點的連線確定為所述輪廓母線的位置。
在另一個可選的例子中,所述節點可見性確定子單元包括(圖6中未示出):投影點確定子單元,命中點確定子單元,近似重合條件判斷子單元,可見性判定子單元。
投影點確定子單元,用於通過當前視角的投影矩陣,確定任一節點在當前視角所對應投影平面的投影點;
命中點確定子單元,用於通過三維引擎提供的命中測試,確定所述投影點在所述立體圖形中的命中點;
近似重合條件判斷子單元,用於判斷所述命中點與所述任一節點是否滿足預設的近似重合條件;
可見性判定子單元,用於當所述近似重合條件判斷子單元的判斷結果為是時,判定所述任一節點在當前視角為可見,當所述近似重合條件判斷子單元的判斷結果為否時,判定所述任一節點在當前視角為不可見。
在另一個可選的例子中,所述近似重合條件判斷子單元,具體用於:
通過計算所述任一節點與所述命中點在所述立體圖形中的距離,判斷所述命中點與所述任一節點是否滿足預設的近似重合條件;
或,
通過計算所述任一節點與所述命中點在所述立體圖形中的坐標差,判斷所述命中點與所述任一節點是否滿足預設的近似重合條件。
在另一個可選的例子中,所述顯示單元610,具體用於:
分別用實線和虛線對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示;
或,
分別用不同透明度對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示;
或,
分別用不同灰度對所述底面輪廓的不可見部分與所述立體圖形輪廓的其它部分區分顯示。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,在此不再贅述。
對於裝置實施例而言,由於其基本對應於方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本申請方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解並實施。
以上所述僅為本申請的較佳實施例而已,並不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的範圍之內。