999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Unity可視化編程在三維交互動畫中的應用

2025-02-26 00:00:00胡凱夫高國強
現代信息科技 2025年1期

摘" 要:隨著時代的發展,科技與藝術的融合逐漸成為藝術設計領域的新浪潮。藝術創作不再局限于傳統媒介。在創作中,藝術創作者為了實現一個創意原型,不僅僅需要設計靈感和藝術鑒賞的能力,而且還要具備專業媒體軟件的操作能力,往往會涉及計算機編程知識??梢暬幊痰某霈F突破了藝術創作者難以著手計算機編程的壁壘,以Unity中的可視化編程為切入點,文章簡要分析交互動畫的制作邏輯及流程圖,為高校藝術學生在制作交互動畫提供一定的參考。

關鍵詞:Unity;可視化編程;交互動畫

中圖分類號:TP311" 文獻標識碼:A" 文章編號:2096-4706(2025)01-0110-06

Application of Unity Visual Programming in 3D Interactive Animation

Abstract: With the development of the times, the integration of science and technology and art has gradually become a new wave in the art design field. Artistic creation is not limited to traditional media. In the creation, in order to achieve a creative prototype, art creators need not only the design inspiration and artistic appreciation ability, but also the ability to operate professional media software, often involving computer programming knowledge. The emergence of visual programming breaks through the barrier that it is difficult for art creators to start computer programming. Taking visual programming in Unity as the starting point, this paper briefly analyzes the production logics and flow charts of interactive animation, providing a certain reference for college art students in making interactive animation.

Keywords: Unity; visual programming; interactive animation

0" 引" 言

可視化編程是一種全新的程序設計方法,它以圖形界面的方式進行程序設計,而不是通過輸入程序代碼的方式進行程序開發,這大大降低了程序開發的難度[1]??梢暬幊陶Z言或軟件很多,本文介紹Unity中的Visual Scripting可視化編程,它與Unreal engine、GameMaker Studio 2及PRG Maker等游戲引擎相似,無須編寫代碼或腳本就可以制作游戲邏輯。Visual Scripting以圖形節點的方式形象地展示出它的功能,簡化了編寫計算機代碼的過程。程序設計人員利用軟件本身所提供的各種控件,像搭積木式地構造應用程序的各種界面[2]。Unity3D是由Unity科技公司開發的跨平臺專業游戲引擎。其應用極為廣泛,在動畫、影視、游戲、科技、醫療、軍事、工業等各個領域都能發現其蹤跡。其開發的產品經過簡單配置可以發布到多平臺運行,比如:windows、Android、IOS、MAC、Web等平臺[3]。用戶通過它可以輕松實現各種游戲創意和三維互動等項目的開發。相比于專業化的可視化編程軟件,Unity支持的可視化編程完全不需要編寫代碼,更適合沒有編程知識的用戶,比如藝術工作者或藝術專業學生[4]。

為了在三維動畫中實現交互功能,Unity使用微軟的C#作為其編程語言。C#是一種面向對象的編程語言,雖然它和VB類似,也具有一定可視化編程功能,但只適用于開發基于Windows界面應用程序的情況[5]。作為一種內嵌于Unity的程序語言,使用C#開發動畫的交互功能時,只能以程序代碼的方式使用。Visual Scripting基于C#和用戶之間,它能把用戶的設計轉換成C#代碼,然后交給Unity運行。Unity可視化編程設計的功能十分強大,只要會畫流程圖,就能編寫游戲或開發三維交互動畫。

