国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

建筑火災虛擬場景自動建模技術(shù)研究

2020-02-17 19:47李庚武
建材與裝飾 2020年36期
關(guān)鍵詞:指針引擎圖紙

李庚武

(重慶市消防救援總隊,重慶 400000)

0 緒論

當前,全國消防救援隊伍陸續(xù)引進計算機模擬訓練和進行實戰(zhàn)輔助的相關(guān)軟件,但實際應用效果并未達到預期,其用于參觀演示的意義大于實戰(zhàn)意義。針對當前存在的問題,對建筑自動三維建模功能的研究實現(xiàn),可以極大彌補現(xiàn)有系統(tǒng)使用的局限性,突破使用場景單一、建模工作量反復的桎梏。通過利用重點單位的建筑圖紙文件,在虛擬場景中快速完成建筑場景模型的建立并完成對建筑信息向FDS 計算場景文件的轉(zhuǎn)換,體現(xiàn)了自動的特點,減少使用者的工作量。

1 基本理論與相關(guān)軟件概況

自Autodesk 公司1982 年推出第一款基于類似DOS 操作方式的自動計算機輔助設(shè)計軟件AutoCAD V1.0 以來,其經(jīng)過三十余年的版本更新和發(fā)展,憑借在輔助設(shè)計中豐富的功能,已廣泛應用于建筑圖紙繪制、工業(yè)制圖、服裝設(shè)計等眾多領(lǐng)域。

OSG 三維渲染引擎是一個基于工業(yè)標準OpenGL 的API 接口,作為一個開源和跨平臺的渲染引擎,隨著逐步的發(fā)展,它的整個體系結(jié)構(gòu)經(jīng)歷了一個由簡單向復雜的過程。OSG 的主要部分由核心庫、NodeKits、插件、用于互操作的類庫以及不斷發(fā)展和擴充的函數(shù)構(gòu)成。核心庫是整個渲染引擎中最重要的部分,它負責整個程序三維場景生成和渲染的基本功能,它又由三個類庫組成:OSG 庫包括在構(gòu)建場景圖中需要用到的節(jié)點類和控制場景渲染狀態(tài)的類等;Util 庫,顧名思義是指和工具相關(guān)的類庫,提供了在三維場景中用于實現(xiàn)使用者和程序進行交互的交運算類和對場景中的內(nèi)容進行控制和優(yōu)化的工具;DB 庫用來在程序中讀取和調(diào)用一些已經(jīng)建立好的二維或三維模型。

2 建筑自動三維建模信息源獲取

2.1 DWG 格式文件結(jié)構(gòu)分析

一個完整的DWG 格式建筑圖紙內(nèi)部包括HEADER、ENTITY、TABLE、BLOCK ENTITY 和CONTINGENCY HEADER 五部分,采用了五種標準的數(shù)據(jù)類型來記錄所有信息,分別是char、byte、double int、long int 和double float。第一部分HEADER 是DWG 文件中基礎(chǔ)信息部分,包含文件的版本、用戶基本信息和各種信息內(nèi)存的索引地址、系統(tǒng)變量等。

位于中間的ENTITY、BLOCK ENTITY、TABLE 這三個部分屬于記錄DWG 文件信息中的圖形數(shù)據(jù)區(qū)域。

2.2 實現(xiàn)基礎(chǔ)與開發(fā)環(huán)境

本文采用開源的AutoCAD 二次開發(fā)技術(shù)DWGDirect 來完成建筑關(guān)鍵信息讀取工作。DWGDirect 的類庫和數(shù)據(jù)庫結(jié)構(gòu)是與DWG 文件格式中建筑圖紙信息的存儲方式緊密聯(lián)系的。Auto-CAD 軟件在讀取DWG 文件格式時是將所有信息以數(shù)據(jù)庫的形式進行調(diào)用,整個數(shù)據(jù)庫在內(nèi)存中分為十個部分,包括一個用來存儲一般對象的對象詞典和九個符號表,用戶在添加圖紙文件中的信息時,AutoCAD 軟件在相應類型的符號表中添加記錄。每個類型的表記錄中有包括相應的模型空間和圖紙空間,而模型空間中包含了圖紙文件中的實體信息[1]。因此DWGDirect 類庫也采取類似的功能接口,分別讀取DWG 文件的每一類信息。

