原創|行業資訊|編輯:吳秋紅|2024-10-28 11:47:42.280|閱讀 76 次
概述:本文詳細介紹了HOOPS Luminate API的場景圖部分。場景圖是定義要顯示的2D或3D世界的關鍵元素。在本文的過程中,我們將回顧HOOPS Luminate場景圖的所有不同對象,并了解如何將它們組織在一起。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本文詳細介紹了的場景圖部分。場景圖是定義要顯示的2D或3D世界的關鍵元素。在本文的過程中,我們將回顧HOOPS Luminate場景圖的所有不同對象,并了解如何將它們組織在一起。
HOOPS Luminate場景圖對象分為兩類:
一、什么是場景圖?
HOOPS Luminate場景圖是形狀圖。更準確地說,它是一個有向無環圖。我們經常使用“DAG”首字母縮略詞來指代它。有向無環圖定義:
下圖說明了這些屬性:
我們確定實例形狀在內存中存儲一次(引用),并且根據從場景圖根到形狀本身(實例)的不同路徑進行多次可視化。
有向無環圖(DAG)的屬性
二、創建和銷毀形狀
// Sample creation of a mesh shape in 'shape': RED::Object* shape = RED::Factory::CreateInstance( CID_REDMeshShape ); // Sample destruction of a shape object 'shape': RED::Object* resmgr = RED::Factory::CreateInstance( CID_REDResourceManager ); RED::IResourceManager* iresmgr = resmgr->As< RED::IResourceManager >();
所有形狀均使用適當的類標識符通過該方法創建RED::Factory::CreateInstance。形狀類標識符定義如下:
形狀的銷毀使用 執行RED::Factory::DeleteInstance。形狀的銷毀在用于執行銷毀命令的事務結束時生效
重要的是要知道,變換形狀的破壞會導致其所有未鏈接到未被破壞的其他形狀的子形狀的破壞,如下所示:
場景圖破壞場景
在此示例中,Shape#A的破壞引發了其專有場景圖的破壞:這是Shape#A的所有遞歸子級的集合,這些子級沒有非#A子級的祖先。在此示例中,它由形狀#C、#D和#E組成。在第二個破壞示例中,Shape#D被破壞,我們看到只有Shape#D會被破壞。Shape#E不包含在破壞范圍內,因為Shape#E是Shape#C的子級,而Shape#C不會被破壞。
必須考慮這些行為以避免重復銷毀形狀。如果使用刪除形狀兩次RED::Factory::DeleteInstance(直接刪除或在形狀樹銷毀后刪除),RED_SCG_SHAPE_ALREADY_DESTROYED則將返回。
另一個重點是,視點的破壞會導致視點的根形狀的破壞(參見RED::IViewpoint::GetRootShape),并因此破壞該視點下方的所有場景圖,除非存在指向其他場景圖的父鏈接。
三、場景圖中的形狀類型
的網格、線和點顯示形狀只是原子的。它們分別加載三角形、線段(或條帶)和點。除了平面多邊形外,HOOPS Luminate沒有內置的鑲嵌服務。HOOPS Luminate數據通常來自外部建模軟件,這些軟件提供用于填充形狀的數據數組。每個形狀都是RED::Object通過RED::Factory::CreateInstance使用適當的CID并實現以下接口創建的:
HOOPS Luminate中還有其他幾種形狀類型可供選擇:
變換形狀對于定義對象的相對位置是必不可少的。它們實際上通過存儲的變換矩陣定義了對象的實際位置。文本是2D或3D基元,用于在應用程序內顯示各種類型的文本。需要光源來為場景圖中的幾何圖形提供一些照明,體積效果是相當高級的對象,用于在高質量圖像渲染中定義氣體效果。
四、場景圖屬性
形狀存儲了多個屬性,這些屬性指示HOOPS Luminate如何顯示形狀,或者如何將外部應用程序數據鏈接到形狀。屬性是獨立的,也可以沿著場景圖DAG定義的層次結構繼承。這些屬性的詳細信息及其使用方式如下:場景圖中的形狀屬性。
慧都科技已經為100+企業提供一站式的3D開發解決方案,負責3D ACIS Modeler、Parasolid、等3D產品的銷售、試用、技術支持,賦能航空航天、建筑工程、船舶制造、機械加工、汽車等客戶成功構建工程應用!歡迎咨詢:023-6866168
↓↓掃碼關注“HOOPS技術”,及時獲取更多3D資訊↓↓
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn