3D模擬系統 以軟體雛型開發

開發方式 軟體雛型 (Software prototyping)

軟體雛型是一種開發流程,由快速製作模型驗證以及演示規格以及可行性,因為沒有開發過3D相關的經驗,不確定性相當高,在無法全面的熟悉整體功能下,勢必有很都假設都是相當大的風險,在這樣的前提以做中學,以技術累積方式開發,降低開發風險,延遲衍生需求的設計,先開發關鍵功能再依照需求以及可行性修改設計,減少因平台以及技術的不確定性而投入太多資源在某個功能上的風險,當技術及經驗累積到相對成熟的程度在進行細部的設計.

開發子系統

3D模擬軟體我大致將它切分為三項,各項間技術並無相依,第一部分為產生資料以及實際運算的部分為產業知識的部分,各個物件必須對應不同事件發生的邏輯判斷,以及依照時間做差補或送出不同時間狀態,第二部份是資料流,藉由介面將資料傳送到顯示畫面,以及將顯示畫面端滑鼠事件或對環境修改傳回,第三部分是View顯示介面以及修改功能實作.
  • 離散事件系統

    主要程式運作核心使用C#撰寫,必須實作各個物件(輸送帶,機器手臂)以及工件交互作用的部分.

  • 資料流

    使用C#目前以 NetMQ 以及 Json.NET 作為資料解析以及廣播機制.

  • 3D模擬畫面 Three.js

    因為模擬軟體在介面上開發的項目相當繁瑣,在三維的控制上也有一定的複雜度,在各個高低階不同的框架上開發方式以及困難度也不太相同,在尚未確定規格以及開發難度前提下,為了驗證資料的正確性,必須要有一個方便且可靠易用的方式觀測,以最基本的場景、視角以及物件的方式,用高階繪圖函式庫學習基本用法跟機制,此類View的原理都大致相同,待確認需要達到的CAD相關功能的程度,又或其實不需要,來選擇合用的模擬畫面框架或函式庫.

    以rhino來說,在嘗試製作STL旋轉動畫的時候遇到無法釋放記憶體,導致若動畫一直播放會將記憶體耗盡,並網路上也有人遇到此問題,沒有明確的解決方法也無法在C#強制式釋放掉,在這個測試中覺得rhino的高階的確在動畫應用的確的不友善,嘗試了過後,依然沒有解法也不想浪費時間被綁定在特定平台上,越高階的框架通用性越低,以rhino高階但並不是在動畫製作上應用,可能可用但就要在更確切知道要開發的目標在該平台上能後支援的功能以及需要解決的問題來評估,以目前來說逐個解決框架限制的問題不如先以較低階的通用函式庫起手,才能評估其帶來的效益.

技術藍圖

C# NetMQ Json.NET Three.js

雛形

雛型一:藉由資料流傳出機器手臂座標顯示在View上.

20170824

Show Comments