




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C++程序設(shè)計第10章虛擬現(xiàn)實應(yīng)用第1節(jié)虛擬現(xiàn)實概述第2節(jié)虛幻引擎建?;A(chǔ)第3節(jié)虛幻引擎編程基礎(chǔ)第4節(jié)虛擬博物館案例第5節(jié)頭顯眼鏡參考資料:1.羅立宏.《C++程序設(shè)計及互動多媒體開發(fā)》,化學(xué)工業(yè)出版社2.馮開平,羅立宏.《虛擬現(xiàn)實技術(shù)及應(yīng)用》,電子工業(yè)出版社第1節(jié)虛擬現(xiàn)實概述虛擬現(xiàn)實及應(yīng)用領(lǐng)域虛擬現(xiàn)實開發(fā)方法虛幻引擎簡介1.1虛擬現(xiàn)實及應(yīng)用領(lǐng)域虛擬現(xiàn)實技術(shù)(VirtualReality,VR)是一種可以創(chuàng)建和體驗虛擬世界的計算機(jī)仿真系統(tǒng)的技術(shù),它利用計算機(jī)生成一種模擬環(huán)境,使用戶沉浸到該環(huán)境中。虛擬現(xiàn)實技術(shù)致力于模擬有一切人類所擁有的感知功能,比如視覺、聽覺、觸覺、味覺、嗅覺等感知系統(tǒng)。沉浸性、多感知性、交互性應(yīng)用領(lǐng)域影視娛樂展覽展示教育培訓(xùn)醫(yī)學(xué)軍事航空航天……1.2虛擬現(xiàn)實開發(fā)方法/技術(shù)/工具虛擬現(xiàn)實系統(tǒng)中視覺仿真的實質(zhì):加載和顯示一套模型(一般為3D),并實現(xiàn)與之交互。開發(fā)方法基于圖形開發(fā)庫:OpenGL、Direct3D基于引擎軟件:虛幻引擎、Unity3D、VegaPrime、Virtools……1.3虛幻引擎簡介虛幻引擎(UnrealEngine,UE)是由美國EpicGame公司開發(fā)的一款實時3D應(yīng)用創(chuàng)作引擎軟件。早期產(chǎn)品定位是游戲引擎,至今已發(fā)展成游戲開發(fā)、虛擬現(xiàn)實應(yīng)用、影視虛擬制片、工業(yè)和建筑可視化的實時3D應(yīng)用創(chuàng)作工具。戰(zhàn)爭機(jī)器絕地求生虛幻引擎功能模型構(gòu)建材質(zhì)編輯特效制作程序開發(fā)
開發(fā)語言:C++、藍(lán)圖虛幻引擎安裝安裝步驟(1)下載Launcher程序
地址:https:///zh-CN/release-notes(2)安裝Launcher程序(3)在Launcher中,安裝任意所需的UE版本(本書將使用UE4.26版本)Launcher界面啟動后的UE4界面第2節(jié)虛幻引擎建?;A(chǔ)創(chuàng)建新項目場景視口操作創(chuàng)建新關(guān)卡放置物體改變材質(zhì)導(dǎo)入外部模型執(zhí)行構(gòu)建過程例10-1構(gòu)建一個開放房間模型本節(jié)我們將一步步在虛幻引擎中構(gòu)建一個開放房間的模型。過程中將涉及模型構(gòu)建、導(dǎo)入、材質(zhì)、燈光等建模的基本操作。2.1創(chuàng)建新項目啟動UE(UE4.26)新建項目。項目命名為Room2.2場景視口操作標(biāo)準(zhǔn)操作操作動作透視口鼠標(biāo)左鍵+拖拽前后移動相機(jī),及左右旋轉(zhuǎn)相機(jī)。鼠標(biāo)右鍵+拖拽旋轉(zhuǎn)視口相機(jī)。鼠標(biāo)左鍵+鼠標(biāo)右鍵+拖拽上下移動。正交視口(頂視口、前視口、側(cè)視口)鼠標(biāo)左鍵+拖拽創(chuàng)建一個區(qū)域選擇框。鼠標(biāo)右鍵+拖拽平移視口相機(jī)。鼠標(biāo)左鍵+鼠標(biāo)右鍵+拖拽拉伸視口相機(jī)鏡頭。聚焦F將相機(jī)聚焦到選中的對象上。這對于充分利用相機(jī)翻滾是非常必要的。場景視口操作WASD飛行控制操作動作W|數(shù)字鍵8|向上箭頭鍵向前移動相機(jī)S|數(shù)字鍵2|向下箭頭鍵向后移動相機(jī)。A|數(shù)字鍵4|左箭頭鍵向左移動相機(jī)。D|數(shù)字鍵6|右箭頭鍵向右移動相機(jī)。E|數(shù)字鍵9|向上翻頁鍵向上移動相機(jī)。Q|數(shù)字鍵7|下翻頁鍵向下移動相機(jī)。Z|數(shù)字鍵1拉遠(yuǎn)相機(jī)(提升視場)。C|數(shù)字鍵3推進(jìn)相機(jī)(降低視場)。2.3創(chuàng)建新關(guān)卡菜單:文件—新建關(guān)卡2.4放置物體(Actor)(1)立方體(Cube)放入立方體,調(diào)整其長寬高比例。這將作為本場景的地面。放置物體(Actor)(2)定向光源(DirectionalLight)放入一個定向光源。放置物體(Actor)(3)大氣霧(AtmosphericFog)放入一個大氣霧視覺效果。放置物體(Actor)(4)使用模型素材
找到Prop目錄,把一張椅子拖入場景。調(diào)整其擺放位置與角度。切換調(diào)整位置、角度、縮放大小的鍵分別為W、E、RProp是一個初學(xué)者資源目錄,在創(chuàng)建工程選擇了“初學(xué)者內(nèi)容”(默認(rèn)會選擇)就會出現(xiàn)。不選就沒有。注意一下“內(nèi)容瀏覽器”窗口中看到的“內(nèi)容”下的目錄結(jié)構(gòu)與Windows資源管理器中項目目錄下的“Content”目錄下的內(nèi)容一致。繼續(xù)在Prop目錄中找到圓桌,放入場景在Prop目錄中找到門框和門的素材,放入場景放入多個立方體,改變尺寸比例,拼成一個墻面在Prop目錄中找到窗框和窗玻璃的素材,放入場景放入多個立方體,改變尺寸比例,構(gòu)建窗的墻面若建出的墻面為黑色,可以“構(gòu)建”按鈕可以重建光照效果。用正方體構(gòu)建屋頂,調(diào)整地面以適合房間大小。房間整體抬高一點,下面再加一個更大的室外地面。放置物體(Actor)(5)燈光把Prop目錄中的懸吊燈座拖入場景放置到天花板中央。把一個點光源拖入場景,調(diào)整位置至燈座下面。調(diào)整屬性中的燈光顏色。構(gòu)建把Prop目錄中的壁燈燈座拖入場景放置到墻壁上。放置多個。每一個壁燈燈座上放置一個點光源。調(diào)整屬性中的燈光顏色。并把這些燈光的屬性改為靜態(tài)光源關(guān)閉室外的定向光源放置物體(Actor)(6)Lightmass重要體積放入一個Lightmass重要體積,調(diào)整大小和位置,使體積包含房間作用:確保盒體內(nèi)部區(qū)域獲得更高的光照品質(zhì)放置物體(Actor)(7)音效可加入wav聲音加入背景音效的步驟:導(dǎo)入wav聲音文件—創(chuàng)建Cue—設(shè)置循環(huán)播放—在細(xì)節(jié)窗口中選擇音效Cue2.5改變材質(zhì)選中物體,在細(xì)節(jié)窗口更改材質(zhì)2.6導(dǎo)入外部模型對于更復(fù)雜更專業(yè)的模型,建模人員會使用3DSMax、Maya等專業(yè)建模軟件制作,然后導(dǎo)入到虛幻引擎中。外部模型的導(dǎo)入有兩種方法:-FBX-DataSmith2.6.1FBX在3DSMax、Maya等專業(yè)建模軟件中把模型導(dǎo)出成fbx格式在虛幻引擎中導(dǎo)入fbx模型例:把一個霸王龍模型導(dǎo)入虛幻引擎,調(diào)整大小、比例與角度2.6.2
DataSmithDataSmith是UE4.19之后Epic公司提供的新的數(shù)據(jù)轉(zhuǎn)換方法。DataSmith與Fbx方法相比,在數(shù)據(jù)組織、貼圖打包、燈光轉(zhuǎn)換等方面都更為出色。安裝DataSmith導(dǎo)出插件訪問https:///zh-CN/datasmith/plugins或在Unreal官網(wǎng)搜索“DataSmith”并下載插件。請注意下載適合您的建模軟件和合適的版本。課件資料中提供了For3DSMax(2016-2021)并針對UE4.26的插件。DataSmith導(dǎo)出安裝好后,就可以在建模軟件中導(dǎo)出成udatasmith格式的文件了DataSmith導(dǎo)入UE4.19-4.23需要下載DataSmith導(dǎo)入插件。UE4.24之后則已經(jīng)內(nèi)置,只需在UE中勾選插件即可。導(dǎo)入可能有多個物體,可以使用“合并Actor”功能合并成一個物體。例:把一個三角龍模型導(dǎo)入虛幻引擎,調(diào)整大小、比例與角度2.7執(zhí)行構(gòu)建過程完善房間模型。例如再導(dǎo)入一只翼龍模型,并在房間周圍放置一些灌木模型(Prop目錄中有素材)構(gòu)建播放。體驗漫游(鼠標(biāo)和鍵盤箭頭鍵、WASD鍵)。2.8設(shè)置默認(rèn)場景菜單“編輯—項目設(shè)置”—地圖和模式—把“編輯器開始地圖”和“游戲默認(rèn)地圖”選為房間場景第3節(jié)虛幻引擎編程基礎(chǔ)引擎編程機(jī)制控制物體運動斷點調(diào)試與日志調(diào)試操作映射使用UI3.1引擎編程機(jī)制在虛幻引擎中,場景所看到的每個物體都可對應(yīng)某個類,例如上一節(jié)中的桌子、椅子、恐龍,都可以對應(yīng)演員(Actor)類。在運行過程中,這些類會有各種產(chǎn)生各種事件,例如碰撞、出現(xiàn)、定時等。只要對這些事件編寫事件處理函數(shù),就可以控制這些物體的行為。除了場景中看得見的物體,虛幻引擎中還有一些全局類,他們控制著游戲底層邏輯、全局設(shè)置和全局?jǐn)?shù)據(jù)等等,例如游戲模式類、玩家控制器類、游戲狀態(tài)類等等。這些全局類也有各種事件,常常也需要對這些事件編寫事件處理函數(shù),來對游戲/虛擬現(xiàn)實應(yīng)用進(jìn)行一些總體控制。必備的項目設(shè)置創(chuàng)建項目時需為“C++項目”
參見“2.1創(chuàng)建新項目”一節(jié)3.2控制物體運動虛擬現(xiàn)實/游戲場景中,常常有很多運動的物體,例如車輛行進(jìn)、飛行器飛行、開關(guān)門、操作器具的移動等。例10-2上節(jié)我們在房間中放入了三個恐龍模型(霸王龍、三角龍和翼龍),本節(jié)我們嘗試讓程序控制翼龍自動地上下運動。步驟:(1)新建C++組件選中翼龍模型,為其新建C++組件選擇父類。采用默認(rèn)的的“Actor組件”。點“繼續(xù)”類名定為:FloatingPteranol。點“創(chuàng)建類”事件處理函數(shù)在自動彈出的VisualStudio中可看到新類的定義,其中:演員的BeginPlay()函數(shù)----演員出現(xiàn)時調(diào)用演員的TickComponent()函數(shù)----每幀調(diào)用添加代碼(2)FloatingPteranol.h中添加:
floatRunningTime;(3)
FloatingPteranol.cpp的TickComponent()中添加:
//思路:取得模型的位置,Z坐標(biāo)值疊加上一個Sin(t)函數(shù)值,Sin函數(shù)值是上下波動的,
//所以模型的高度值也會因此上下波動。Sin的參數(shù)t取自程序開始運行以來流逝過的時
//間值,即RunningTime
AActor*pter=GetOwner();//取得翼龍的Actor
FVectorNewLocation=pter->GetActorLocation();floatDeltaHeight=(FMath::Sin(RunningTime));NewLocation.Z+=DeltaHeight;RunningTime+=DeltaTime;pter->SetActorLocation(NewLocation);修改屬性(4)選中翼龍,設(shè)置為“可
移動物體”(5)編譯可在VS中編譯:菜單“生成—生成Room”也可在UE中編譯:工具欄編譯按鈕(6)運行,可看到翼龍已能上下漂浮。3.3斷點調(diào)試與日志調(diào)試
斷點調(diào)試-在VisualStudio中,設(shè)置斷點,按Ctrl+Alt+P(或菜單“調(diào)試--附加到進(jìn)程”),選擇已打開的UnrealEditor作為要附加到的進(jìn)程,點“附加”按鈕。
-在UnrealEditor中點擊Play按鈕啟動。即可。遇到斷點時在VisualStudio中就會停下日志調(diào)試
AddOnScreenDebugMessage(…)//信息打印到場景左上角
UE_LOG(…)//信息打印到日志
//打開日志窗口:菜單“窗口—開發(fā)者工具—輸出日志”3.4操作映射操作映射和軸映射是虛幻引擎提供的一種響應(yīng)用戶輸入行為(例如鼠標(biāo)和鍵盤)的機(jī)制。其中操作映射針對按下和松開按鍵,軸映射則針對擁有連續(xù)范圍的輸入。我們現(xiàn)在需要的是鼠標(biāo)點擊物體,即按下和松開鼠標(biāo)左鍵,因此我們使用操作映射。例10-3實現(xiàn)以下功能:點擊恐龍,在場景和日志中輸出該恐龍的信息。操作映射的實現(xiàn)步驟:
<1>在項目設(shè)置中設(shè)置映射
<2>在某個類的頭文件中聲明添加映射按鍵相應(yīng)的函數(shù)
<3>在所需類源文件中定義聲明的函數(shù)
<4>添加綁定映射的代碼“某個類”?----對于本例,不應(yīng)選擇任何一個場景中能看見的模型的演員類,而應(yīng)選擇一個全局類。我們選擇玩家控制器類。菜單“編輯—項目設(shè)置”—地圖和模式,可看到與地圖與模式相關(guān)幾個全局類:游戲模式類:管理游戲運行模式和底層邏輯Pawn類:玩家或AI控制的所有Actors的基礎(chǔ)類HUD類:顯示在攝像機(jī)面前的二維圖文信息(例如游戲的分?jǐn)?shù)、血條、勝負(fù)提示等)類玩家控制器類:接受玩家輸入并控制游戲的接口類游戲狀態(tài)類:記錄游戲狀態(tài)
數(shù)據(jù)的類旁觀者類:用類以旁觀者模
式觀看游戲的類3.4.1新建玩家控制器類(1)菜單“文件—新建C++類”—選擇“玩家控制器”為父類—為新類命名并創(chuàng)建類然后回到上頁圖中地圖和模式的
設(shè)置,發(fā)現(xiàn)在默認(rèn)的游戲模式類
GameModeBase下,玩家控制器
類不能選擇更改。為此,我們還
需新建一個自己的游戲模式類,來替換掉默認(rèn)的游戲模式類新建游戲模式類(2)“添加/導(dǎo)入”按鈕—彈出菜單“藍(lán)圖類”—“游戲模式基礎(chǔ)”按鈕—為新建的游戲模式類修改命名為“MyGameModeBP”C++類與藍(lán)圖類虛幻引擎提供了兩種“編程”方法,一種是使用C++語言,另一種是虛幻引擎內(nèi)嵌的模塊化“編程”方法,稱為藍(lán)圖(BluePrint)。藍(lán)圖可以為藝術(shù)設(shè)計人員提供一種快速的、能較容易理解的交互功能開發(fā)手段。藍(lán)圖能開發(fā)較簡易的交互功能。C++則能開發(fā)全面的、深入的功能。
本例新建的游戲模式類只為替換默認(rèn)類,不需要任何修改。替換游戲模式類和玩家控制器類(3)在項目設(shè)置中把默認(rèn)游戲模式類替換成MyGameModeBP類(4)這時,下面的各種全局類可以修改了。把玩家控制器類修改為MyPlayerController類此時,我們就可以在MyPlayerController類中加入代碼實現(xiàn)我們需要的功能了3.4.2設(shè)置映射(5)在項目設(shè)置的“輸入”一欄中增加操作映射,針對鼠標(biāo)左鍵,起名為“MouseClick”3.4.3添加映射函數(shù)聲明(6)在虛幻引擎中雙擊C++類MyPlayerController,在VS中為MyPlayerController.h添加代碼:……UCLASS()classROOM_APIAMyPlayerController:publicAPlayerController{GENERATED_BODY()public:voidOnMouseClick();
//鼠標(biāo)點擊的函數(shù)聲明};3.4.4添加映射函數(shù)定義(7)在VS中為MyPlayerController.cpp添加代碼:#include"MyPlayerController.h"externENGINE_APIclassUEngine*GEngine;voidAMyPlayerController::OnMouseClick(){FHitResultHitResult;
//取得鼠標(biāo)點在場景中點中的物體
GetHitResultUnderCursor(ECollisionChannel::ECC_Visibility,false,HitResult);if(HitResult.GetActor()){
//在屏幕打印輸出
if(GEngine){//必須先檢查非空GEngine->AddOnScreenDebugMessage(-1,2,FColor::Blue,
FString::Printf(TEXT("ClickActor:%s"),*HitResult.GetActor()->GetName()));}
//在日志中打印輸出
UE_LOG(LogTemp,Warning,TEXT("ClickActor:%s"),*HitResult.GetActor()->GetName());}}3.4.5綁定映射(8)為MyPlayerController.h添加代碼:UCLASS()classROOM_APIAMyPlayerController:publicAPlayerController{GENERATED_BODY()public:
voidBeginPlay();
//需要重寫的事件處理函數(shù)voidOnMouseClick();//鼠標(biāo)點擊的函數(shù)聲明};綁定映射(9)為MyPlayerController.cpp添加代碼:voidAMyPlayerController::BeginPlay(){Super::BeginPlay();
//取得UE輸入組件
InputComponent=FindComponentByClass<UInputComponent>();if(InputComponent){
//綁定操作映射和處理函數(shù)
InputComponent->BindAction("MouseClick",IE_Pressed,this,
&AMyPlayerController::OnMouseClick);}Super::bShowMouseCursor=true;//顯示鼠標(biāo)}運行效果(10)編譯(VS中“生成”或UE中“編譯”),運行??煽吹近c擊物體時可在屏幕和日志打印出信息注意:如果點擊恐龍時輸出的不是其名稱,或者漫游時會穿過它。則是因為它還沒設(shè)置碰撞。請雙擊其資產(chǎn),進(jìn)入模型查看器,點擊菜單“碰撞”--“添加盒體簡化碰撞”(或選其他),為其添加碰撞體。3.5使用UIUI——用戶界面。在虛擬現(xiàn)實和游戲的應(yīng)用中,常常需要以彈出窗口(例如使用說明介紹)或者對攝像機(jī)固定平面元素(例如操作菜單、血條、分?jǐn)?shù)等)的形式向用戶顯示信息。這些彈出窗口和固定平面元素就是用戶界面。本節(jié)介紹基于UMG(UnrealMotionGraphicsUIDesigner,虛幻動態(tài)圖形UI設(shè)計器)的UI設(shè)計和開發(fā)方法。前面實際上已把房間建成了一個小型的恐龍模型展廳,我們不妨再強(qiáng)化一下點擊顯示信息的虛擬展覽功能:例10-4繼續(xù)修改10-2,點擊恐龍時彈出用戶界面,顯示介紹該恐龍的圖文信息3.5.1創(chuàng)建UI(1)新建一個“UI”目錄,準(zhǔn)備把UI相關(guān)的資產(chǎn)都放在這里(2)準(zhǔn)備或制作好幾張圖片:背景、霸王龍(png)、三角龍(png)、翼龍(png),導(dǎo)入到UI目錄(3)新建控件藍(lán)圖:“添加/導(dǎo)入”按鈕—彈出菜單“用戶界面”—“控件藍(lán)圖”—修改命名,例如霸王龍的“TirarexUI”創(chuàng)建UI(4)雙擊剛剛新建的控件藍(lán)圖,放置圖片、文本、按鈕,調(diào)整大小(5)修改并記住各個控件的命名創(chuàng)建UI(6)同上,再創(chuàng)建出三角龍控件藍(lán)圖(命名為TriceraUI)和翼龍控件藍(lán)圖(PteraUI)注意文本和按鈕控件的變量名使用相同的名稱,以便后續(xù)程序控制3.5.2創(chuàng)建UserWidget類(7)菜單“文件”—“新建C++類”,搜索選擇UserWidget類作為父類,新類起名為“MyUserWidget”指定父類(8)分別打開三個恐龍的控件藍(lán)圖,為它們指定父類為MyUserWidget類3.5.3彈出和關(guān)閉UI(9)在MyUserWidget.h中添加代碼:……UCLASS()classROOM_APIUMyUserWidget:publicUUserWidget{GENERATED_BODY()public:UPROPERTY(Meta=(BindWidget))//UPROPERTY宏使下一句的變量與編譯器和藍(lán)圖關(guān)聯(lián)classUButton*BtnExit;//注意變量名字要和控件藍(lán)圖中按鈕的名字相同virtualboolInitialize()override;
//需重寫的事件處理函數(shù)
UFUNCTION()
//UFUNCTION宏使下一句的函數(shù)與編譯器和藍(lán)圖關(guān)聯(lián)
voidBtnExitEvent();
//“退出”按鈕響應(yīng)函數(shù)。點擊這個按鈕,介紹界面就會關(guān)閉};(10)在MyUserWidget.cpp中添加代碼:#include"MyUserWidget.h"#include"UMG.h"boolUMyUserWidget::Initialize(){if(!Super::Initialize()){returnfalse;}
//為按鈕的點擊注冊事件處理函數(shù)
BtnExit->OnClicked.__Internal_AddDynamic(this,&UMyUserWidget::BtnExitEvent,
FName("BtnExitEvent"));returntrue;}voidUMyUserWidget::BtnExitEvent(){
//關(guān)閉控件藍(lán)圖UIthis->RemoveFromParent();}(11)在MyPlayerController.h中添加代碼:#include"CoreMinimal.h"#include"GameFramework/PlayerController.h"#include"MyUserWidget.h"#include"MyPlayerController.generated.h"UCLASS()classROOM_APIAMyPlayerController:publicAPlayerController{GENERATED_BODY()public:voidBeginPlay();//需要重寫的事件處理函數(shù)
voidOnMouseClick();//鼠標(biāo)點擊的函數(shù)聲明
UMyUserWidget*m_pWidget;TSubclassOf<classUUserWidget>m_DlgWidgetClassTrex,
m_DlgWidgetClassTric,
m_DlgWidgetClassPter;};(12)在MyPlayerController.cpp中添加代碼:voidAMyPlayerController::BeginPlay(){……
Super::bShowMouseCursor=true;//顯示鼠標(biāo)
//加載UI類。注意參數(shù)中字符串的路徑和格式
m_DlgWidgetClassTrex=LoadClass<UUserWidget>(NULL,
TEXT("Blueprint'/Game/UI/TirarexUI.TirarexUI_C'"));m_DlgWidgetClassTric=LoadClass<UUserWidget>(NULL,
TEXT("Blueprint'/Game/UI/TriceraUI.TriceraUI_C'"));m_DlgWidgetClassPter=LoadClass<UUserWidget>(NULL,
TEXT("Blueprint'/Game/UI/PteraUI.PteraUI_C'"));}voidAMyPlayerController::OnMouseClick(){……if(HitResult.GetActor()){……UE_LOG(LogTemp,Warning,TEXT("ClickActor:%s"),*HitResult.GetActor()->GetName());//彈出介紹界面。Fstring(…)里面的是場景中模型的ID,在世界大綱視圖中查
if(m_DlgWidgetClassTrex!=nullptr&&*HitResult.GetActor()->GetName()==FString("TIRAREX_2"))
{m_pWidget=CreateWidget<UMyUserWidget>(GetWorld()->GetGameInstance(),
m_DlgWidgetClassTrex);if(m_pWidget!=nullptr)m_pWidget->AddToViewport();}elseif(m_DlgWidgetClassTric!=nullptr&&*HitResult.GetActor()->GetName()==FString("TriceraTotal_2"))
{m_pWidget=CreateWidget<UMyUserWidget>(GetWorld()->GetGameInstance(),
m_DlgWidgetClassTric);if(m_pWidget!=nullptr)m_pWidget->AddToViewport();}elseif(m_DlgWidgetClassPter!=nullptr&&*HitResult.GetActor()->GetName()==
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同履行擔(dān)保管理辦法
- 基礎(chǔ)設(shè)施建設(shè)臨時用地合同范本
- 跨境融資合同(樣式一)
- 6 有多少浪費本可避免 第2課時 (教學(xué)設(shè)計)2023-2024學(xué)年統(tǒng)編版道德與法治四年級下冊
- 14《我要的是葫蘆》教學(xué)設(shè)計-2024-2025學(xué)年統(tǒng)編版(五四制)語文二年級上冊
- 4田家四季歌教學(xué)設(shè)計-2024-2025學(xué)年二年級上冊語文統(tǒng)編版
- 建筑安裝工程承包合同
- 雇工植樹合同范本
- 6《9的乘法口訣》(教學(xué)設(shè)計)-2024-2025學(xué)年二年級上冊數(shù)學(xué)人教版
- Module 3 Unit 9 Great cities of the world(教學(xué)設(shè)計)-2024-2025學(xué)年滬教牛津版(深圳用)英語六年級上冊
- 電網(wǎng)數(shù)字化項目工作量度量規(guī)范應(yīng)用指南(2020版)
- 小學(xué)開學(xué)第一課禁毒安全
- 2025年砌筑工職業(yè)技能(中級)知識考試題庫及答案
- 開題報告:適應(yīng)人口發(fā)展趨勢的區(qū)域教育結(jié)構(gòu)優(yōu)化與政策調(diào)整研究
- 《婚戀觀教育》課件
- 醫(yī)療器械質(zhì)量負(fù)責(zé)人崗位職責(zé)
- 中醫(yī)小兒常見皮膚病
- 第十七屆山東省職業(yè)院校技能大賽機(jī)器人系統(tǒng)集成應(yīng)用技術(shù)樣題1學(xué)生賽
- 無人售貨機(jī)的食品安全管理制度
- 校園直飲水機(jī)供貨安裝及售后服務(wù)方案
- 個人保證無糾紛承諾保證書
評論
0/150
提交評論