2.3 DWG 圖紙信息讀取

一個完整的建筑工程DWG 格式文件包含了大量信息,因此在實際讀取DWG 格式文件信息進行處理的過程中,主要需要解決以下幾點問題:①如何提取有效信息除去冗余信息;②將建筑圖紙讀入信息之后如后將不同類型的構(gòu)件進行準確識別;③如何兼顧計算機的效率,使計算性能用在信息讀入上的開銷不至于過大。

3 建筑自動三維建模具體實現(xiàn)

3.1 定義存儲結(jié)構(gòu)體

所有與建筑三維自動建模生成相關(guān)的功能均由建筑建模模塊實現(xiàn)。這個模塊包括了圖紙信息的讀取,數(shù)據(jù)處理與存儲以及調(diào)用三維渲染引擎進行展示的所有功能。由于要實現(xiàn)信息的讀取功能,首先需要定義用于儲存信息的容器,以用于讀取DWG文件中的建筑構(gòu)件信息。

通過分類整理,將圖紙中所涉及的建筑構(gòu)件實體信息類型分為五類,包括點、線、圓、弧、多段線五種基本實體結(jié)構(gòu),其中線可以實現(xiàn)墻、柱、門、窗、洞的信息存儲,圓可以實現(xiàn)感溫探測器、煙感探測器和噴淋系統(tǒng)的識別存儲。

3.2 創(chuàng)建圖紙信息讀取類

在建筑建模模塊類中,首先有針對性地定義這三個接口的指針對象:①代表整個應用程序的指針對象,通過這個指針對象能以面向?qū)ο蠓绞絹硖幚響贸绦颍倮闷鋺贸绦驅(qū)傩詠聿僮髦鲬贸绦?;②負責控制整個應用程序的各個屬性和應用程序?qū)用娴闹羔槍ο螅ㄟ^這個指針對象用于完成應用程序?qū)用娴囊恍┕ぷ饕约芭c操作系統(tǒng)等外界環(huán)境的交互;③代表當前圖紙的指針對象,并在構(gòu)造函數(shù)中對三個指針的值初始化為NULL。

其次在模塊中定義三個函數(shù)分別用于對類進行相關(guān)的初始化、載入DWG 文件以及完成DWG 文件讀取的操作。初始化函數(shù)對系統(tǒng)的內(nèi)存進行釋放,完成環(huán)境的初始化;載入DWG 文件的函數(shù)以參數(shù)的形式將文件的路徑和名字以參數(shù)的形式傳入系統(tǒng)中,使系統(tǒng)能夠準確地找到文件,并通過句柄對象指針內(nèi)部函數(shù)獲取當前圖紙;文件讀取函數(shù)通過其內(nèi)部的獲取數(shù)據(jù)庫函數(shù)從而完成文件信息的獲取,并定義一個長整型變量用于記錄圖紙文件中塊的個數(shù)。通過以上程序流程就可以對文件信息進行循環(huán)讀取,循環(huán)次數(shù)為記錄塊個數(shù)的值,完成后釋放數(shù)據(jù)庫并關(guān)閉文件。

再次,定義六個臨時接口對象向量指針用于臨時存儲不同實體信息地址,包括點、直線、弧形、圓、多段線和屬性。獲得信息后根據(jù)類型的不同,調(diào)用四個不同的實體讀取函數(shù)將實體信息讀取后存入相應結(jié)構(gòu)體的向量容器中。四個函數(shù)分別用于讀取DWG 文件中的直線參數(shù)、圓參數(shù)、弧參數(shù)以及多線段參數(shù)。

最后,在信息讀取完成后,需要采取的步驟是將所讀取的信息分門別類的放入相應的存儲容器中,由不同的向量容器來記錄不同類型建筑構(gòu)件的線條。

3.3 創(chuàng)建場景交互類

