張慶高 孫建剛 王惠青 崔利富 彭永鵬
摘 要:以虛擬教育為切入點,以土木工程專業(yè)擬靜力試驗為例,設(shè)計并實現(xiàn)了虛擬實驗室系統(tǒng)。該系統(tǒng)采用3Ds Max、Photo Shop對實驗室及實驗材料、設(shè)備等進(jìn)行建模和貼圖,同時利用ADINA數(shù)值仿真分析軟件對實驗進(jìn)行模擬,提取所需實驗數(shù)據(jù)并保存到SQL數(shù)據(jù)庫中,在Unity 3D平臺使用.Net腳本語言實現(xiàn)對模型的控制操作。該系統(tǒng)解決了大型試驗準(zhǔn)備周期長、資源消耗大、不易操作等問題,最大限度地使學(xué)生參與整個實驗過程,以掌握更多的知識和科研成果。
關(guān)鍵詞:虛擬實驗室;Unity 3D;.Net腳本
DOI:10.11907/rjdk.172686
中圖分類號:TP319
文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2018)004-0120-04
Abstract:This paper takes virtual education as the breakthrough point, designs and implements the virtual laboratory system by taking the civil engineering experiment as an example .The system uses 3Ds Max,PS to build model and pastes map about the laboratory, experimental materials, equipment and so on, meanwhile, it gets and saves the experimental data by ADINA in SQL Data Base , controls the models by .Net script language on the Unity 3D platform. The system solves the problems such as long period of preparation, large resource consumption and difficult operation, and it makes students most involved in the whole process of experiment tobetter understand more knowledge and scientific research.
Key Words:Virtual laboratory; Unity 3D; .Net script
0 引言
虛擬實驗室是一種基于計算機(jī)技術(shù),對實驗過程還原并提供交互性的實驗?zāi)J健L摂M實驗室與遠(yuǎn)程教育特征非常相似,即都可以不受時間、地點約束,根據(jù)需要和時間進(jìn)行自主學(xué)習(xí)。但相比遠(yuǎn)程教育,虛擬實驗室可以讓用戶有更好的沉浸感、交互性及實時性[1]。虛擬實驗室不僅改變了學(xué)習(xí)方式,還因其低廉的成本而備受青睞。虛擬實驗可使學(xué)生系統(tǒng)地參與實驗,快速掌握實驗過程和步驟,實時交互性和漫游系統(tǒng)可讓使用者對實驗全方位了解。
虛擬現(xiàn)實與教育結(jié)合必須建立在教育理論基礎(chǔ)上,促進(jìn)教育事業(yè)發(fā)展[2]。本文以土木工程專業(yè)擬靜力加載試驗為例,設(shè)計了擬靜力加載虛擬實驗室。
1 系統(tǒng)總體設(shè)計
虛擬實驗室系統(tǒng)由虛擬場景搭建、數(shù)據(jù)處理存儲及功能實現(xiàn)等模塊組成。如圖1所示,系統(tǒng)利用3Ds Max三維建模技術(shù)及Photo Shop圖片處理技術(shù)進(jìn)行虛擬實驗室、試驗材料等場景搭建,結(jié)合ADINA有限元數(shù)值仿真分析軟件進(jìn)行數(shù)值仿真分析,將計算所得的數(shù)據(jù)在SQL數(shù)據(jù)庫中保存,通過Unity 3D技術(shù)和.Net腳本實現(xiàn)虛擬實驗室功能[3]。
2 虛擬場景搭建
虛擬場景搭建是虛擬實驗室系統(tǒng)設(shè)計的核心內(nèi)容,模型制作精細(xì)度、貼圖真實度、光影調(diào)整以及周圍環(huán)境的影響等都是需要考慮的重要因素。場景搭建分為3部分:①了解實驗過程及實驗儀器;②制作三維模型,進(jìn)行貼圖和導(dǎo)出工作;③導(dǎo)入Unity進(jìn)行場景搭建。圖2、圖3為實驗室加載裝置實物圖。
通過實際測量確定實驗室和試驗裝置尺寸后,進(jìn)行三維建模。建模使用3Ds Max和Photoshop組合,將建好的模型保存為FBX格式,導(dǎo)入到Unity 3D中,進(jìn)行場景環(huán)境和燈光搭建[4]。建模效果如圖4所示。
3 數(shù)據(jù)處理
虛擬試驗系統(tǒng)的建立必須有實驗數(shù)據(jù)支撐,從試驗的加載到試驗完成必須有數(shù)據(jù)顯示和曲線生成。墻體擬靜力試驗,通過對有限元數(shù)值仿真分析軟件(ADINA)和試驗得出的數(shù)據(jù)比對,找到最優(yōu)數(shù)據(jù),一般以ADINA數(shù)值仿真分析軟件提取的數(shù)據(jù)為主,建模過程如下:①點擊Points,首先建立一個點,以點、線、面的形式建立物理模型;②點擊Element Group,為模型分組。此處只有一個模型單元,使用3D實體單元;③點擊Mesh Volumes,為模型劃分網(wǎng)格。ADINA為有限元計算軟件,網(wǎng)格劃分越細(xì),計算精度越高;④為模型添加材料,輸入泊松比、密度、楊氏模量、應(yīng)力應(yīng)變曲線等材料信息;⑤添加計算Time Step和Time Function;⑥分別點擊Apply Load和Apply Fixity按鈕,為模型添加力和邊界限制條件,墻體底面全固定,頂面分別施加一個豎向恒載和一個水平往復(fù)荷載[5]。
效果如圖5所示,提取的數(shù)據(jù)加載到Excel中,最后導(dǎo)入SQL數(shù)據(jù)庫,為后續(xù)的數(shù)據(jù)顯示和曲線生成提供保證。
4 功能實現(xiàn)
功能實現(xiàn)即Unity 3D的場景整合、.Net腳本控制以及Winform窗體實現(xiàn)。.Net腳本主要實現(xiàn)三維模型在Unity 3D場景中的移動、隱藏及顯示等,Winform窗體主要完成數(shù)據(jù)庫的讀取、數(shù)據(jù)顯示、曲線生成以及實驗報告修改下載等功能。
4.1 Unity 3D場景整合
將在3Ds Max中做好的模型導(dǎo)入到Unity 3D中,根據(jù)實驗室場景進(jìn)行擺放安置,同時利用UGUI的Text、Image、Raw Image、Button、Toggle、Slider、Scrollbar、DropDown、Input Field、Canvas、Panel、Scroll View等基礎(chǔ)控件完成兩個場景的UI界面設(shè)計,即進(jìn)入場景(見圖6)和實驗場景(見圖7)。
4.2 .Net腳本控制
.Net腳本控制,實現(xiàn)在Unity 3D中的動態(tài)控制和展示,包括實驗室漫游和交互式實驗操作等。
4.2.1 漫游功能
虛擬實驗常見的漫游有3種:①第一人稱漫游,在漫游過程中,借助鍵盤和鼠標(biāo)的操作實現(xiàn)前進(jìn)、后退、轉(zhuǎn)向等操作,借助攝像機(jī)視角獲取實驗室信息。第一人稱的沉浸感更強(qiáng),能很好地把自己融入到實驗場景中;②第三人稱漫游,可以在實驗室中設(shè)置一個人物,人機(jī)交互過程與第一人稱漫游類似,不同的是,第三人稱漫游可以看到人物和實驗室操作情況,通過控制人物行為,以第三視角觀察,更加清晰地看到實驗的整體情況;③網(wǎng)格探路,通過點擊場景內(nèi)的路線、視角自動探路,通過一系列計算實現(xiàn)網(wǎng)格自動探路功能[6-7]。虛擬實驗室主要以室內(nèi)實驗為主,因此采用第一人稱漫游方式,對實驗細(xì)節(jié)可以更好地觀察分析。設(shè)置第一人稱漫游,可根據(jù)實際需要,隨時對實驗過程近距離觀察。為了增強(qiáng)虛擬實驗室的真實感,可安裝固定視角觀看實驗。鼠標(biāo)控制方向,鍵盤W、S、A、D分別控制前后左右,將第一人加入剛體組件。第一人稱漫游部分代碼如下:
[RequireComponent(typeof (Rigidbody))]
[RequireComponent(typeof (CapsuleCollider))]
public class RigidbodyFirstPersonController : MonoBehaviour{
[Serializable]
public class MovementSettings{
public float ForwardSpeed = 8.0f; // 前移速度
public float BackwardSpeed = 4.0f; // 后移速度
public float StrafeSpeed = 4.0f; // 左右移動速度
public float RunMultiplier = 2.0f; // 加速度
public KeyCode RunKey = KeyCode.LeftShift;
public float JumpForce = 30f;
public AnimationCurve SlopeCurveModifier = new AnimationCurve(new Keyframe(-90.0f, 1.0f), new Keyframe(0.0f, 1.0f), new Keyframe(90.0f, 0.0f));
[HideInInspector] public float CurrentTargetSpeed = 8f;
#if !MOBILE_INPUT
private bool m_Running;
#endif
4.2.2 交互式實驗操作功能
虛擬實驗室人機(jī)交互操作包括材料尺寸的選擇、實驗準(zhǔn)備、墻體吊裝、監(jiān)測設(shè)備安裝、豎向荷載加持、往復(fù)荷載加持等步驟。操作過程如下:
(1)實驗材料和尺寸選擇。該過程在UI界面完成,本系統(tǒng)設(shè)置6種不同材料和尺寸的實驗?zāi)>?,通過不同場景實現(xiàn)相應(yīng)選擇。以 “砌塊”選擇為例,主要實現(xiàn)代碼如下:
public void Click()
{
p0.SetActive(false);
if (Drop0.options[Drop0.value].text == "砌塊" && Drop1.options[Drop1.value].text == "1360*890*236")
{
p1.SetActive(true);
(2)實驗準(zhǔn)備。實驗?zāi)>叩牟牧虾统叽绱_認(rèn)后,開始實驗準(zhǔn)備階段,顯示要進(jìn)行的實驗墻體、分配量及混凝土墊板等,主要實現(xiàn)代碼如下:
public GameObject wall;
public GameObject FenPL1;
public GameObject DianBan;
public void OnClick() {
wall.SetActive(true);
FenPL1.SetActive(true);
DianBan.SetActive(true);}
(3)開始實驗。點擊實驗準(zhǔn)備按鈕后,場景固定攝像機(jī)視角如圖8,場景中出現(xiàn)實驗的墻體模具、分配梁以及混凝土墊板,準(zhǔn)備進(jìn)行實驗。
墻體的吊裝、分配量的移動、橫向、縱向荷載加持原理相同,都是通過Translate方法實現(xiàn)的。仿真的荷載為橫載,加載過程一次性完成。彈出加載窗體即Winform窗體,窗體中顯示荷載大小及力-時間曲線等荷載信息。Translate實現(xiàn)代碼如下:
using UnityEngine;
using System.Collections;
public class WallTrans1 : MonoBehaviour {
public float speed = 30;
void Update(){
float step = speed * Time.deltaTime;
gameObject.transform.localPosition = Vector3.MoveTowards(gameObject.transform.localPosition, new Vector3(1861.3f, 60.1f, 1370.2f), step);}}
4.3 Winform窗體實現(xiàn)
Winform窗體主要包括虛擬實驗室的加載機(jī)制及實驗報告編寫窗體。窗體在Visual Studio 2010開發(fā)環(huán)境中完成,界面仿照北京佛力系統(tǒng)公司的加載系統(tǒng)設(shè)計,包括加載、暫停、結(jié)束、保存數(shù)據(jù)等按鈕以及曲線顯示模塊等[8],如圖9、圖10所示。
5 結(jié)語
虛擬實驗室以Unity 3D為主要開發(fā)環(huán)境,結(jié)合3Ds Max建模技術(shù)、Photo Shop圖像處理技術(shù)、Adina數(shù)值仿真分析技術(shù)以及.Net開發(fā)技術(shù),將實驗過程模擬仿真,學(xué)生通過電腦中的虛擬實驗室就可以完成教學(xué)實驗,了解大型科研實驗過程及相應(yīng)科研成果。虛擬實驗室可反復(fù)進(jìn)行試驗,節(jié)約了大量花費,為虛擬現(xiàn)實技術(shù)以及Unity 3D技術(shù)在教育、科研方面應(yīng)用提供了一定的技術(shù)支撐。
參考文獻(xiàn):
[1] 汪明.工程制圖虛擬實驗室的設(shè)計與研究[D].綿陽:西南科技大學(xué),2016.
[2] 史鐵軍.虛擬現(xiàn)實在教育中的應(yīng)用[D].沈陽:東北師范大學(xué),2008.
[3] 蔣德志,姚文龍,張均東.Unity 3D虛擬現(xiàn)實技術(shù)在機(jī)艙資源管理模擬器開發(fā)中的應(yīng)用[J].中國航海,2015,38(3):14-17.
[4] 牛慶麗,薛煥堂,黃海林.基于Unity 3D的黃河風(fēng)景名勝區(qū)虛擬漫游的實現(xiàn)[J].電腦知識與技術(shù),2015,11(20):149-154.
[5] 孫建剛,崔利富,王振,等.藏族民居砌體材料物理力學(xué)性能試驗研究[J].大連民族學(xué)院學(xué)報,2015,17(1):61-64.
[6] LU G P, XUE G H, CHEN Z. Design and implementation of virtual interactive scene based on unity 3D[J]. Advanced Materials Research,2011,1380(317):116-119.
[7] LIANG S. Design and implementation of virtual roaming based on unity3D[J]. Advanced Materials Research,2015,37(16):1079-1121.
[8] 王開宇.基于C#的數(shù)據(jù)與視頻監(jiān)控上位機(jī)軟件設(shè)計[J].現(xiàn)代電子技術(shù),2017,40(10):62-63.
(責(zé)任編輯:杜能鋼)