計算機三維建模

2022-11-23 18:12:04 字數 2598 閱讀 7939

2、建立粒子屬性變化規律;

3、將產生的新粒子加入系統中(初始化粒子);

4、賦予每一新粒子一定的屬性(更新粒子),並將其生命週期遞減一時間步;

5、刪去那些已經超過生存期的粒子;

6、根據粒子的動態屬性對粒子進行移動和變換;

7、繪製並顯示由有生命的粒子組成的影象;

步驟3~7反覆迴圈即形成物體的動態變化過程

三、 粒子系統的生命週期

每一粒子的生命週期如圖:

四、 常見的粒子運動模型

粒子運動中粒子產生的時候都具有一定的初始屬性,粒子作為質點,按照動力學的規律進行運動。以下是幾種常見的運動形式[1]:

(1)直線運動,粒子的位置和速度變化遵循下面的原則所示:

p=p0+∫vdt, v=v0+∫adt

其中 p 為粒子位置,p0 為粒子初始位置,v 為粒子速度,v0 為初始速度,a 為粒子加速度。

(2) 阻尼運動,在當前運動方向上的粒子根據阻尼的作用,其速度根據某種比例減少,一般取值如下所示:

v=v0(1-d×△t)

其中 d 為阻尼運動的阻尼因子,d=[0, 1]。

(3) 螺旋運動,螺旋運動能按照給頂軸進行旋轉,以產生粒子的翻滾等效果,使速度方向發生改變。

(4) **運動,**運動能改變粒子運動速度的大小與方向。對於無能量損失的**運動,類似於光的反射,如下所示:

v0=v-2(v0·n)*n

其中 n 為反射面的方法向量。

五、 粒子系統的構成

(1) 發射器(槍)

發射器好比一把的槍,粒子往往是由這把槍產生並發射的,發射器將每個粒子的引數初始化,並且提供所有粒子共同的屬性引數(將粒子的共同屬性儲存在發射器而不是每個粒子裡面會很大的節省記憶體空間)。發射器的乙個重要引數是每個粒子的初始位置,一般而言,可能用到的發射器有點發射器(每個粒子都是從同一點發射),比如**的火花,噴泉等,如果粒子的產生有一定的範圍,那就需要矩形發射器[2],定義乙個確定的長寬,粒子在這個矩形範圍內隨機生成。比如一片沼澤中的霧氣,一片區域中的雨雪。

總體來說,發射器都具有一定的範圍引數,他給粒子的初始位置提供了最初的引數,發射器還儲存了其他很多類似的引數,比如粒子的速度範圍,透明度範圍,渲染方式,以及粒子型別。

(2) 粒子型別(子彈)

每乙個粒子都是槍裡的子彈,用何種子彈,將影響你的殺傷力,有些子彈細小,發射緩慢,有些子彈能夠迅速發射,而且威力巨大。要製造乙個基本粒子,你可以採用任何你想得到的可見元素,從乙個點到一條線、乙個面,甚至乙個模型,都有可能成為乙個基本粒子,但由於粒子系統的群體性特徵,你必須選擇最簡練,占用系統資源最少的型別。

(3) 粒子池(彈匣)

粒子池中儲存了粒子系統可能用到的所有粒子,並且用棧、鍊錶等資料結構快速產生、刪除粒子,它好比乙個彈匣,裡面放了所有備用的子彈,他比彈匣更強的是,發射完的子彈他還能找回來,下次繼續發射。我們知道在粒子系統中會有很多粒子不斷產生,消亡。如果每次產生乙個粒子,我們都要建立一塊記憶體來儲存這個粒子,每次粒子消亡我們都要刪掉它,這種操作將產生大量的開銷,影響粒子系統的整體執行速度。

利用乙個靜態的粒子陣列可以很好的解決這個問題,在粒子系統剛開始產生時,我們就申請一大塊記憶體區域,填充最大數量的粒子,我們稱這個儲存區域為粒子池。池中的每個粒子都有自己的編號,並且一開始我們把這些粒子的編號壓到乙個空閒棧中。在我們發射粒子時,我們從空閒棧中取出所需數量的粒子的編號,然後從靜態陣列中取得這個粒子。

粒子發射器賦予這些粒子新的引數,並且把他加入渲染鍊錶中。在粒子消亡以後,我們把死亡粒子的編號壓回空閒棧,並且從渲染鍊錶中刪除他。利用粒子池,我們無須頻繁申請和釋放記憶體,可以有效的模擬粒子的產生和消亡過程。

六、 粒子系統的基本實現

/** 粒子結構**/

struct particle

;/** 粒子類**/

class cparticle

;#include ""

/** 建構函式**/

cparticle::cparticle():m_inum(0),m_plist(null)

/** 析構函式**/

cparticle::~cparticle()

}/** 粒子的初始化**/

bool cparticle::init(int _num)

/** 粒子的渲染**/

void cparticle::render()

/** 粒子的更新**/

void cparticle::update()

七、 全文小結

全文介紹了粒子系統的基本概念、基本原理及生命週期,還有常見的粒子運動模型——直線運動、阻尼運動、螺旋運動及**運動幾種形式。以及對粒子系統構成的簡單介紹和粒子系統在程式設計上的的基本實現。

【參考文獻】

[1]方建文,於金輝,馬文龍.基於硬體加速和粒子系統的實時噴泉模擬[j].計算機工程與應用, 2006,4(14):117-120.

[2]李於劍.visual c++實踐與提高圖形影象程式設計篇[m],西安:機械工業出版社,2006:2-30.

[3]samuel 計算機圖形學(opengl版)[m],北京:清華大學出版社,2006.

[4]d**e shreiner. opengl程式設計指南[m],西安:機械工業出版社,2008.

[5]donald hearn.計算機圖形學(第三版)[m],北京:電子工業出版社,2005.

三維建模軟體簡介

隨著計算機的快速發展,使工業設計的計算機化達到了相當的水平。通過計算機進行資料分析 建立模型 匯入生產系統等等,在人類生活和生產的重要環節中,產生了越來越廣泛的影響,並由此引發新思想正逐漸滲透於工業設計學科領域中。計算機輔助產品設計是指在以計算機軟 硬體為依託,設計師在設計過程中憑藉計算機參與新產品...

NX三維建模規範

目錄1 範圍 1 2 規範性引用檔案 1 3 術語 1 4 三維建模的原則 3 5 三維建模的精度要求 3 5.1 曲線的精度。4 5.2 曲面的精度。4 6 三維建模的通用要求 4 6.1 繪圖單位 4 6.2 日期格式 4 6.3 圖層設定 4 6.4 線型 5 6.5 顏色 5 6.6 文字字...

三維建模課程標準

襄樊職業技術學院 三維動畫 教學大綱 課程標準 一 課程定位 三維動畫 是高職動漫設計專業的一門核心課程。動漫設計專業培養目標定位是為動畫製作公司 影視製作公司 遊戲製作公司和電視台培養動畫製作的專業技術性人才。三維動畫 主要培養學生在三維動畫製作中具備角色場景的建模能力 場景角色的材質的制定和製作...