為了使用Visual Scripting進行可視化編程,首先要添加腳本機器組件,然后在該組件下添加腳本圖(簡稱圖),也就是可視化編程的程序文件,最后在圖中設計交互邏輯。比如,為了控制一個三維物體移動,要給該物體添加腳本機器組件,并給該組件添加圖,然后在圖中設計一定的操作來實現該物體的移動。組件是對數據和方法的封裝,簡單來說就是用來完成一定的功能。在Unity,一個三維物體,比如一個球體,它的組件就是它所具有的功能或屬性,比如它的Position(位置)組件,就是用來定義這個球體的大小、旋轉角度和坐標屬性的。在圖1中通過添加節點以及連接它們來實現一定的操作,新建一個圖后,會自動產生兩個節點,如圖1(a)所示,其中,Start節點只在動畫開始的第1幀執行,Update節點在動畫的每幀都會被執行。在圖中可以添加其他節點,圖1(b)顯示了一個示例,節點GetKey是添加的節點。節點完成相應的功能,一般包括輸入、處理和輸出三個部分。如圖1(b)中的節點GetKey,它的輸入是左邊的箭頭和圓點,箭頭表示連接或流程,用來連接它的上一個節點或下一個節點;圓點表示接口或數據,用來輸入數據或輸出數據。節點右側的箭頭和圓點表示它的輸出。節點的處理就是節點要完成的功能,比如GetKey節點,它的功能是判斷用戶是否按了鍵盤空格鍵;如果按了則輸出邏輯值True(真)數據,否則輸出邏輯值False(假)數據。節點之間通過連接線實現連接,如圖1(b)節點Update和GetKey之間的連接線。連接表明節點之間的執行循序,圖1(b)中,Update節點之后會執行GetKey節點,由于Update每一幀都會執行,那就意味著動畫的每幀都會判斷用戶是否按了A鍵。

1" 相關知識

可視化編程可以理解為一個中間層,基于C#和用戶之間,它可以把用戶設計的圖(包含節點的圖)轉換為C#代碼,再由Unity解釋運行[4]。為實現不同的交互效果,Unity的可視化編程包含大量的節點。節點大致可以分為兩類,一類是基本程序節點,另一類是Unity庫節點?;境绦蚬濣c實現程序的基本工作,是通用的,和具體軟件沒有關系,比如變量的定義和賦值、算術運算、比較運行、邏輯運算、順序語句、分支語句和循環語句等[6]。圖2給出了一些基本程序節點,其中圖2(a)是比較運算的“等于”運算節點,當它的兩個輸入數據相等時輸出邏輯值True,否則輸出False;圖2(b)是邏輯運算的Or(或)運算,當它的兩個輸入數都為邏輯值False時輸出邏輯值False,否則輸出True;圖2(c)是分支語句節點,它的輸入數據是True時,輸出上面一條路線;輸入數據為False時,輸出下面一條路線。

圖3為基本程序節點示例圖,圖3(a)是相加節點,兩個數據相加輸出;圖3(b)是比較節點,比較A與B的大小,如果A>B,則輸出邏輯值為True(真),若A<B,則輸出邏輯值為False(假);圖3(c)是比較節點中的小于節點,A<B,則輸出邏輯值為True(真),若A>B,則輸出邏輯值為False(假)。

在Unity中有幾種不同數據類型,在可視化編程中叫數據類節點,如圖4所示,常見的有Float 節點,此節點可以保存小數;Integer節點,以1為單位保存整數;String節點可以保存字符串。

在Unity開發中想要完成有趣的交互,定義變量是必不可少的。變量是存放數據的容器,每個變量都有名稱、類型和值。變量內部的值在運行時可以更改,這就是它們被稱為變量的原因[7]。前面講的integer或float節點保存的都不是變量,是常量,就是不能變化的量。如何定義變量,選中使用腳本機器組件的物體,在右側的檢視視圖找到Variablies(變量組件),在其下面輸入要定義變量的名字即可創建變量,圖5為定義變量示例圖。

圖6為設置變量示例圖,在此設置變量的類型type,自定義變量的初始值Value,可以同時定義多個變量。

圖7為獲取設置變量節點示例圖,關于變量的使用是獲取變量和設置變量兩個節點,在Script Graph中右鍵輸出get object,圖7(a)中便是獲取變量的節點,在有多個變量的情況下要,選擇目標變量,比如圖7(a)中“m”自定義變量的名稱,“This”表示當前物體,輸出就是變量保存的值;圖7(b)set object是設置變量的節點,“m”是變量的名稱,“This”是當前物體。最下面的圓點是數值節點的接口,意為變量賦予新的數值。圖7(c)中用100重新為變量賦值。

Unity庫節點用來訪問Unity系統提供的功能,比如獲取3D動畫模型在坐標系中的位置、移動3D物體等。圖8為一些Unity庫節點,其中圖8(a)是獲取位置節點,通過輸入參數獲取對應物體位置,如果沒有參數則是當前物體(Self,使用圖的物體)的位置,輸出是一個三維向量的坐標。圖8(b)是播放音頻節點,它可以播放輸入音頻或當前物體綁定的音頻。圖8(c)是播放視頻節點,它可以播放輸入視頻或當前物體綁定的視頻。Unity有很多庫節點,通過使用這些庫節點,可以大大提高開發效率。

