999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Havok引擎的物理碰撞與檢測技術的研究與實現

2021-11-03 13:21:34林海
現代信息科技 2021年8期

DOI:10.19850/j.cnki.2096-4706.2021.08.034

摘? 要:在Director開發(fā)平臺下首先對Havok引擎進行初始化,其次設置場景中的重力、模型質量、剛體等各方面的屬性,通過Havok引擎模擬真實的物理碰撞。最后對剛體與剛體、剛體與非剛體的碰撞檢測進行分析研究,得出結論:基于Havok引擎的物理碰撞與檢測技術在Director開發(fā)平臺下適合游戲開發(fā)、模擬復雜的物理現象等虛擬現實的制作。

關鍵詞:剛體;Havok引擎;碰撞檢測

中圖分類號:TP391.9? ? ? 文獻標識碼:A 文章編號:2096-4706(2021)08-0122-03

Research and Implementation of Physical Collision and Detection Technology?Based on Havok Engine

LIN Hai

(Zhanjiang Preschool Education College,Zhanjiang? 524084,China)

Abstract:Under the Director development platform,the Havok engine is initialized firstly,and then the gravity,model quality,rigid body and other attributes in the scene are set. The Havok engine simulates real physical collisions. Finally,the collision detection between rigid body and rigid body,rigid body and non-rigid body is analyzed and researched,and it is concluded that the physical collision and detection technology based on Havok engine is suitable for virtual reality production such as game development and simulation of complex physical phenomena under the Director development platform.

Keywords:rigid body;Havok engine;collision detection

0? 引? 言

近年來,碰撞與檢測技術[1,2]已經越來越成為三維虛擬現實、機器人、動畫仿真等領域研究的熱點,在目前成功的商業(yè)3D虛擬現實項目中,普遍采用的碰撞檢測是BSP樹與包裝盒相結合的方式。

基于BSP樹[3]的碰撞檢測主要應用于復雜形態(tài)模型的精確的碰撞檢測,但它需要很長的預處理時間,因此不適合加載時運算,BSP劃分經常會產生比原多邊形數多三到四倍的多邊形,即使不用保存顏色、法線、uv等物體信息也要增加將近一倍的內存容量。

基于包裝盒的碰撞檢測[4],主要應用于簡單形態(tài)或者可以視其為簡單形態(tài)的模型碰撞檢測。采用一個正方體或者球型體包裹住3D物體對象整體來代表物體,用于描述區(qū)域,之后根據描述區(qū)域的位置與距離等信息來檢測是否發(fā)生碰撞。

碰撞檢測技術[5]已成為計算幾何、計算機動畫、仿真機器人、CAD/CAM、3D游戲開發(fā)、物理仿真等領域中的一個熱點問題,而日趨復雜的虛擬環(huán)境的真實感和實時性對碰撞檢測提出了更高的要求,比如,虛擬人物在場景中可以自由移動,當遇到一定高度內的障礙物能夠走上去,而過高的障礙物則不能行走,遇到較小的斜坡可以走上去,陡坡過大則把人擋住,無法繼續(xù)行走。在各種前進方向被擋住的情況下,都要盡可能地讓人物沿合理的方向行走而不是直接卡住。滿足這些要求的同時,還要注意防止人物在某種檢測不到的情況下穿墻或掉出場景以外的區(qū)域。

本文以Director為開發(fā)平臺,實現Havok物理引擎的加載,并采用BSP樹及包裝盒方式的碰撞檢測技術,對場景建構以及對象的碰撞與檢測進行研究。

1? Havok Physics物理引擎簡介

Havok物理引擎全稱為Havok Game Dynamics,SDK,中文名為Havok游戲動力開發(fā)包。它將物理運動定律引入到虛擬場景中,增加了項目的交互性和互動性,內置了物理碰撞檢測函數,方便了游戲的開發(fā)。目前應用廣泛的物理引擎有Havok的Havok Physics物理引擎和NVIDIA的PhysX引擎,其中Havok Physics物理引擎是物理模擬計算引擎界的領軍者。

2? Director軟件簡介

Director是由美國Adobe公司開發(fā)的一款用于多媒體項目開發(fā)的功能全面的軟件。廣泛應用于CAI教學課件、網絡交互式等多媒體查詢系統(tǒng)、企業(yè)多媒體形象展示。Director有豐富的第三方工具集,比如數據庫插件,可以制作數據庫管理軟件等。其強大的Shockwave 3D引擎[6],能開發(fā)出生動形象的3D游戲。

3? 構建基于Havok引擎的真實的物理碰撞場景

Havok Physics開發(fā)中,首先需要定義各種不同的角色(actor),并對每個角色的形狀(shape)屬性和剛體(body)屬性進行設置;最后,把這些角色都加入到場景(scene)空間中,這樣就能構造出一個完整的虛擬實現世界。剛體可分為固定剛體、活動剛體兩類,固定剛體受到碰撞后不可動,活動剛體受到碰撞后將產生相應的運動。

本文以公路作為Havok物理引擎測試場景,設定2部汽車為活動剛體,公路和基圍欄為固定剛體研究Havok物理引擎各種的碰撞檢測和檢測機制。

3.1? 導入3DMAX場景模型

在3D MAX中制作出基礎場景模型后,導出為Shockwave 3D場景,生成擴展名為W3D的文件,在Director直接導入該文件,生成一個Shockwave 3D角色,如圖1所示。

在圖1中,小轎車為用戶可控制的車輛,名稱為“car”;出租車為靜止的車輛,名稱為“car2”;畫面右上角的紅色半透明面為路標檢測,用于判斷車輛是否通過該面,名稱為“pla”。

3.2? 設置虛擬場景的Havok屬性

3.2.1? 設置Havok初始參數

在Havok整合初步計算階段,進行物理對象的一些初始物理狀態(tài)的初始化,包括重力、場景模型等各項信息,為后面的運算做準備。主要語句為:

pMember = member(1)? --3D場景角色編號

pHavok = member(2)? -- pHavok場景角色編號

pHavok.initialize(pMember,1,1)–havok環(huán)境與Shockwave 3D環(huán)境通過初始化而建立連接,從而使在havok環(huán)境中的模擬運算可以影響Shockwave 3D模型。

phavok.gravity = vector( 0, 0, -386 )

--pHavok為場景的矢量重力大小,-386為向下的重力,值越大,剛體下落速度越快;值越小,剛體下落速度越慢。

3.2.2? 設置各模型的剛體屬性

剛體與常規(guī)表面不同,在模擬過程中,剛體會發(fā)生碰撞而不是彼此穿插。

小轎車模型的剛體屬性設置語句為:

pCar=pHavok.makeMovableRigidBody(“car”,1000)

說明:設置小轎車為活動剛體,質量為1000Kg,模擬了真實小轎車的重量,碰撞檢測方式為BSP樹。

出租車模型的剛體屬性設置語句為:

