不可不知的unity3D⾯试题
今天给⼤家准备了⼀些unity3D的⾯试题,unity作为当下最流⾏的3D游戏开发,相信也是吸引到不少⼈去学习,希望可以让⼤家更直观的了解⼀下,企业需要的是什么样的unity⼈才。
⼀.写光照计算中的diffuse的计算公式
unity3d入门实际光照强度 I= 环境光(Iambient) + 漫反射光(Idiffuse) + 镜⾯⾼光(Ispecular);
环境光:Iambient= Aintensity* Acolor; (Aintensity表⽰环境光强度,Acolor表⽰环境光颜⾊)
漫反射光:Idiffuse = Dintensity*Dcolor*N.L;
(Dintensity表⽰漫反射强度,Dcolor表⽰漫反射光颜⾊,N为该点的法向量,L为光源向量)
镜⾯反射光:Ispecular = Sintensity*Scolor*(R.V)^n;
(Sintensity表⽰镜⾯光照强度,Scolor表⽰镜⾯光颜⾊,R为光的反射向量,V为观察者向量,n称为镜⾯光指数)
⼆.lod是什么,优缺点是什么
LOD技术即Levels of Detail的简称,意为多细节层次。LOD技术指根据物体模型的节点在显⽰环境中所处的位置和重要度,决定物体渲染的资源分配,降低⾮重要物体的⾯数和细节度,从⽽获得⾼效率的渲染运算。
优点:可根据距离动态地选择渲染不同细节的模型
缺点:加重美⼯的负担,要准备不同细节的同⼀模型,同样的会稍微增加游戏的容量。
三.物体发⽣碰撞时,有⼏个阶段,分别对应的函数
三个阶段,OnCollisionEnter/Stay/Exit函数
四.alpha blend ⼯作原理
实际显⽰颜⾊ = 前景颜⾊*Alpha/255 + 背景颜⾊*(255-Alpha)/255
五.⽤[color=rgb(85, 85, 85) !important]u3d实现2d游戏,有⼏种⽅式?
1.利⽤引擎⾃带的GUI
2.把摄像机设为Orthographic,⽤⾯⽚作为2d元素
3.利⽤第三⽅插件:NGUI、2dToolkit
六.u3d中碰撞器和触发器的区别?
collider碰撞器会有碰撞的效果,IsTrigger = false,可以调⽤OnCollisionEnter/Stay/Exit函数
trigger触发器没有碰撞效果,isTrigger = true,可以调⽤OnTriggerEnter/stay/exit函数
七.unity3d从唤醒到销毁有⼀段⽣命周期,请列出系统⾃⼰调⽤的⼏个重要⽅法。
Awake –>OnEnable –> Start –> Update –> FixedUpdate –> LateUpdate –> OnGUI –> Reset –> OnDisable –> OnDestroy
OnDestroy
⼋.物理更新⼀般在哪个系统函数⾥?
FixedUpdate,每固定帧绘制时执⾏⼀次,和update不同的是FixedUpdate是渲染帧执⾏,如果你的渲染效率低下的时候FixedUpdate调⽤次数就会跟着下降。FixedUpdate⽐较适⽤于物理引擎的计算,因为是跟每帧渲染有关。Update就⽐较适合做控制。
九.移动相机动作在哪个函数⾥,为什么在这个函数⾥。
LateUpdate,,是在所有update结束后才调,⽐较适合⽤于命令脚本的执⾏。官⽹上例⼦是摄像机的跟随,都是在所有update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视⾓⾥还未有⾓⾊的空帧出现。
⼗.当游戏中需要频繁创建⼀个物体对象时,我们需要怎么做来节省内存。
做⼀个pool,游戏开始时预先实例化⾜够的数量,然后⽤的时候取不⽤的时候收回
⼗⼀.⼀个场景放置多个camera并同时处于活动状态,会发⽣什么
实际看到的画⾯由多个camera的画⾯组成,由depth、Clear Flag、Culling Mask都会影响最终合成效果。
⼗⼆.为什么u3d会出现组件上数据丢失的情况
⼀般是组件上绑定的物体对象被删除了
⼗三.u3d下如何安全的在不同⼯程迁移asset数据
⽅法1,可以把assets⽬录和Library⽬录⼀起迁移,
⽅法2,导出包
⽅法3,⽤unity带的assets server功能
⼗四.简述prefab的⽤处和环境
在游戏运⾏时实例化,prefab相当于⼀个模版,对你已有的素材、脚本、参数做⼀个默认配置,以便于以后修改,同时prefab打包的内容简化了导出的操作,便于团队的交流。
⼗五.两种阴影判断的⽅法⼯作原理
阴影由两部分组成:本影与半影
本影:景物表⾯上那些没有被光源直接照射的区域(全⿊的轮廓分明的区域)
半影:景物表⾯上那些被某些特定光源直接照射但并⾮被所有特定光源直接照射的区域(半明半暗区域)
求阴影区域的⽅法:做两次消隐过程
⼀次对每个光源进⾏消隐,求出对于光源⽽⾔不可见的区域L;
⼀次对视点的位置进⾏消隐,求出对于视点⽽⾔可见的⾯S;
shadow area= L ∩ S
阴影分为两种:⾃⾝阴影和投射阴影
⾃⾝阴影:因物体⾃⾝的遮挡⽽使光线照射不到它上⾯的某些可见⾯
⼯作原理:利⽤背⾯剔除的⽅法求出,即假设视点在点光源的位置。
投射阴影:因不透明物体遮挡光线使得场景中位于该物体后⾯的物体或区域受不到光照照射⽽形成的阴影
⼯作原理:从光源处向物体的所有可见⾯投射光线,将这些⾯投影到场景中得到投影⾯,再将这些投影⾯与场景中的其他平⾯求交得出阴影多边形,保存这些阴影多边形信息,然后再按视点位置对场景进⾏相应处理得到所要求的视图(利⽤空间换时间,每次只需依据视点位置进⾏⼀次阴影计算即可,省去了⼀次消隐过程)
若是动态光源此⽅法就⽆效了。
⼗六.Vertex Shader是什么?怎么计算?
顶点着⾊器是⼀段执⾏在GPU上的程序,⽤来取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作顶点。
Vertex Shader对输⼊顶点完成了从local space到homogeneous space(齐次空间)的变换过程,homogeneous space即projection space的下⼀个space。在这其间共有world transformation, view transformation和projection transformation及lighting⼏个过程。
⼗七.MipMap是什么?作⽤?
在三维计算机图形的贴图渲染中有⼀个常⽤的技术被称为Mipmapping。为了加快渲染速度和减少图像锯齿,贴图被处理成由⼀系列被预先计算和优化过的图⽚组成的⽂件,这样的贴图被称为 MIP map 或者 mipmap。
⼗⼋.请描述游戏动画有哪⼏种,以及其原理。
主要有关节动画、单⼀⽹格模型动画(关键帧动画)、⾻骼动画。
关节动画把⾓⾊分成若⼲独⽴部分,⼀个部分对应⼀个⽹格模型,部分的动画连接成⼀个整体的动画,⾓⾊⽐较灵活Quake2中使⽤了这种动画。
单⼀⽹络模型动画由⼀个完整的⽹格模型构成,在动画序列的关键帧⾥记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,⾓⾊动画较真实。
⾻骼动画,⼴泛应⽤的动画⽅式,集成了以上两个⽅式的优点,⾻骼按⾓⾊特点组成⼀定的层次结构,由关节相连,可做相对运动,⽪肤作为单⼀⽹格蒙在⾻骼之外,决定⾓⾊的外观。⽪肤⽹格每⼀个顶点都会受到⾻骼的影响,从⽽实现完美的动画。(⾻骼动画是由关节动画发展⽽来的,如今基本都使⽤⾻骼动画来实现⾓⾊动画)
⼗九.物体发⽣碰撞的必要条件
物体A必须带有(collider+rigidbody)或者CharacterController,另⼀个物体也必须⾄少带有collider
⼆⼗.CharacterController和Rigidbody的区别
Rigidbody具有完全真实物理的特性,⽽CharacterController可以说是受限的Rigidbody,具有⼀定的物理效果但不是完全真实的。
⼆⼗⼀.u3d中,⼏种施加⼒的⽅式,描述出来
rigidbody.AddForce/AddForceAtPosition,都是rigidbody的成员函数
⼆⼗⼆.什么叫做链条关节
Hinge Joint ,他可以模拟两个物体间⽤⼀根链条连接在⼀起的情况,能保持两个物体在⼀个固定距离内部相互移动⽽不产⽣作⽤⼒,但是达到固定距离后就会产⽣拉⼒。(简单说就是弹簧)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论