1. 程式人生 > >智慧家居設計軟體——繪製戶型

智慧家居設計軟體——繪製戶型

目標:繪製如圖所示戶型       

2D結果:如圖所示繪製2D戶型圖,包含房間資訊和各牆體   

3D結果:一鍵生成如圖所示3D房型,包含烘焙光照資訊,場景渲染

                                          實現過程 

          {由於實現的程式碼量過大,只提供主要實現思路給大家,有興趣的小夥伴可以嘗試自己動手寫一寫}

分析繪製戶型三要素:牆體、牆與牆交點、由牆體包圍成的封閉空間

一、牆體

      首先需要知道繪製牆體的方式,由滑鼠點選拖拽繪製一條直線作為建立的牆體。一面牆由mesh動態建立得來(不熟悉unity建立mesh物體的小夥伴可以查詢相關資料)包含兩個關鍵點資訊:一面牆體各個頂點、牆體方向。

        Unity的預設Cube為立方體,由6個面組成,頂面為矩形,由4條邊、4個頂點組成。而我們建立的牆體則由6個面6個頂點組成。

Unity預設Cube

建立的單面牆體

二、牆與牆交點

    牆與牆交點在每一面相交牆的邊中心點位置,即一面牆頂面六個頂點的0和3的頂點位置。

每一面牆有兩個頂點,作為牆與其它牆的交點,兩個頂點可以計算此面牆的方向,而牆體又有內外牆之分,這點我們後文提及。

首尾兩點為滑鼠點選時建立的起點和終點,為圖中所示0和3對應位置。相信有小夥伴此時會有疑問了,長方體每個面都是矩形,為何多此一舉頂面要建立6個頂點?答案如下圖:

  是不是茅塞頓開?現在知道為何要頂面要分為6個頂點了吧。沒錯,為了牆體相交時能讓多面牆“完美融合”到一起。

三、封閉空間

   何為封閉空間?為何要形成封閉空間?如何形成封閉空間呢?我們帶著問題來看實現過程。

此軟體裡所指的封閉空間為多面牆體圍誠的閉合區域,此閉合區域可用於計算地板、天花板、室內面積、建築面積等資訊。