Physics-Based Domino Exhibiting and Layout Designing System

Download Report

Transcript Physics-Based Domino Exhibiting and Layout Designing System

PHYSICS-BASED DOMINO EXHIBITING
AND
LAYOUT DESIGNING SYSTEM
基於物理模擬之骨牌展示與設計系統
郭銘家 楊耀鈞
Advisor: Damon Shing-Min Liu
Introduction

為了讓骨牌擺放能克服現實世界中種種不
利的因素,我們製作一套能設計骨牌並能模擬
骨牌倒榻情況的系統,協助使用者設計骨牌而
不受一般環境與人為因素影響。

在這個專題實驗中我們將研究如何有效率
地建立骨牌數位影像資料,並探討如何使用適
當的模擬方式,使骨牌的反應趨近真實世界的
模式,並讓使用者能夠利用此系統迅速設計骨
牌並且能適當的調整其中的任意骨牌。
Environment
 開發系統:Windows XP
 開發平台:Microsoft Visual Studio 2008
 相關軟體工具(函式庫):
 OpenGL(Open Source Graphics Library)
 Bullet 物理引擎(Bullet Physics Library)
Frame
使用Bullet Physic的函式庫來建構初始世界,
設定Bullet環境參數:重力、摩擦力; 建立Bullet物
件,設定個別大小位置與質量,套用Bullet函式來
計算與模擬骨牌相互的物理動態和反應參數。
將得到的參數使用OpenGL繪出計算後的骨牌;擺
放和模擬的空間場景,並提供功能選單與使用者互
動。
OpenGL
Texture
 圖片放大
 填充像素,選擇的貼圖圖素只需要一個,並且
使用線性內插的方式來處理。
 圖片縮小-Mipmap
 將圖片分成多個的階層儲存。
 第一層-原本的圖片
 第二層-縮小1/2 * 1/2 後的圖片
 第三層-縮小1/4 * 1/4 後的圖片
 第 N 層- 1x1個像素的圖片
OpenGL
Texture
 圖片縮小-Mipmap
 優點:提升畫面品質,並且增加執行效率。
 缺點:增加記憶體的負擔,約花費原貼圖大小
的30%記憶體。
 本專題使用Mipmap中Trilinear縮小取出最
接近大小的兩圖層,在從其中取出最近的
四個點取權重做平均。
Methodology
Design Domino
 本專題提供讓使用者即時的設計骨牌路線,依
據使用者規畫的路線展示在主視窗中。
最初的演算法
 依照使用者所給予的個點做為展示出的骨牌位
置。
 缺點:
 沒有賦予骨牌的旋轉角度。
 骨牌間距的問題。
 路線轉彎處的問題。
Methodology
Design Domino
演算法I
 使用者所畫的路線各點為取樣的點。
 計算每一點與下一個點相連的線段斜
率,使用arctan回推出
與Z軸夾角,做為骨牌
旋轉角度的依據。
Methodology
Design Domino
演算法I
 將每一個點與前後點做距離處理。
 骨牌與骨牌間的距離理想值為½的骨牌高。
 兩個點的距離 < ½的骨牌高:
 刪除後面的點。
 兩個點的距離 > ½的骨牌高:
 該兩點之間填入骨牌。
 骨牌的間距為1/2骨牌高。
 各個骨牌的旋轉角度使用線性內插法計算出。
Methodology
Design Domino
演算法I
 問題:
 無法解決骨牌路線轉角大於30度的問題。
Methodology
Design Domino
演算法II
1.路線上前後兩點取中點,集合新取得的點,成為新
路線。
2.進行骨牌間距判斷。
3.重新計算骨牌旋轉角度。
重複步驟1~3 。
Methodology
Design Domino
演算法II
重複運算將使得其路線轉角圓弧化。
Methodology
Design Domino
演算法II
 黑色為原本有轉角的路線,在不斷運算下會
呈現紅色的圓弧路徑,繼續運算則呈現綠色
路徑。
Methodology
Design Domino
演算法II
優點:
能夠處理的路線轉角趨近150度。
缺點:
因為取中點會使點的總數少一,若原先取樣數目
太少,會導致展示出的路線缺乏圓弧,而以線段顯示
骨牌路徑。
路線轉角大於150度無法處理。
Demo
Menu
Push domino
Demo
Menu
Generate domino
在Menu選擇Generate domino
的模式
使用滑鼠點擊,在該位置
產生一個骨牌。
Demo
Menu
Generate domino wall
在Menu選擇Generate Wall
的模式
在木質地板上使用滑鼠點擊,
在該位置產生一道骨牌牆。
Demo
Menu
Delete domino
在Menu選擇Delete的模式
在骨牌上使用滑鼠點擊,該
骨牌以重力反轉向上飛行後
消失。
Demo
Menu
Rotate domino
在Menu選擇Rotate domino
的模式
•在骨牌上使用滑鼠連擊兩次,
該骨牌產生一個箭頭作為選取
欲旋轉骨牌的標記。
•移動滑鼠,骨牌的面向會根據
滑鼠的位置做改變。
•最後再點擊一次滑鼠,做為確
定。
Demo
Menu
Switch
mouse format
•切換兩種使用滑鼠移動骨牌的操作模式:
•以平移的方式移動。
•以點擊到的點為支點的方式移動。
Switch lens format
切換兩種視角移動的操作模
式:
Page Up:視角向前移動
Page Down:視角向後移動
•模式 II :
•模式 I :
•Up :視角向上旋轉
•Up :視角向上移動
•Down :視角向下旋轉
•Down :視角向下移動
•Left :視角向左旋轉
•Left :視角向左移動
•Right :視角向右旋轉
•Right :視角向右移動
Demo
Menu
Design domino
Design Drawing
在 Menu 選擇 Design
•出現【Design Drawing】的視窗。
•提供使用者以滑鼠拖曳的方式規劃骨
牌路線。
•綠色:正在設計的骨牌路線
•黃色:以確定的骨牌路線
•使用【Design Drawing】視窗的
Menu選擇路線設計的處理方式。
將綠色變為黃色,並將計算結
果展示在主視窗中。
主視窗
:
將綠色設計的路線清除, 保
:留以設計黃色的路線。
Demo
Menu
Restart & Special
特殊的場景:
特殊場景:
骨牌牆爆破
骨牌牆
將一切的狀態回
造成因素:
到初始的設定
碰撞的物件質量過小
END
demo
Thanks for listening.