之前的案例涉及的動畫效果都是平面展示,但是ivx中也可以通過3D世界組件展示3D的效果。今天我們就以跑馬燈為例來講一下ivx中的3D世界是如何使用的。
一.3D世界
3D世界最基礎的組成部分就是坐標系和攝像機。坐標系是一個空間直角坐標系,3D世界下的所有組件都會有一個XYZ坐標來決定它在3D世界中的位置,而攝像機負責控制我們的視角,下圖中紅圈處就是攝像機的位置,黃線框起來的區域就是我們的視角范圍。
另外我們還可以在3D世界中添加各種光源,字體,圖片,圖片序列和物體模型這些具有展示效果的組件,除此之外還有3D容器,他可以作為多個組件的父容器下,統一控制這些子組件的狀態。
二.跑馬燈
1.攝像機位置
首先調整攝像機的坐標位置,然后在3D世界中添加一個3D容器,統一管理跑馬燈的8張圖片。
我們點擊3D容器,可以看見3D容器自身也擁有一個小坐標系,在不對3D容器進行XYZ軸旋轉的情況下其自身坐標系是與3D世界這個父容器的坐標系方向一致的,自然3D容器內部的組件其實也會以3D容器這個父容器的坐標系為基準的。
總結一下就是每個組件自身的坐標系用于作為其子組件的XYZ坐標的基準和組件自身XYZ軸旋轉的基準。比如我們將3D容器Z軸旋轉90度,可以看到其內部的圖片1的坐標軸就隨之發生了旋轉。
2.圖片位置
首先將8張圖片的原點設置到中心點上,然后可以看到圖片自身的坐標系,我們將圖片參照自身Z軸旋轉90°把它橫過來,最后為了避免圖片重疊讓圖片向Y軸正方向移動一定距離,設置圖片的Y軸坐標為100。
其它位置的圖片同理,不在坐標軸上的圖片要同時設置Y坐標和Z坐標,數值是100÷(√2),約等于70.7。至于其他圖片的旋轉效果易知都是按照圖片自身的X軸旋轉。
3.時間軸
最后就是通過時間軸讓3D容器繞其自身X軸旋轉。
我們給時間軸添加2個時間標記,分別在0s和1s的位置。這是因為時間軸開啟了循環播放,所以它播放到2s時就會從0s重新播放,即2s與0s是同一時間點,結尾就是開頭。時間標記可以添加事件,當時間軸播放到該時間點就會觸發。這里是用一個數值變量來設置3D容器的X軸旋轉角度,每播放到一個時間標記就給該值加10,以此來達到旋轉的效果。
其實細想一下就會發現這個時間軸充當的就是一個觸發器的作用,我們可以直接用觸發器替換掉。不過3D世界內不能添加觸發器,我們把它添加在橫幅下。如下設置后最終效果是一樣的。(數值變量和觸發器不受布局層級影響)
另外我們還可以直接給3D容器添加一個軌跡自動循環播放,初始關鍵幀3D容器X軸旋轉角度0°,末尾關鍵幀360°形成一個閉環,這樣做最終效果也是一樣的。
4.前后翻跑馬燈
上面實現的是上下翻的跑馬燈,實現前后翻的跑馬燈效果原理上也是一樣的,只是變動了一些參考坐標軸,大家可以自己動手嘗試改造一個。
總結
3D世界中最重要的就是各個組件的位置關系了,首先要分清的是哪些屬性值是參照父容器坐標系,哪些屬性是參照自身的坐標系。其次就是明確它的父容器是誰,它的父容器坐標系的基準方向。建議是中間層級的容器盡量不要進行旋轉,都保持與3D世界的坐標系方向一致,這樣是最合乎直觀感受的,否則中間旋轉來旋轉去很容易出錯。