System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及數據處理,具體而言,涉及頂點位置確定方法、電子設備、存儲介質及計算機程序。
技術介紹
1、隨著地理信息技術的發展,cesium作為高性能的三維地圖展示平臺應運而生。cesium是一個開源的javascript庫,用于創建交互式的三維地球地圖。
2、在cesium拾取模式下,通過cpu射線拾取方法確定模型中的目標位置時受到浮點運算精度的限制,導致拾取的空間位置不夠準確。
技術實現思路
1、本申請實施例的目的在于提供一種頂點位置確定方法、電子設備、存儲介質及計算機程序,用以通過拾取對象類型確定深度測試范圍,并基于拾取位置,在深度測試范圍內進行深度測試,以確定拾取位置的頂點,提高頂點位置確定的準確性。
2、第一方面,本申請實施例提供一種頂點位置確定方法,該方法包括:獲取地圖的拾取信息;拾取信息包括拾取位置和拾取對象類型;拾取信息為對地圖上的某個點進行觸發生成;基于拾取對象類型確定深度測試范圍;根據拾取位置,按深度測試范圍進行深度測試;若深度測試范圍不存在預設深度范圍的待選頂點,則擴大深度測試范圍,并對擴大后的深度測試范圍再次深度測試,直至獲得待選頂點;利用待選頂點確定頂點位置。
3、本申請實施例通過拾取對象類型確定深度測試范圍,并基于拾取位置,在深度測試范圍內進行深度測試的過程中,若當前的深度測試范圍內未找到符合要求的待選頂點時,擴大深度測試范圍,并再次執行深度測試,以從符合要求的待選頂點中確定頂點的位置。由于在這個過程中,是從待選頂點中確定
4、在一些實施例中,利用待選頂點確定頂點位置,包括:若待選頂點為一個,則將待選頂點進行渲染,以確定頂點位置;若待選頂點為多個,則計算每個待選頂點與拾取位置的距離,將與拾取位置距離最小的待選頂點進行渲染,以確定頂點位置。
5、本申請實施例在只有一個待選頂點時,直接對該待選頂點進行渲染,在存在多個待選頂點時,將距離拾取位置最近的待選頂點進行渲染,以確定拾取位置的頂點位置。由于在存在多個時,是將距離最小的待選頂點作為最終確定的頂點,提高了頂點位置確定的準確性。
6、在一些實施例中,計算每個待選頂點與拾取位置的距離,包括:基于每個待選頂點的深度信息和屏幕坐標計算每個待選頂點的世界坐標;通過每個待選頂點的世界坐標和拾取位置的世界坐標計算每個待選頂點與拾取位置的距離。
7、本申請實施例考慮到待選頂點存在深度的原因,屏幕像素很近,但深度相差太遠,導致最后計算的距離并不是真實的物理距離,因此將待選頂點從屏幕空間的二維像素位置反推到三維空間中的世界坐標,并在世界坐標系下計算待選頂點和拾取位置的距離,使得計算獲得的距離不受深度影響,以此提高頂點位置確定的準確性。
8、在一些實施例中,計算每個待選頂點的世界坐標的公式如下:
9、ndx=(px/height)*2-1
10、ndy=-(py/width)*2+1
11、ndcposition=(ndx,ndy,d,1)
12、worldposition=viewprojectioninversematrix*ndcposition
13、其中,(px,py)表示待選頂點的屏幕像素坐標,height表示地圖的屏幕高度,width表示地圖的屏幕寬度,ndcposition表示待選頂點的標準化設備坐標,(ndx,ndy)表示所述待選頂點的屏幕像素坐標(px,py)在標準化設備坐標系中的對應值,d表示待選頂點的深度信息,worldposition表示待選頂點的世界坐標,viewprojectioninversematrix表示地圖當前的投影矩陣的逆矩陣。
14、在一些實施例中,在根據拾取位置,按深度測試范圍進行深度測試之前,該方法還包括:將拾取位置的渲染模式更改為頂點渲染模式。
15、本申請實施例考慮到不同的渲染方式對拾取位置的頂點位置確定存在影響,因此,在進行深度測試之前,將渲染方式更改為頂點渲染方式,使得深度測試的結果只包含頂點信息,從而有效地拾取地圖中的頂點,以此提高頂點位置確定的準確性。
16、在一些實施例中,在利用待選頂點確定頂點位置之后,該方法還包括:將拾取位置與頂點位置之間的映射關系進行存儲。
17、本申請實施例通過將拾取位置和確定的頂點位置之間的映射關系進行存儲,使得在下次點擊相同的拾取位置時,可以快速地確定頂點位置,提高頂點位置確定的效率。
18、在一些實施例中,該方法還包括:若擴大后的深度測試范圍大于預設最大深度測試范圍,則進行告警提示。
19、本申請實施例通過設置最大深度測試范圍,表明并不是無限的對深度測試范圍進行擴大,而合理擴大深度測試范圍使得最終確定的頂點位置是合理的頂點位置,以此提高頂點位置確定的合理性。
20、第二方面,本申請實施例提供一種頂點位置確定裝置,該裝置包括:獲取模塊,用于獲取地圖的拾取信息;拾取信息包括拾取位置和拾取對象類型;拾取信息為對地圖上的某個點進行觸發生成;第一確定模塊,用于基于拾取對象類型確定深度測試范圍;深度測試模塊,用于根據拾取位置,按深度測試范圍進行深度測試;擴大模塊,用于若深度測試范圍不存在預設深度范圍的待選頂點,則擴大深度測試范圍,并對擴大后的深度測試范圍再次深度測試,直至獲得待選頂點;第二確定模塊,用于利用待選頂點確定頂點位置。
21、第三方面,本申請實施例提供一種電子設備,包括:處理器、存儲器、存儲介質和總線,其中,所述處理器和所述存儲器通過所述總線完成相互間的通信;所述存儲器存儲有可被所述處理器執行的程序指令,所述處理器調用所述程序指令能夠執行第一方面的方法步驟。
22、第四方面,本申請實施例提供一種非暫態計算機可讀存儲介質,包括:所述計算機可讀存儲介質存儲計算機指令,所述計算機指令使所述計算機執行第一方面的方法步驟。
23、第五方面,本申請實施例提供一種計算機程序產品,包括:計算機程序,所述計算機程序被處理器運行時執行第一方面的方法步驟。
24、本申請的其他特征和優點將在隨后的說明書闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本申請實施例了解。
本文檔來自技高網...【技術保護點】
1.一種頂點位置確定方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述利用所述待選頂點確定頂點位置,包括:
3.根據權利要求2所述的方法,所述計算每個所述待選頂點與所述拾取位置的距離,包括:
4.根據權利要求3所述的方法,其特征在于,計算每個所述待選頂點的世界坐標的公式如下:
5.根據權利要求1所述的方法,其特征在于,在所述根據所述拾取位置,按所述深度測試范圍進行深度測試之前,所述方法還包括:
6.根據權利要求1所述的方法,其特征在于,在所述利用所述待選頂點確定頂點位置之后,所述方法還包括:
7.根據權利要求1-6任一所述的方法,其特征在于,所述方法還包括:
8.一種電子設備,其特征在于,包括:處理器和存儲器,所述存儲器存儲有所述處理器可執行的機器可讀指令,所述機器可讀指令被所述處理器執行時執行如權利要求1至7任一所述的方法。
9.一種計算機可讀存儲介質,其特征在于,該計算機可讀存儲介質上存儲有計算機程序,該計算機程序被處理器運行時執行如權利要求1至7任一
10.一種計算機程序產品,其特征在于,包括:計算機程序,所述計算機程序被處理器運行時執行如權利要求1至7任一所述的方法。
...【技術特征摘要】
1.一種頂點位置確定方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述利用所述待選頂點確定頂點位置,包括:
3.根據權利要求2所述的方法,所述計算每個所述待選頂點與所述拾取位置的距離,包括:
4.根據權利要求3所述的方法,其特征在于,計算每個所述待選頂點的世界坐標的公式如下:
5.根據權利要求1所述的方法,其特征在于,在所述根據所述拾取位置,按所述深度測試范圍進行深度測試之前,所述方法還包括:
6.根據權利要求1所述的方法,其特征在于,在所述利用所述待選頂點確定頂點位置之后,...
【專利技術屬性】
技術研發人員:盛朗,冷江林,陳國銳,蒲陽林,田益,王臻宇,
申請(專利權)人:睿宇時空科技重慶股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。