蘭州工商學院 陳克
隨著信息科技技術時代的到來,數學媒體技術也隨之出現在人們的視野中,隨著社會各大行業對于數學媒體技術的需求,數字媒體技術得到了廣泛的運用,并且有了一定的運用效果。近些年來,隨著我國對動漫產業發展的大力支持,動漫產業發生了很大的改變,傳統的技術已經不能夠進一步推動動漫產業的發展,而且也跟不上時代發展的需求了,基于此,動漫設計技術必須及時進行創新,將數字媒體技術有效的運用到其中就是很好的創新方式,通過運用數字媒體技術來進一步推動動漫產業的發展。
近年來,我國的綜合國力一直處于持續增長的狀態,科技信息技術也不斷加強,數字媒體技術也得到了更廣泛的運用,當前數字媒體技術已經有效的運用到動漫制作的各個環節中,包括人物設計、場景虛構等方面??梢哉f,數字媒體技術對于推動動漫設計具有創新性的意義。本文將對動漫設計中數字媒體技術的運用進行分析和案列的技術探討。
我們常說的動漫設計,就是將如今社會的時代藝術理念和具體的藝術實踐相結合,形成一門專業性知識的學科,并通過讓學生們學習這些藝術知識加強自己的審美能力,以及不斷的創新自己的思維,通過自己對于事物的理解與鑒賞進行創作,通過使用專業的制作軟件工具對自己所理解的藝術品進行進一步的設計與制作,最終將其設計為動漫作品。
我們所說的數字媒體技術,就是將信息科學與數字技術擺在首要位置,結合當今的大眾傳播理念,在現代藝術的有效引導下,將信息傳播技術廣泛的運用到我國的各種行業中的一門綜合性的技術。數字媒體技術在各個方面都得到了廣泛的運用,數字媒體慢慢的變成了一種像語言、文字一樣的信息載體。
腳本語言是為了縮短傳統的編寫-編譯-鏈接-運行過程而創建的計算機編程語言。雖然許多腳本語言都超越了計算機簡單任務自動化的領域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。虛擬現實技術(簡稱VR),又稱虛擬環境、靈境或人工環境,是指利用計算機生成一種可對參與者直接施加視覺、聽覺和觸覺感受,并允許其交互地觀察和操作的虛擬世界的技術。
運用虛擬現實技術(VR)、增強現實技術(AR)、綜合現實技術(MR),將虛擬三維動畫展現出來,給予作品新的生命,將會給人不一樣體驗。通過數字媒體技術,制作者將全方位的還原一個虛擬動畫的環境或將虛擬與現實完美的結合,體驗者可身臨其境的感受并走進這個世界,從而能多角度、多層次的體驗和欣賞作品,這種感覺給人一種直觀和具有創新的體驗和新鮮感。
案例:動漫作品中捕魚場景的交互設計:
本例講解三個重要技術:(1)將各種魚做成Prefab(游戲預制體),用Instantiate()將其加載入場最,用Destroy()從場景中銷毀;(2)魚出現在屏幕中的隨機位置,這里用到Random.Range()去生成隨機數,搭號中填寫隨機數的大小范圍,我們用這種方法生成魚的X.Y 位置值(不超過屏幕邊緣);(3)應用InvokeRepeating 函數來實現計時功能。
(1)新建項目,導入素材。
步驟1 新建一個Unity 項目(3D 模式),命名為“Catch Fish”。進入之后,按“Crl+S”快捷鍵將默認場景另存為Game。
步驟2 將3 個金槍魚素材,拷貝到項目Assets 文件夾下。
(2)創建一個Plane 并賦予材質。
步驟1 選擇萊單中的“GameObject—3D Object 一Plane”命令,創建出一個Plane(背景板)。
步驟2 使用旋轉工具將Plane 豎立起來,或者是在Inspector 窗口中設置Plane 的Rotation X 為-90,立在攝像機前方。
步驟3 使用縮放工具將Plane 拉長并擴大,直到在Game 窗口中預覽時充滿整個屏幕。
步驟4 雙擊進入已有的文件夾Materials,在空白處單擊鼠標右鍵,在彈出的菜單中選擇“Create-Material'”命令,創建出一個材質,命名為Hai,然后將Hai 拖給場景中的Plane。
步驟5 在Assets 窗口中回到頂層級Assets 在Scene 窗口中單擊選中Plane,在右側Inspector 窗口中展開它的材質組件,然后從Assets 窗口中將資源Ocean(大海)拖到材質組件下的Albedo 欄上釋放完成A1bedo 貼圖的指定。
(3)創建并填充游戲預制體。
我們在場景中加入金槍魚的做法不同于以往從Assets 窗口中直接將資源拖到Scene 窗口、手工放置的方式。而是采用游戲制作中的主流方法一把資源轉成Prefab(預制體)后放在Assets 窗口中的Resources 文件夾下,然后用代碼動態地加載到場景。
步驟1 在Assets 窗口空白處單擊鼠標右健,在彈出的萊單中選擇“Create 一Prefab”命令,創建游戲預制體,命名為myFi。將原始素材“金槍魚.FBX”拖到myFi 上釋放,這樣就用金形魚的內容填充了游戲預制體myFi。
步驟2 在Assets 窗口空白處單擊鼠標右鍵,在彈出的萊單中選擇“Create-一Folder”命令,創建文件夾并命名為Resources(代碼動態加載Assets 資源,一般是放在Resources 文件夾中),從旁邊將游戲預制體myFi拖到Resources 文件夾中。
(4)調整攝像機。
步驟1 本例制作的是2D 游戲。選中Main Camera主攝像機,在Inspector 窗口中將它Projection(發射方式)設置為Orthographic(無透視)。
步驟2 因為無透視,所以可以用移動工具中把主攝像機稍微拉遠,使其遠離Plane,保證主攝像機和Plane之間有足夠大的空間。
(5)嘗試擺放魚的位置,記錄位置。
本例將以代碼方式加載金槍魚。在這之前,我們先手動向場景中添加了金槍魚,目的是觀測魚在畫面中合適的位置、大小。然后記錄下這些數據,以便在代碼中使用,觀測完之后刪掉場景中的魚。
步驟1 從Assets 窗口中的Resources 文件夾中,將myFi 拖入Scene 窗口中,使用移動工具擺放它到主攝像機和Plane 之間。可以看到,魚的體型明顯有些偏大。
步驟2 選中魚,在Inspector 窗口中調整它的Sca1e為“X=0.2,Y=0.2,Z=0.2”。魚的尺寸變得比較合適了,記錄此時的縮放值為0.2。
步驟3 在Scene 窗口中,使用移動工具調整魚的位置,先把它放到主攝像機拍攝畫面的左上角。
步驟4 保持魚為選中狀態,在Inspector 窗口中讀取一下條魚的位置。以我們本次制作的場景為例,魚在左上角時它的Position 是X=-9.6,Y=5.07m,Z=11.1。記錄下這個魚在左上角極限位置時的坐標值,然后再依次調整魚到右上角、左上角和右下角的極限位置,讀取坐標值。我們得到了魚在屏幕中4 個角的位置,也就得到了它在場景中的X 和Y 的極限值,在生成隨機數時需要用到它們。
步驟5 選中場景中的那條魚(myFi),按下Delete 鍵刪除它。
(1)創建捕魚游戲的主腳本,我們把它掛在主攝像機上。
步驟1 在Assets 窗口中單擊鼠標右鍵,在彈出的菜單中選擇“Create-C#Script”命令,創建新腳本,命名為GameControl。
步驟2 選中場景中的Main Camera 主攝像機,然后從Assets 窗口中將GameControl 拖到Inspector 窗口的底部釋放。
(2)編寫代碼。
在Assets 窗口中雙擊GameControl 打開MonoDevelop編輯器,編寫代碼,核心代碼如下:
public class GameControl:MonoBehaviour{
float xx: //創建浮點型數據變量xx,魚的位置坐標的X 軸數值
float yy: //創建浮點型數據變童yy,魚的位置坐標的Y 軸數值
f1oat zz=53: //創建浮點型數據變量zz,魚的位置坐標的Z 軸數值,這里為固定值
Gameobject myFish;
Quaternion xuanzhuan=new Quaternion(-150,120,-40,80):
//創建四元數對象,指定魚的旋轉角度,四個旋轉角度值可在后期反復嘗試修改
void Start (){
InvokeRepeating ("EmergeFish",2f,2f);
//倒計時2 秒后執行EmergeFish 函數創建魚,每2 秒鐘創建一次
InvokeRepeating ("DestroyFish",3f,2f);
//倒計時3 秒后執行DestroyFish 函數,即銷毀魚,每2 秒銷毀一次}
void Update (){
void EmergeFish(){ //創建魚的函數
xx=Random.Range(-9.6f,9.5f); //xx 賦值為-9.6 ~9.5 之間的隨機數
yy=Random,Range(-2,9f,5); /yy 賦值為-2.9 ~5 之間的隨機數
myFish=(GameObject)Resources.Load("myFi",typ eof(GameObject));
/游戲物體myFish 加栽Resources 中的游戲預制體
Gameobject yu=GameObject.Instantiate(myFish,new Vector3(xx,yy,zz),xuanzhuan)as GameObject; //Instantiate()方法為實例化,就是把物體從Assets 中添加進場景,該方法括號中應填入3 個值:加載資源名、位置的三維向量、旋轉角度的四元數
yu.transform.localScale=new Vector3(0.2f,0.2f,0.2f);
//創建出來之后,再調整尺寸,將X、Y、Z 軸的值都修改為0.2
yu.name="fish"; //給添加進場景之后的實際游戲物體命名}
void DestroyFish(){ //銷毀魚的函數
GameObject destroyTarget-GameObject.Find("fish");//找到場景中已添加的游戲物體 fish
GameObject.Destroy(destroyTarget,0); //立即銷毀魚,延遲時間為0 }}}
(3)代碼分析。
在Start 函數中,我們使用計時法InvokeRepeating去調用創建魚的函數EmergeFish。在創建魚的函數中,主要是以Instantiate 方法從Assets 加載資源并創建到場景中,創建出來的魚的位置是Random.Range 隨機生成的,旋轉角度是一個四元數,當中四個數據可以自己測試,大小是之前測試時記錄下來的0.2。
另一個計時方法InvokeRepeating 調用銷毀魚的函數,銷毀魚比創建魚的初始執行慢了1s,即允許魚出現在場景中1s,然后銷毀。間隔2s,又開始創建魚。這樣,魚每隔2s 出現在隨機位置1s,我們就可以捕魚了。
(4)測試捕魚效果。
按下播放按鈕,進行測試,觀看魚的隨機出現效果。
由上面的案例可以看出,在動漫設計中為了提高受眾的參與度和交互性,使用到了大量的腳本語言,現在應用比較廣泛的腳本語言有很多,各種腳本都有自己的特點和優勢,只是應用的領域和場景不同,正確的技術就是用在了合適的任務點上。C#語言在動畫、數字媒體領域,包括圖形圖像處理、游戲開發等領域,都有廣泛的應用,成為了動漫設計專業學生學習、教師教學的很好選擇。
綜上所述,隨著我國信息科技的不斷發展,媒體的傳播方式也發生了很多的變化,數字媒體技術被廣泛的應用與各個行業中,在這些背景的襯托下,動漫產業要想得到進一步的發展,就應該積極的運用數字媒體技術,結合人們的當今社會的需求,創作出更多高質量的動漫作品。對于動漫設計來說,數字媒體技術,腳本語言的助力,虛擬現實技術的介入是一個很好的機遇,動漫企業應該牢牢的把握好這次機遇,將動漫設計產業與現代科技技術緊密的結合,通過不斷的創新來提升動漫產業在社會中的地位,以此來實現動漫產業的經濟價值。