eyeshot的官方demo中有乙個功能是近期專案需要用到的,就是動畫效果。其中主要運用到blockreference類,該類下的兩個方法moveto(dictionaryblocks)和animate(int framenumber)分別用來移動某個block中的實體和作為介面與檢視viewportlayout互動。
假如我匯入了乙個模型,該模型中包含多個entity和material,這裡material不用加以管理,只需要處理entity。首先要寫乙個新的類繼承類blockreference,重寫moveto方法和animate方法,留出乙個介面來接收block。例如可以這樣寫:
classmyentity : blockreference
protected
override
void animate(int
framenumber)
public
override
void moveto(dictionaryblocks)
}
即animate函式和moveto函式不斷地執行,進而達到移動模型的效果。 至於執行的頻率則與引數framenumber有關,如不使用stopanimate()方法停止移動,就會一直運動下去,可達到官方demo中那種迴圈運動的效果。
如上,在自定義類myentity的建構函式中的引數,可按照自己的需要結合blockreference類來定義,不過我理解的是,至少需要乙個引數,因為繼承了blockreference類。這裡只用到了blockname這乙個引數,就是與外界的介面。在匯入模型之後,將所有匯入模型中的entity都新增到乙個block中,並以該block的name為引數例項化類myentity,將該類新增到viewportlayout的entities列表中。如需執行動畫,用方法viewportlayout1.startanimation()停止則用viewportlayout1.stopanimation(),比如可以這樣使用:
privatevoid viewportlayout1_workcompleted(object
sender, workcompletedeventargs e)
viewportlayout1.blocks.add(
"block1
", b);
myentity me = new myentity("
block1");
viewportlayout1.entities.add(me);
}}
執行動畫以及停止動畫可在任意需要的地方新增,比如按鈕點選 事件中。
當然,以上只是簡單記錄了基本使用方法,如果想要實現比較複雜的動畫效果,不僅在animate函式中需要詳細計算以外,還可能用到timer來控制執行時間,或者其他手段。總之,知道了最基本的用法就可以根據需求不斷擴充嘛。
學習筆記 雜湊學習筆記
hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...
學習筆記 CentOS 學習筆記01
簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...
筆記 spring cloud 學習筆記
1 spring cloud 是什麼 spring cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...