終於完成了3D空間尋路的心願

2021-04-17 12:55:45 字數 505 閱讀 8056

主要工作有三:

一、資料組織。根據3d模型得到乙個pathmesh,這個pathmesh裡記錄了三角形與邊的鄰接資訊,邊與三角形的鄰接資訊,邊的端點,邊的方程(用於求解線段最短距離)。從而間接知道邊與邊的鄰接資訊。路徑點除了首尾,都通過邊來計算。這個資料容易得到。

二、路徑搜尋演算法。一開始使用a*演算法,路徑不是很好。因為評估函式不好寫,評估函式只能描述兩個點之間的空間距離,但是無法描述上下樓很難到達這樣的資訊。所以,a*演算法總會先走到目標點的樓下,然後在繞道到目標點。後來改用廣度優先搜尋,效果很好。考慮到3d空間中尋路,實際的節點數目不是很多,準備採用廣度優先搜尋。a*對我來說,也很容易。

三、路徑美化。這個就是一直以來的心病。因為pathmesh可能是各種各樣的樣子,導致路徑可能會非常難看,怎樣優化路徑使得看上去美,看上去聰明。至於演算法,示意圖見圖:

(怎麼傳?訊問中。。。)

struct

nodeinfo

void

mesh::fixpath(uint ntimes)

3D中的切線空間簡介

1 什麼是tangent space?tangent space和world space,view space其實是同樣的概念,均是代表三維座標系。在這個座標系中,x軸對應紋理座標的u方向,沿著該軸紋理座標u線性增大。y軸對應紋理座標的v方向,沿著該軸紋理座標v線性增大。z軸則是uxv,垂直於紋理平...

3D中的切線空間簡介

1 什麼是tangent space?tangent space和world space,view space其實是同樣的概念,均是代表三維座標系。在這個座標系中,x軸對應紋理座標的u方向,沿著該軸紋理座標u線性增大。y軸對應紋理座標的v方向,沿著該軸紋理座標v線性增大。z軸則是uxv,垂直於紋理平...

3D中的切線空間簡介

1 什麼是tangent space?tangent space和world space,view space其實是同樣的概念,均是代表三維座標系。在這個座標系中,x軸對應紋理座標的u方向,沿著該軸紋理座標u線性增大。y軸對應紋理座標的v方向,沿著該軸紋理座標v線性增大。z軸則是uxv,垂直於紋理平...