計算機圖形學源碼
① TA學習筆記(幕布版)
TA學習筆記主要包含以下內容:
基礎理論:
- Games101:快速過後的作業補充筆記,部分未完成內容後續會補上。這部分筆記有助於理解計算機圖形學的基礎概念和原理。
- Games202:高質量實時渲染部分的筆記,涵蓋了實時渲染領域的重要知識和技術。
軟體學習:
- Houdini:初級教程的學習筆記,建議結合視頻教程,特別是英文教程一起學習,以更好地掌握這款強大的三維建模和動畫軟體。
- Substance Designer:官方入門教程的筆記,適合初學者快速上手這款材質設計軟體。
- World Creator:基礎教程的筆記,涵蓋了World Creator這款地形生成軟體的基本功能和操作。
引擎學習:
- Unreal:以實踐為主的學習筆記,重點記錄了空山新雨後教程的內容,並包含了後期的練習內容,有助於提升在Unreal引擎中的項目實踐能力。
實踐項目:
- TA百人計劃:從霜狼大佬的分享中收獲頗豐,評論區提供了豐富的作業和拓展資源,有助於深入理解和實踐TA領域的知識和技能。
語言學習:
總結:這份TA學習筆記涵蓋了從基礎理論到軟體學習、引擎實踐、項目實踐以及語言學習的多個方面,為學習者提供了全面的學習資源和指導。
② [vtk修煉之道 1] vtk簡介
Vtk簡介:
Vtk是一個專注於三維計算機圖形學、圖像處理和可視化領域的開源、免費軟體系統。以下是關於vtk的詳細介紹:
開源與免費:Vtk作為開源軟體,用戶可以自由獲取、使用和修改其源代碼,無需支付任何費用。
跨平台支持:Vtk支持多種操作系統,包括Windows和Unix等,極大地方便了用戶的使用和部署。
強大的三維圖形功能:Vtk支持體繪制和傳統的面繪制,能夠顯著改善可視化效果,並充分利用現有圖形庫和硬體資源。
高效的數據處理能力:具備流streaming和高速緩存caching能力,使得Vtk在處理大量數據時無需過多考慮內存資源限制。
良好的網路兼容性:與Java和VRML等基於網路的工具兼容,為Vtk的廣泛應用和發展提供了廣闊的前景。
多種著色方法支持:如OpenGL等,使得Vtk在圖形渲染方面具有更高的靈活性和表現力。
設備無關性與可移植性:Vtk的代碼具有良好的可移植性,能夠在不同硬體和操作系統上運行,同時官方提供了詳細的技術文檔和案例、教程。
豐富的數據類型支持:適用於物理科學、醫學成像和工程領域等多種應用場景。
開發流程:分為數據准備和渲染兩個階段。數據准備階段包括讀取數據和數據處理;渲染階段則將處理後的數據生成實體並在設定的渲染場景中展示,同時實現交互。
可視化流程組件:包括數據源、過濾器、映射器、Actor、Renderer、RenderWindow和RenderWindowInteractor等關鍵組件,它們共同構成了Vtk的可視化流程。
③ OpenGL基礎-C++|(一) 安裝與使用
OpenGL基礎-C++安裝與使用指南
要開始在C++中使用OpenGL,首先要對它有一個基本了解。參考書籍:《計算機圖形學編程(使用OpenGL和C++)(第2版)》。
1. 安裝和配置
在Visual Studio 2022環境中進行安裝與配置:
1.2 GLFW的准備
1.3 GLEW的准備
從指定地址獲取GLEW二進制文件,包含庫文件和頭文件。
1.4 GLM的准備
1.5 SOIL2的准備
在make/windows文件夾中,打開SOIL2.sln,選擇x64環境生成靜態庫。
1.6 配置文件結構
創建包含lib和include子文件夾的文件夾,存放這些庫和頭文件。
1.7 在VS中創建項目
在VS中,通過新建項目模板創建OpenGL C++項目,選擇OpenGL模板即可。在項目創建時,請確保glew32.dll文件放在項目目錄下。
1.8 測試配置:創建窗口
一個簡單的測試代碼,用於確認配置是否正確:
// 你的代碼片段
運行這段代碼,若顯示成功,說明安裝和配置都已完成。
④ 基於B-spline的軌跡優化
常見的全局路徑規劃演算法生成的路徑通常有很多拐點,對機器人運動不利,且增加控制復雜度。本文基於B-splines對ROS下的A*演算法進行優化,以生成更平滑路徑。
樣條作為分段多項式函數,廣泛用於插值數據點或近似函數、曲線和曲面。B樣條曲線是路徑平滑的強大工具,適用於計算機圖形學、計算機輔助設計等領域。
1 B-spline曲線
1.1 基函數
u為節點,p為次數。
1.2 B-spline
對於n+1個控制點,knot vector包含m+1個結點,B曲線表示為:一個n+1的控制點集合、一個m+1個結點的knot vector和一個次數p。需滿足條件m=n+p+1。例如,11個點(n=10),次數為3(p=3),則m=14。在路徑規劃中使用B樣條時,需採用clamped曲線,即第一個和最後一個點的knots數量為p+1。
2 Python實驗
3 A*與B-spline在ROS中的應用
在ROS模擬中,對A*生成的所有路徑點進行B樣條優化,出現move_base等待超時問題,初步判斷為原始路徑點過多,導致軌跡優化插件超過了move_base的等待時間。後來通過增加迭代過程,對原始點在一定間隔進行刪除再進行B樣條插值優化,生成路徑更平滑。
圖示中,綠色粗線代表原始路徑,紅色細線為優化後路徑。
源碼如下:
⑤ 快速求平方根倒數演算法的理解
平方根倒數速演算法(Fast Inverse Square Root),一種適用於快速計算積的算術平方根的倒數的演算法,通常應用於計算機圖形學領域,特別是用於計算照明和投影的波動角度與反射效果。此演算法最初可能由SGI在90年代初發明,並在1999年《雷神之錘III競技場》的源代碼中應用。該演算法顯著減少了求平方根倒數時浮點運算操作帶來的運算耗費。
演算法的精髓在於常數0x5f3759df,其作用是在計算平方根倒數時提供一個初始估計值。這段代碼的執行速度是"float(1.0/sqrt(x))"的4倍左右,盡管現代處理器已經不需要如此操作,但這個方法仍顯得非常有用。
在32位浮點數表示中,其存儲結構為1位符號位、8位指數位和23位尾數。計算平方根倒數速演算法的關鍵在於執行牛頓迭代法,其中的「魔數」用於計算一個初始估計。代碼中的第12、13行執行的就是牛頓法的過程。
快速求平方根演算法利用了切比雪夫最佳逼近原理,通過調整修正因子來優化計算過程。在計算中,「魔數」實際上是對一個正數進行某種調整後的結果。通過將浮點數的二進製表示與對數進行關系轉換,可以推導出魔數的具體來源,從而實現快速計算。
在《雷神之錘III競技場》源代碼中,使用了uint32_t類型來替代long,以適應現代64位操作系統的需要。現代編譯器可能對"*(long*) &y"這樣的寫法有所限制,因此推薦使用更安全的替代方法,如union、C++的reinterpret_cast或C++20的bit_cast。
總結,平方根倒數速演算法是計算機圖形學領域中一種高效的求平方根倒數方法。通過牛頓迭代法和特定的修正因子,該演算法能夠快速提供接近准確的計算結果。然而,隨著現代處理器技術的發展,這種方法的實用性逐漸降低,其主要學習價值在於演算法設計和優化技術。
⑥ 什麼是矢量文件
矢量文件是指一種以數學方式描述,在原製作軟體環境和庫文件的條件下,可通過計算機任意縮放但不損失細節的圖形文件。
矢量文件是一種用於計算機圖形學的電子文件,一些關鍵特性是矢量文件以數學點、坐標和形狀來描述圖形。矢量文件中的圖形很容易擴展為圖像,此外,矢量圖像文件類型在為列印項目創建美術時經常使用。
矢量圖像的優點
1、文件小,圖像中保存的是線條和圖塊的信息,所以矢量圖形文件與解析度和圖像大小無關,只與圖像的復雜程度有關,圖像文件所佔的存儲空間較小。
2、圖像可以無限級縮放,對圖形進行縮放,旋轉或變形操作時,圖形不會產生鋸齒效果。
3、可採取高解析度印刷,矢量圖形文件可以在任何輸出設備列印機上以列印或印刷的最高解析度進行列印輸出。
4、最大的缺點是難以表現色彩層次豐富的逼真圖像效果。
5、矢量圖與點陣圖的效果是天壤之別,矢量圖無限放大不模糊,大部分點陣圖都是由矢量導出來的,也可以說矢量圖就是點陣圖的源碼,源碼是可以編輯的。