pHavok.makeMovableRigidBody(“car”,1000, true, #box)

說明:設置出租車為活動剛體,設置為活動剛體,1000Kg,碰撞檢測方式為包裝盒。

公路和路基的剛體屬性設置為固體剛體設置語句為:pHavok.makeFixedRigidBody(“Highway”,false)。

路標檢測的平面由于允許剛體穿越,所以不設置為剛體

3.2.3? 虛擬場景的真實模擬

加入幀腳本事件,開始虛擬場景的真實模擬。語句為:

on exitframe me

pHavok.step()--開始模擬

end

3.2.4? 控制小轎車的行駛

Havok為Director用戶提供了方便的角色控制行為庫,可以通過簡單的Drive model行為實現小轎車的模擬駕駛。圖2為Drive model行為的設置。

設置好行為后,小轎車可通過→、←、↑、↓四個方向鍵來控制汽車的行駛。

經過以上的幾步設置,小轎車已經具備剛體屬性已經可以在虛擬場景的公路中自由行駛,可以和其它剛體產生真實的碰撞效果而不會彼此穿越了。

4? Havok引擎物理碰撞檢測技術的應用

4.1? 剛體與剛體的碰撞檢測

剛體與剛體的碰撞檢測應用范圍廣泛,如:交通事故模擬、虛擬裝配、虛擬場景漫游等。剛體的碰撞檢測主要通過registerInterest函數實現。RegisterInterest將事件與模型綁定,當模型發(fā)生碰撞時呼叫它。

registerStepCallback是一個注冊碰撞檢測的處理程序,將在每一個物理模擬的副步(sub step)被呼叫一次。它通過精靈腳本事件進行注冊。本實例中主要檢測黃色小轎車的碰撞,注冊處理語句為:

pHavok.registerInterest( pCar.name, #all, 0, 0, #collisionHandler, me )

說明:pCar為小轎車剛體對象。檢測所有的剛體碰撞對象。

pHavok.registerStepCallback( #controlCharacter, me )

說明:將碰撞檢測的結果發(fā)回controlCharacter子程序中,將返回一個名稱為details的數組列表,再通過if語句來判斷在碰撞對象中是否有黃色小轎車“car2”的存在,語句為:

if chars(details[2],1,3)="car2" then

put details[2]

end if

4.2? 剛體與非剛體的碰撞檢測

剛體與非剛體產生碰撞后可以穿透非剛體對象,常用于一些路標檢測等監(jiān)測剛體是否到達指區(qū)域而又不影響剛體運動的情況,如賽車游戲中,對賽車通過路段的檢測。

首先要制作一個剛體的子對象,該子對象一直跟隨主剛體,但不設置為剛體屬性,只用于非剛體的碰撞檢測。該子象的設置語句為:

member("aaa").model("car2dl").parent=member("aaa").model("car2")

其次,開啟子對象”car2dl”的碰撞檢測,語句為:member("aaa").model(rwd).collision.enabled = true

最后,注冊碰撞檢測處理程序,語句為:

member("aaa").model("car2dl").collision.setCollisionCallback ( #mCollide, me )

說明:將碰撞檢測的結果發(fā)回mCollide子程序中,將返回一個名稱為collisionData的對象,再通過collisionData.modelB來判斷是否與子對象“car2dl”產生碰撞,語句為:

tWaypoint=collisionData.modelB

tName=tWaypoint.name

put tName

5? 結? 論

在Director開發(fā)平臺下首先通過pHavok.initialize語句實現Havok引擎的初始化,再設置場景中的重力,模型質量、剛體等各方面的屬性,最后通過pHavok.step()語句開始模擬真實的物理碰撞。在碰撞發(fā)生后通過pHavok.registerInterest語句實現剛體與剛體的碰撞檢測,通過collision.setCollisionCallback語句實現剛體與非剛體的碰撞檢測。基于Havok引擎的物理碰撞與檢測技術在Director開發(fā)平臺下的應用具有開發(fā)步驟簡便,效率高的特點,適合游戲開發(fā)、模擬復雜的物理現象等虛擬現實的制作。

參考文獻:

[1] 李政峰,王青霞,肖昱鋒.Unity3D碰撞檢測技術在電力設備虛擬裝配中的應用 [J].科學技術創(chuàng)新,2020(30):104-105.

[2] 張森森,金國棟,王五桂,等.船舶操縱模擬器三維視景場景構建及碰撞檢測 [J].船電技術,2020,40(S1):24–27.

[3] 孫巍,劉金義.基于物體級BSP樹的大規(guī)模室外場景渲染 [J].微處理機,2010,31(6):67–70+74.

[4] 陳華.確定任意形狀物體最小包圍盒的一種方法 [J].工程圖學學報,2010,31(2):49–53.

[5] 曲慧雁.復雜虛擬環(huán)境下的快速碰撞檢測技術研究 [D].長春:吉林大學,2020.

[6] 羅立宏,譚夏梅.基于ShockWave3D的Web虛擬現實技術研究 [J].科技資訊,2007(4):101–102.

作者簡介:林海(1976.10—),男,漢族,廣東湛江人,講師,本科,研究方向:虛擬現實技術,人工智能。

收稿日期:2021-03-05

課題項目:湛江幼兒師范專科學校校級課題(2019ZYCQ33)

主站蜘蛛池模板: 无码综合天天久久综合网| 香蕉久人久人青草青草| 色综合狠狠操| 中文字幕第1页在线播| 日韩色图在线观看| 欧美成a人片在线观看| 亚洲首页国产精品丝袜| 毛片免费在线| 色综合天天操| 国产亚洲精久久久久久久91| 欧美a网站| 国产一区二区三区在线观看视频| 国产午夜一级淫片| 91无码视频在线观看| 国产 在线视频无码| 国产电话自拍伊人| 综合色区亚洲熟妇在线| 国内自拍久第一页| 99草精品视频| 亚洲欧美一级一级a| 亚洲制服丝袜第一页| 性欧美精品xxxx| 免费A级毛片无码免费视频| 亚洲男人在线| 欧美日韩福利| 国产一区自拍视频| yy6080理论大片一级久久| 国产精品一区在线麻豆| 99一级毛片| 伊人精品成人久久综合| 国产精品久久久免费视频| 中日韩一区二区三区中文免费视频| 国产手机在线ΑⅤ片无码观看| 美美女高清毛片视频免费观看| 亚洲永久色| 农村乱人伦一区二区| 欧美精品伊人久久| 亚洲男人的天堂视频| 精品伊人久久久香线蕉| 午夜爽爽视频| 国产乱码精品一区二区三区中文| 福利小视频在线播放| 黄色三级网站免费| 国产另类视频| 国产精品专区第1页| 国产18在线| 欧美亚洲另类在线观看| 国产精品视频999| 五月婷婷中文字幕| 久久这里只精品国产99热8| 欧美视频在线第一页| 在线观看91精品国产剧情免费| 露脸真实国语乱在线观看| 国产97视频在线| 国产迷奸在线看| 大香伊人久久| 日韩欧美亚洲国产成人综合| 精品91视频| 3D动漫精品啪啪一区二区下载| 免费国产高清视频| 欧美国产日韩一区二区三区精品影视| 激情视频综合网| 欧美人与牲动交a欧美精品 | 亚洲 成人国产| 免费大黄网站在线观看| 欧美激情二区三区| 久久久国产精品无码专区| 国产极品美女在线观看| 国产成人乱码一区二区三区在线| 高清色本在线www| 国产人免费人成免费视频| 欧美色视频网站| a亚洲视频| 久一在线视频| 国产乱人伦精品一区二区| 青草视频网站在线观看| 国产一区二区三区精品欧美日韩| 亚洲午夜福利在线| 久久久久亚洲AV成人人电影软件| 久久不卡精品| 精品国产成人三级在线观看| 日韩黄色在线|