原創|行業資訊|編輯:吳秋紅|2024-04-22 11:16:57.393|閱讀 102 次
概述:在本教程中,我們將使用渦輪發動機模型來演示反射平面、兩種類型的陰影和光暈。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
渲染效果
當需要創建具有非常高視覺質量的圖像時,可以提供多種渲染效果。在本教程中,我們將使用渦輪發動機模型來演示反射平面、兩種類型的陰影和光暈。
本教程將使用沙盒應用程序,對于C++用戶,您可以從mfc_sandboxCHPSView::OnUserCodeX項目開始。如果您想按照本教程進行操作,則可以在function中放置代碼;C#用戶將使用wpf_sandbox應用程序-您將代碼放置在DemoUserCommand**X**::Execute.
1.1 加載渦輪機模型
構建并運行沙箱后的第一步是加載渦輪機模型文件。該文件可以在Visualize安裝的樣本/數據目錄中找到。這是一個HSF文件,因此可以通過本機加載。使用沙箱的主菜單將其加載到沙箱中。或者,您可以使用以下代碼片段以編程方式加載文件:
HPS::Stream::ImportNotifier notifier; try { HPS::Stream::ImportOptionsKit importOptionsKit; importOptionsKit.SetSegment(mySegmentKey); notifier = HPS::Stream::File::Import(filename, importOptionsKit); // pauses this thread until the HSF is finished loading notifier.Wait(); } catch (HPS::IOException const& e) { // handle exception}
您還需要獲取對模型的段鍵的引用。如果您以編程方式加載該文件,則應該向HPS::ImportOptionsKit.如果您使用沙箱應用程序的文件菜單加載模型,則可以獲得模型段,如下所示:
HPS::SegmentKey modelSegmentKey = GetTopView().GetAttachedModel().GetSegmentKey();
有關加載HSF的更多信息,請參閱編程指南的第 9.1節。加載完成后,您應該看到下圖:
渦輪發動機的默認視圖
1.2 添加反射平面和照明
您可以相對輕松地應用的一種奇特效果是反射平面。SetSimpleReflectionPlane使用平面的幾何方程指定平面:
Ax + By + Cz + D = 0
還可以使用反射圖像的其他選項,例如不透明度、模糊、褪色和衰減。我們還將添加照明,使模型顯得更加真實。將以下代碼放入UserCode或方法之一中,DemoUserCommand以在加載模型后激活它。
modelSegmentKey.GetVisualEffectsControl().SetSimpleReflection(true, 0.5f, 1U, false, 0, 2.0f); // parameters are equation of a plane modelSegmentKey.GetVisualEffectsControl().SetSimpleReflectionPlane(HPS::Plane(0, 1, 0, 0.375f)); // add lighting modelSegmentKey.InsertDistantLight(HPS::Vector(1, 1, -1));
使用軌道運算符(位于應用程序的功能區控件中)旋轉模型后,生成的圖像應如下所示:
帶有反射平面的渦輪發動機(請注意,為了清晰起見,窗口背景已更改為白色)
與所有額外的渲染效果一樣,需要額外的處理時間才能獲得最終的圖像。始終牢記渲染質量和性能之間的平衡。
1.3 陰影
modelSegmentKey.GetVisibilityControl().SetShadows(true); modelSegmentKey.GetVisualEffectsControl().SetShadowMaps(true, 16, 2048, true, true);
在本節中,我們將向渦輪機模型應用投影和陰影貼圖。由于投影在反射平面上通常看起來不太好,因此我們將禁用它以專注于陰影。我們將啟用的第一種陰影類型是陰影貼圖。陰影貼圖允許幾何體的面在受光影響的任何類型的幾何體上投射陰影。第一步是在片段中啟用陰影,然后我們將設置陰影貼圖參數:
在這里,您可以看到前景中的一些部件在其后面的幾何體上投射陰影。
接下來,我們將啟用陰影。投影在Visualize中稱為簡單陰影,因為效果受到高度限制。首先,簡單的陰影只能投射在平面上。其次,陰影只能由單一光源產生。然而,對于大多數工程應用來說,簡單的陰影就可以產生足夠的效果。
mySegmentKey.GetVisualEffectsControl().SetSimpleShadow(true); // enables simple shadows mySegmentKey.GetVisualEffectsControl().SetSimpleShadowPlane( HPS::Plane(0, 1, 0, 0.425f)); // sets the plane where the shadows are projected mySegmentKey.GetVisualEffectsControl().SetSimpleShadowColor(HPS::RGBAColor(0.2f, 0.2f, 0.2f)); // color of the shadow mySegmentKey.GetVisualEffectsControl().SetSimpleShadowLightDirection(HPS::Vector(0, 1, 0)); // light direction
帶有陰影貼圖和簡單陰影的渦輪機
1.4.Bloom
另一種可以提高渲染視覺質量的效果是光暈。當強烈的明亮光線從閃亮的表面反射時,就會發生光暈。光線似乎滲入了周圍的空氣中。Bloom僅在基于著色器的驅動程序中可用,例如DirectX11和OpenGL2。Bloom是使用HPS::PostProcessEffectsKit.
HPS::PostProcessEffectsKit ppek; ppek.SetBloom(true, 10.0f); // enables bloom. strength can be set from 0 to 10, (default is 1) myWindowKey.SetPostProcessEffects(ppek); ppek.SetBloom(false); // disables bloom
啟用光暈時,渦輪機的閃亮部分會產生有趣的效果
1.5 紋理
為了獲得最高的視覺質量,您還需要添加紋理。將紋理應用到像渦輪機這樣復雜的模型超出了本教程的范圍,但提供了一個圖像來演示它。您可以在Visualize安裝的樣本/數據目錄中找到紋理模型。有關紋理的更多信息可以在編程指南的紋理部分和教程 2:應用材質中找到。
應用紋理的渦輪機
慧都科技是Tech Soft 3D-HOOPS在中國區的唯一增值服務商,負責與試用,咨詢,銷售,技術支持,售后,旨在為企業提供一站式的3D開發解決方案。如果您的企業目前也有、的需求,歡迎咨詢在線客服申請3D 輕量化引擎的60天免費試用。
↓↓掃碼添加客服微信,及時獲取“HOOPS技術”支持↓↓
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn