<menuitem id="uhyqr"><label id="uhyqr"></label></menuitem>

          1. 藍鷗旗下品牌:鷗課學(xué)院
            全國咨詢電話:13152008057
            您的位置: 首頁 > 最新資訊 > 藍鷗VR培訓(xùn)學(xué)生分享U3D開發(fā)常見面試題

            藍鷗VR培訓(xùn)學(xué)生分享U3D開發(fā)常見面試題

            2017-07-21 藍鷗
            6613人 瀏覽:

            針對大家即將面臨的職場生涯的藍鷗VR培訓(xùn)班的學(xué)生,藍鷗Unity3d培訓(xùn)學(xué)校老師特意整理了一些Unity3d常見面試題【附答案】,供大家參考學(xué)習(xí)。

            VR培訓(xùn)

            1. 請描述游戲動畫有哪幾種,以及其原理

            主要有關(guān)節(jié)動畫、單一網(wǎng)格模型動畫(關(guān)鍵幀動畫)、骨骼動畫。

            關(guān)節(jié)動畫把角色分成若干獨立部分,一個部分對應(yīng)一個網(wǎng)格模型,部分的動畫連接成一個整體的動畫,角色比較靈活Quake2中使用了這種動畫。

            單一網(wǎng)絡(luò)模型動畫由一個完整的網(wǎng)格模型構(gòu)成,在動畫序列的關(guān)鍵幀里記錄各個頂點的原位置及其改變量,然后插值運算實現(xiàn)動畫效果,角色動畫較真實。

            骨骼動畫,廣泛應(yīng)用的動畫方式,集成了以上兩個方式的優(yōu)點,骨骼按角色特點組成一定的層次結(jié)構(gòu),由關(guān)節(jié)相連,可做相對運動,皮膚作為單一網(wǎng)格蒙在骨骼之外,決定角色的外觀。皮膚網(wǎng)格每一個頂點都會受到骨骼的影響,從而實現(xiàn)完美的動畫。(骨骼動畫是由關(guān)節(jié)動畫發(fā)展而來的,如今基本都使用骨骼動畫來實現(xiàn)角色動畫)

            2. alpha blend 工作原理

            實際顯示顏色 = 前景顏色*Alpha/255 + 背景顏色*(255-Alpha)/255

            3. 寫光照計算中的diffuse的計算公式

            實際光照強度 I= 環(huán)境光(Iambient) + 漫反射光(Idiffuse) + 鏡面高光(Ispecular);

            環(huán)境光:Iambient= Aintensity* Acolor; (Aintensity表示環(huán)境光強度,Acolor表示環(huán)境光顏色);

            漫反射光:Idiffuse = Dintensity*Dcolor*N.L;

            (Dintensity表示漫反射強度,Dcolor表示漫反射光顏色,N為該點的法向量,L為光源向量)

            鏡面反射光:Ispecular = Sintensity*Scolor*(R.V)^n;

            (Sintensity表示鏡面光照強度,Scolor表示鏡面光顏色,R為光的反射向量,V為觀察者向量,n稱為鏡面光指數(shù))

            4. lod是什么,優(yōu)缺點是什么

            LOD技術(shù)即Levels of Detail的簡稱,意為多細節(jié)層次。LOD技術(shù)指根據(jù)物體模型的節(jié)點在顯示環(huán)境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數(shù)和細節(jié)度,從而獲得高效率的渲染運算。

            優(yōu)點:可根據(jù)距離動態(tài)地選擇渲染不同細節(jié)的模型;

            缺點:加重美工的負擔(dān),要準(zhǔn)備不同細節(jié)的同一模型,同樣的會稍微增加游戲的容量。

            5. 兩種陰影判斷的方法工作原理

            陰影由兩部分組成:本影與半影。

            本影:景物表面上那些沒有被光源直接照射的區(qū)域(全黑的輪廓分明的區(qū)域);

            半影:景物表面上那些被某些特定光源直接照射但并非被所有特定光源直接照射的區(qū)域(半明半暗區(qū)域);

            求陰影區(qū)域的方法:做兩次消隱過程;

            一次對每個光源進行消隱,求出對于光源而言不可見的區(qū)域L;

            一次對視點的位置進行消隱,求出對于視點而言可見的面S;

            shadow area= L ∩ S

            陰影分為兩種:自身陰影和投射陰影

            自身陰影:因物體自身的遮擋而使光線照射不到它上面的某些可見面

            工作原理:利用背面剔除的方法求出,即假設(shè)視點在點光源的位置。

            投射陰影:因不透明物體遮擋光線使得場景中位于該物體后面的物體或區(qū)域受不到光照照射而形成的陰影

            工作原理:從光源處向物體的所有可見面投射光線,將這些面投影到場景 中得到投影面,再將這些投影面與場景中的其他平面求交得出陰影多邊形,保存這些陰影多邊形信息,然后再按視點位置對場景進行相應(yīng)處理得到所要求的視圖(利 用空間換時間,每次只需依據(jù)視點位置進行一次陰影計算即可,省去了一次消隱過程)

            若是動態(tài)光源此方法就無效了。

            6. Vertex Shader是什么?怎么計算?

            頂點著色器是一段執(zhí)行在GPU上的程序,用來取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作頂點。

            Vertex Shader對輸入頂點完成了從local space到homogeneous space(齊次空間)的變換過程,homogeneous space即projection space的下一個space。在這其間共有world transformation, view transformation和projection transformation及l(fā)ighting幾個過程。

            7. MipMap是什么?作用?

            在三維計算機圖形的貼圖渲染中有一個常用的技術(shù)被稱為Mipmapping。為了加快渲染速度和減少圖像鋸齒,貼圖被處理成由一系列被預(yù)先計算和優(yōu)化過的圖片組成的文件,這樣的貼圖被稱為 MIP map 或者 mipmap。

            8. 用[color=rgb(85, 85, 85) !important]u3d實現(xiàn)2d游戲,有幾種方式?

            利用引擎自帶的GUI

            把攝像機設(shè)為Orthographic,用面片作為2d元素

            利用第三方插件:NGUI、2dToolkit

            9. u3d中碰撞器和觸發(fā)器的區(qū)別?

            collider碰撞器會有碰撞的效果,IsTrigger = false,可以調(diào)用OnCollisionEnter/Stay/Exit函數(shù)

            trigger觸發(fā)器沒有碰撞效果,isTrigger = true,可以調(diào)用OnTriggerEnter/stay/exit函數(shù)

            10. 物體發(fā)生碰撞的必要條件

            物體A必須帶有(collider+rigidbody)或者CharacterController,另一個物體也必須至少帶有collider

            11. CharacterController和Rigidbody的區(qū)別

            Rigidbody具有完全真實物理的特性,而CharacterController可以說是受限的Rigidbody,具有一定的物理效果但不是完全真實的。

            12. 物體發(fā)生碰撞時,有幾個階段,分別對應(yīng)的函數(shù)

            三個階段,OnCollisionEnter/Stay/Exit函數(shù)

            13. U3D中,幾種施加力的方式,描述出來

            rigidbody.AddForce/AddForceAtPosition,都是rigidbody的成員函數(shù)

            14. 什么叫做鏈條關(guān)節(jié)

            Hinge Joint ,他可以模擬兩個物體間用一根鏈條連接在一起的情況,能保持兩個物體在一個固定距離內(nèi)部相互移動而不產(chǎn)生作用力,但是達到固定距離后就會產(chǎn)生拉力。(簡單說就是彈簧)

            15. 物體自旋轉(zhuǎn)使用的函數(shù)叫什么

            transform.Rotate

            16. 物體繞某點旋轉(zhuǎn)使用函數(shù)叫什么

            transform.RotateAround

            17. U3D提供了一個用于保存讀取數(shù)據(jù)的類,(playerPrefs),請列出保存讀取整形數(shù)據(jù)的函數(shù)

            PlayerPrefs.SetInt 與 PlayerPrefs.GetInt

            18. [color=rgb(85, 85, 85) !important]unity3d提供了幾種光源,分別是什么

            共4種,Directional Light、Point Light、Spot Light、Area Light(只用于烘培)

            19. unity3d從喚醒到銷毀有一段生命周期,請列出系統(tǒng)自己調(diào)用的幾個重要方法。

            Awake –>OnEnable –> Start –> Update –> FixedUpdate –> LateUpdate –> OnGUI –> Reset –> OnDisable –> OnDestroy

            20. 物理更新一般在哪個系統(tǒng)函數(shù)里?

            FixedUpdate,每固定幀繪制時執(zhí)行一次,和update不 同的是FixedUpdate是渲染幀執(zhí)行,如果你的渲染效率低下的時候FixedUpdate調(diào)用次數(shù)就會跟著下降。FixedUpdate比較適用于 物理引擎的計算,因為是跟每幀渲染有關(guān)。Update就比較適合做控制。

            21. 移動相機動作在哪個函數(shù)里,為什么在這個函數(shù)里。

            LateUpdate,,是在所有update結(jié)束后才調(diào),比較適合用于命令腳本的執(zhí)行。官網(wǎng)上例子是攝像機的跟隨,都是在所有update操作完才跟進攝像機,不然就有可能出現(xiàn)攝像機已經(jīng)推進了,但是視角里還未有角色的空幀出現(xiàn)。

            22. 當(dāng)游戲中需要頻繁創(chuàng)建一個物體對象時,我們需要怎么做來節(jié)省內(nèi)存。

            做一個pool,游戲開始時預(yù)先實例化足夠的數(shù)量,然后用的時候取不用的時候收回

            23. 一個場景放置多個camera并同時處于活動狀態(tài),會發(fā)生什么

            實際看到的畫面由多個camera的畫面組成,由depth、Clear Flag、Culling Mask都會影響最終合成效果。

            24. 簡述prefab的用處和環(huán)境

            在游戲運行時實例化,prefab相當(dāng)于一個模版,對你已有的素材、腳本、參數(shù)做一個默認配置,以便于以后修改,同時prefab打包的內(nèi)容簡化了導(dǎo)出的操作,便于團隊的交流。

            25. 如何銷毀一個UnityEngine.Object以及其子類

            Destroy

            26. 為什么U3D會出現(xiàn)組件上數(shù)據(jù)丟失的情況

            一般是組件上綁定的物體對象被刪除了

            27.U3D下如何安全的在不同工程遷移asset數(shù)據(jù)

            方法1、可以把assets目錄和Library目錄一起遷移

            方法2、導(dǎo)出包

            方法3、用unity帶的assets server功能

            選擇藍鷗VR虛擬現(xiàn)實培訓(xùn),讓你成為一名優(yōu)秀的程序員!

            1. 廣告1
            2. 廣告2
            3. 廣告3
            4. 廣告4
            尹人香蕉久久99天天拍,中文字幕永久在线中文免费,久久久久噜噜噜亚洲熟女综合,麻豆av在线免费观看精品
                  <menuitem id="uhyqr"><label id="uhyqr"></label></menuitem>