可視化編程的優點是更容易被理解,每個節點完成一定的功能,節點之間通過連接來實現各種各樣的操作。相對程序語言代碼,這樣的設計思路表達邏輯更容易被沒有程序開發經驗的用戶所接受[4]。圖9為播放音頻的圖和實現同樣功能的C#代碼對比圖。圖9的左邊是可視化編程圖,根據節點以及節點之間的連接,很容易理解,即便是沒有程序開發基礎的用戶。圖9的右邊是實現相同功能的C#代碼截圖,它是一個完整的面向對象程序設計的類,有引用類庫、定義類、定義屬性、定義方法以及實現功能的語句。如果不具備程序開發基礎,理解這些代碼會比較困難。

2" 實例分析

本章主要從常用的三維交互動畫效果來展開分析,闡述如何使用可視化編程來實現這些交互效果。

2.1" 巡游交互

巡游是三維交互動畫的基本交互效果,通過控制主攝像機的移動,呈現三維動畫模型的細節。在Unity中實現巡游,通常的做法是把主攝像機作為巡游物體的子物體,移動巡游物體,主攝像機會隨之同步移動[8]。巡游物體可以理解為三維動畫模型的觀察及交互者,通常被制作成三維人物模型。因此,要實現巡游交互,就是控制巡游物體的移動,以及視角切換。所謂視角切換,是調整主攝像機相對于巡游物體的相對位置,從而得到不同的視角,比如前視,后視及側視等。圖10為巡游物體前后移動的可視化編程圖,其中GetAxis節點的參數是Vertical,表示獲取鍵盤上下箭頭及W和S鍵,如果用戶按上箭頭或W鍵,則輸出大于0的值;如果用戶按下箭頭或S鍵,則輸出小于0的值;如果用戶沒有按這些鍵,則輸出等于0的值。當用戶按上箭頭或W鍵時,由圖10上面的Branch節點處理,會執行右上的SimpleMove節點。SimpleMove節點的功能是移動當前物體,其speed輸入參數為帶方向的速度值[5]。forward(get)節點是獲取當前物體的前方,它的下一個節點有兩個,一個是每個方向都乘上2,表示沿當前物體的前方兩倍速度;另一個是每個方向都乘上-2,乘上負值表示取forward的反方向,表示沿當前物體的后方兩倍速度。為了實現巡游物體的左右旋轉以及攝像機的視角切換,還應添加更多的節點,限于篇幅,本文沒有給出對應的圖及說明。

2.2" 幀動畫的使用

計算機幀動畫是指只用制作動畫的關鍵幀,中間幀由計算機自動生成。Unity專注于交互效果,其制作幀動畫的效率比專業的三維動畫建模軟件差,比如3DMax。為了快速生成幀動畫,比如一個三維人物模型的行走動畫,往往采用像3DMax這樣的專業建模軟件,然后再導入到Unity中實現交互效果。導入到Unity中的幀動畫可以自動播放,也可以通過代碼控制其在適當的時候播放它。本節討論巡游物體動畫的播放,假設巡游物體是一個3D人物模型,且為其創建了行走時的幀動畫。那么,本節要討論的就是巡游物體移動時播放動畫,巡游物體靜止時不播放動畫,以模擬一種真實的3D人物模型行走效果。圖11顯示的是播放和停止幀動畫的圖。為了控制幀動畫的播放,定義一個變量,如圖6所示,名為m,初值為0,表示巡游物體靜止;如果其值為1,表示巡游物體在移動。Get Variable節點是獲取變量的值,圖11中,如果m的值為1則播放動畫,否則停止動畫。節點Play和Stop分別表示播放和停止當前物體所綁定的幀動畫。圖11的第二個分支用以處理變量m的值。當GetAxis節點的輸出為0時,也就是用戶沒有按上下箭頭及W和S鍵(即巡游物體靜止),設置變量moveflage的值為0,否則設置它的值為1。Set Variable節點是設置一個變量的值。

2.3" 多媒體的使用