為保持各部分的獨立性,系統(tǒng)采用了面向?qū)ο蟮脑O(shè)計方式,把各部分的實現(xiàn)函數(shù)按功能區(qū)分封裝成獨立的類。首先根據(jù)類型的不同,將所有建筑構(gòu)件分為墻、樓梯、樓板、門、窗、感溫探測器、感煙探測器和水噴淋八種,并根據(jù)每種構(gòu)件的特點確定所需要的輸入?yún)?shù)。然后針對這八種類型分別定義DrawWall、DrawStairs、DrawLayer、DrawDoor、DrawWindow、DrawTem、DrawSmo、DrawSpr八個函數(shù)。其次再將每種構(gòu)件的生成分解為最基本的點線面圖形,建立三個基本圖形函數(shù)用于繪制三維場景中的基本圖形,通過八個建筑構(gòu)件生成函數(shù)將參數(shù)傳入基本圖形函數(shù)中,由基本圖形完成每個構(gòu)件的生成。

3.4 創(chuàng)建渲染引擎類

首先在工程文件中加入OpenSceneGraph 的鏈接庫,然后建立OSG.cpp 文件和OSG.h 頭文件,步驟如下:

(1)在可視化引擎:渲染引擎類中增加以下成員變量:

窗口句柄:用于引用所操作展示的窗口。

場景根節(jié)點:用于實現(xiàn)整個場景所有對象的加載和控制。

(2)定義用于選擇操作模式的整形變量,包括三個狀態(tài):

trackball 操作器、flight 操作器、第一人視角漫游器。

(3)定義用于選擇顯示模式的整形變量,包括兩個狀態(tài):

普通顯示和立體顯示。

(4)在可視化引擎:渲染引擎類中增加成員函數(shù)分別完成OpenSceneGraph 三維渲染引擎的初始化操作,完成操作器、場景、相機配置、燈光等的初始化,然后編寫建立窗口和相機的函數(shù),最后建立三個函數(shù)分別負責繪制前后的處理工作和渲染工作。

3.5 場景的組織

對建筑構(gòu)件的生成實質(zhì)上是將構(gòu)件分解成不同的基礎(chǔ)圖形,調(diào)用DrawBox 函數(shù)將每一個獨立的三維圖形通過子節(jié)點的形式加入整個建筑三位場景中。同樣在OSG 渲染引擎中,每一個建筑構(gòu)件也是通過成為子節(jié)點的形式加入到整個場景樹中的。三維場景的體系構(gòu)架、數(shù)據(jù)組織結(jié)構(gòu)是采用包圍體層次來實現(xiàn)對場景圖形的管理,采用樹狀結(jié)構(gòu)來保存信息[2]。系統(tǒng)在場景交互類中定義OSG 渲染引擎指針對象,通過組節(jié)點管理葉節(jié)點。組節(jié)點類一般是作為父節(jié)點或者根節(jié)點出現(xiàn),可以使用加入子節(jié)點函數(shù)將下一級的場景加入其中,就像樹的分叉一樣。組節(jié)點類是繼承至Referenced 類。

OSG 渲染引擎中采取了智能指針的計數(shù)方式,當用戶使用該模版類管理一個對象時,內(nèi)存計數(shù)器便在本身的基礎(chǔ)上加1,即樹的分叉下,每增加一個枝節(jié),分叉點的計數(shù)增加1,當分叉下的枝節(jié)每減少一個,分叉點的計數(shù)減1,當分叉下的所有枝節(jié)都取消時,分叉點的計數(shù)為0,整個分叉從場景樹中銷毀并釋放內(nèi)存。

4 結(jié)束語

建筑自動三維建模功能的研究實現(xiàn),可以極大彌補現(xiàn)有系統(tǒng)使用的局限性,突破使用場景單一、建模工作量反復的約束。通過利用重點單位的建筑圖紙文件,在虛擬場景中快速完成建筑場景模型的建立并完成對建筑信息向FDS 計算場景文件的轉(zhuǎn)換,體現(xiàn)了自動的特點,減少使用者的工作量。下一步,通過煙氣模擬、訓練設(shè)計等環(huán)節(jié)的研究,即可完成一個簡單已用,可擴展性強的系統(tǒng)平臺。

猜你喜歡
指針引擎圖紙
新海珠,新引擎,新活力!
垂懸指針檢測與防御方法*
淺談汽車線束產(chǎn)品圖紙管理
看圖紙
三生 三大引擎齊發(fā)力
模具圖紙在全生命周期內(nèi)的信息管理系統(tǒng)研究
藍谷: “涉藍”新引擎
為什么表的指針都按照順時針方向轉(zhuǎn)動
淺析C語言指針
One?。牛睿纾椋睿濉。蹋澹妫糁皇O乱粋€引擎