Python實現3D建模工具
本課程由ekCit發布在實驗樓,完整教程及在線練習地址:Python實現3D建模工具
一、課程介紹
1. 內容簡介
本課程將基於OpenGL實現一般CAD軟體都會具備的基礎功能:渲染顯示3D空間的畫面並可以操作3D空間中物體。
2. 課程知識點
本課程項目完成過程中,我們將學習:
- OpenGL坐標系的轉換
- 實現簡單的用戶輸入事件回調機制
- 設計模式中組合模式的使用
- 基於包圍盒的碰撞檢測
3. 課程來源
本課程核心部分來自《500 lines or less》項目,作者是 Erick,Erick從事電子遊戲,3D特效軟體,CAD軟體的開發。課程內容在原文檔基礎上做了許多修改,增加了部分原理介紹,步驟的拆解分析及源代碼注釋。
二、實驗說明
1. 背景介紹
人類是那麼得有創造力,我們創造、發明、設計、生產了一切大自然沒有直接給予我們的東西使我們的生活變得更輕鬆更美好。在過去,我們只能在圖紙上進行產品的創造與設計,而現在,有了計算機的幫助,有了CAD(計算機輔助設計)軟體,大大節省了我們的精力與時間成本,使我們的工作更高效,能夠擁有更多時間去思考設計本身。
那麼CAD軟體是如何寫出來的呢?CAD軟體種類繁多,但它們有一個共同的特點,就是對三維世界的建模,對三維世界中物體的控制,對三維設計的展示。
這,就是本課程要實現的內容了。
2. 實驗工具
渲染流程決定了設計是如何呈現在屏幕上的,我們希望程序能為我們處理複雜的物體,同時我們也希望代碼的複雜度能夠儘可能得低。這些我們該如何做到呢?
在渲染畫面之前,我們首先需要新建一個窗口,並且我們不希望直接操作圖形驅動來生成畫面,所以我們選擇跨平台圖形介面OpenGL與OpenGL的工具庫GLUT來幫助我們管理窗口和渲染畫面。
關於OpenGL
OpenGL是開發跨平台圖形應用的介面標準,當前的OpenGL編程分為兩類:現代OpenGL與傳統OpenGL。
傳統OpenGL採用固定管線的形式。通過對一系列全局變數的賦值,你可以啟動或者禁止一些渲染流水線上的工作,比如光照,著色,隱面剔除等,之後自動地根據流水線進行畫面渲染,固定管線的編程形式現在已經不推薦使用了。
現代OpenGL採用可編程管線的形式,我們只需編寫稱作shaders的小程序運行即可。可編程管線已經替代了固定管線。
但是在本課程中,我們仍然使用傳統OpenGL,因為固定管線能夠減少代碼量,並且要求的線性代數知識也更少。
關於GLUT
在本課程中,GLUT負責創建窗口與註冊用戶介面的回調函數(處理鍵盤輸入、滑鼠輸入等),如果需要一個功能更全面的窗口管理庫,推薦使用GTK或者QT。
三、項目效果圖
本項目的詳細教程和代碼詳解,可在實驗樓中查看並在線完成,立即【開始實驗】
更多Python經典項目:Python全部 - 課程
推薦閱讀:
※Flask模板引擎:Jinja2語法介紹
※OpenCV:圖片操作基本知識(二)
※數據分析入門必看案例:泰坦尼克號倖存率研究
※深入淺出區塊鏈(1)介紹
※基於TCP的python聊天程序