多媒體元素主要包括圖片、聲音和視頻。對于圖片,在三維動畫中,可以通過貼圖的方式使用,而聲音和視頻這兩種多媒體元素可以使用最為簡單的自動播放。為了在適當的時候播放或停止聲音和視頻,則需要使用代碼進行控制。如果要使用聲音,需要創建一個AudioSource(音源)物體,然后把導入的聲音文件作為該物體音源組件AudioClip(音頻片段)屬性的取值[9]。圖12為播放聲音的圖,其中的右上節點OnMouseDown是一個鼠標點擊事件節點,當點擊當前物體(比如按鈕)后,會產生一個執行的流程。GetComponent節點是獲取組件節點,它負責獲取音源組件,圖12中,它獲取的是名字為music的音源物體的音源組件。圖12中的節點Find是用來發現一個參數為music的物體,它被作為GetComponent節點的輸入參數。最右端的節點用來播放其輸入的音源組件所指向的聲音文件。如果希望停止播放聲音,可以使用節點AudioSource Stop。Unity中播放視頻有兩種方式,一種是視頻附著在三維物體上的播放,另一種是以二維元素的方式播放。三維方式是給物體添加一個VideoPlayer(視頻播放器)組件,相當把視頻作為三維物體的貼圖,然后播放組件所對應的視頻文件。在Unity中,直接拖拽導入的視頻文件到某個物體,就可以完成對該物體添加視頻播放器組件的操作。視頻默認是自動播放的,如果希望在適當的時候播放或停止它,則需要使用代碼進行控制。對視頻進行可視化編程的方法和音頻類似,只是播放視頻的節點不同而已。

2.4" 二維元素的使用

在三維動畫中,為了達到某些交互效果,比如動畫人物之間的對話,可以通過呈現像文字或圖片這樣的二維元素來實現。動畫系統對于二維和三維元素的渲染方法是不一樣的,所以在設計和實現上也是不一樣的。Unity中二維元素和三維元素相互獨立,互相不受影響,默認情況下二維元素被顯示在三維元素前面。Unity通過一個叫Canvas(畫布)的元素放置二維元素。某個畫布顯示,則該畫布下的所有二維元素都會顯示,畫布隱藏則所有二維元素隱藏[10]。圖13為顯示畫布的圖,它實現這樣的效果,當用戶點擊一個三維物體(比如一個按鈕)時,會在屏幕上顯示名字為“海報介紹”的畫布。如果該畫布包含二維的文字或圖片提示信息,則它們會被顯示出來。節點Canvas enabled(set)是用來顯示或隱藏給定的畫布,當輸入數據復選框是選定時表示顯示畫布,否則隱藏畫布。由于畫布默認是顯示的,因此需要通過Start節點來隱藏它。

3" 結" 論

Unity3D易上手成本低,畫質好且效率高,不需要計算機程序開發的知識和經驗,非常適合大多數高校的學生、藝術工作者,彌補了經費少、計算機人才短缺和學習成本高的代價。簡單來說,只要會畫流程圖,就能進行可視化編程。Unity中的可視化編程不是簡單地實現創意,而是會把設計思路轉換成為程序代碼再執行。因此,Unity的可視化編程不僅易于使用,而且可以開發真實的軟件,這對于復雜創意的實現非常重要。隨著數字化的發展,藝術工作者對于創意的快速實現越來越迫切。如果依賴計算機軟件工程師的協助,不僅在創意的理解和溝通上,而且在時效性上,都會大打折扣。比如,藝術工作者有了一個好的三維動畫創意,就需要通過原型產品把這個創意展現出來。對于三維動畫模型的創建不需要太多計算機程序開發的知識,借助于助手或自己,就能快速實現。但交互效果方面就需要通過計算機程序來實現,如果把這個任務交給其他計算機程序員完成,很可能造成創意實現的偏差,絕對不如自己實現來的準確??梢暬幊叹徒鉀Q了這樣的問題,只需要少量學習就可以掌握程序開發的方法。圖14為一個本科生畢業設計作品,以三維交互動畫的方式實現了吳城文化虛擬博物館。這個作品的三維動畫模型使用3DMax進行開發,動畫的交互使用的是基于Unity的可視化編程。交互的效果包括:展廳大門的自動打開和關閉,以第一視角對虛擬博物館的游覽,按預定路線的自動游覽,點擊展品播放文字、聲音或視頻介紹。隨著科技的發展,未來更多的是關注創意本身,而不是被實現的技術細節所困擾。信息化的時代,離不開技術的支撐,可視化編程技術的發展也將越來越多應用于各種各樣的創意活動之中。

參考文獻:

[1] 白茹鑫.基于SpringBoot+SSM框架的企業安全培訓管理系統設計與實現 [J].現代信息科技,2024,8(1):44-49.

[2] 劉小燕,陳艷麗.可視化編程中識別計算思維 [J].計算機科學,2014,41(S2):403-407.

[3] 劉向群,吳彬.Unity2017從入門到精通 [M].北京:人民郵電出版社,2020.

[4] 徐志平.Unity可視化手機游戲設計 [M].北京:清華大學出版社,2020.

[5] 史紅偉.基于慣性傳感器的機械臂示教系統的設計 [D].哈爾濱:哈爾濱工業大學,2021.

[6] 吳亞峰,徐歆愷,蘇亞光.Unity游戲開發技術詳解與典型案例 [M].北京:人民郵電出版社,2019.

[7] 弗蘭茨·蘭辛格.Unity 3D游戲開發 [M].北京:清華大學出版社,2023.

[8] 史寶明,賀元香,李嵐.Unity3D隨機尋路算法設計 [J].吉林師范大學學報:自然科學版,2022,43(1):128-133.

[9] 李虹,陸培培.基于Unity3D的虛擬動畫系統設計 [J].現代電子技術,2021,44(8):164-168.

[10] 徐志平.Unity 3D可視化VR應用開發實戰:零代碼版微課視頻版 [M].北京:清華大學出版社,2022.

主站蜘蛛池模板: 亚洲91精品视频| 亚洲欧美日韩中文字幕在线一区| 日韩欧美色综合| 在线国产你懂的| 亚洲最猛黑人xxxx黑人猛交 | 久久精品视频一| 亚洲女人在线| 国产av剧情无码精品色午夜| av午夜福利一片免费看| 国产免费久久精品99re丫丫一| 久久精品这里只有精99品| 亚洲第一视频网| 日韩亚洲高清一区二区| 免费中文字幕在在线不卡| 国产麻豆福利av在线播放| 最新无码专区超级碰碰碰| 无码人妻热线精品视频| 国产精品尤物铁牛tv | 国产不卡一级毛片视频| 午夜福利视频一区| 免费国产高清视频| 91啪在线| 欧美激情视频二区三区| 国产综合亚洲欧洲区精品无码| 一级在线毛片| 亚洲精品桃花岛av在线| 亚洲三级色| 亚洲91精品视频| 日本午夜在线视频| 欧美人在线一区二区三区| 91成人在线免费视频| 谁有在线观看日韩亚洲最新视频| 亚洲国产成人精品无码区性色| 夜精品a一区二区三区| 国产一线在线| 国产交换配偶在线视频| 成人福利在线视频免费观看| 久久夜夜视频| 亚洲h视频在线| 国产91麻豆视频| 国产99视频精品免费观看9e| 国产欧美视频在线观看| 波多野结衣第一页| 亚洲精品色AV无码看| 无码专区第一页| 精品中文字幕一区在线| 青青网在线国产| 国产chinese男男gay视频网| 欧美精品一区二区三区中文字幕| 国产亚洲欧美另类一区二区| 免费又黄又爽又猛大片午夜| 伊人久久久久久久久久| 亚洲av无码人妻| 大香伊人久久| 秘书高跟黑色丝袜国产91在线| 亚洲一区毛片| 久久99精品久久久久纯品| 亚洲一道AV无码午夜福利| 中文字幕在线日本| 亚洲九九视频| 国产精品观看视频免费完整版| 国产综合另类小说色区色噜噜| 日韩二区三区| 亚洲性日韩精品一区二区| 四虎永久在线视频| 亚洲91精品视频| 久久永久视频| 日韩欧美高清视频| 日本黄色a视频| 中国精品久久| 久久一级电影| 日韩中文欧美| 新SSS无码手机在线观看| 成人福利在线免费观看| 亚洲欧美另类日本| 欧美日韩国产在线观看一区二区三区| 伊人五月丁香综合AⅤ| 国产原创自拍不卡第一页| 97影院午夜在线观看视频| 成年女人a毛片免费视频| 成人精品视频一区二区在线| 欧美一级片在线|