纳金网

标题: 三维交互实现方法简述(技术经验分享文档) [打印本页]

作者: 花街六少つ    时间: 2013-6-14 17:07
标题: 三维交互实现方法简述(技术经验分享文档)
三维引擎的程序实现交互主要是通过以下模块实现:
1.摄像机Camera
2.模型 Model
3.材质Material
4.动画 Animation system
5.粒子 Particle system
6.动力学 Dynamics
7.交互界面UI
8.人工智能AI
一、摄像机Camera
基于三维的开发与其他软件开发最大的直观区别就在于所有视觉都是基于摄像机的,那么人所看到的交互操作都是对摄像机的操作,如画面平移,旋转,缩放等,摄像机的交互操作是否合理直接关系人视觉体验的好坏。
常见视角:第一人称,第三人称,上帝视角等
二、模型Model
分类:
三维模型由点、线、面构成,按照制作方法一般分为2
外部三维模型:一般为美工等数据加工人员制作的三维模型,这类模型的特点是美观,在程序中可编辑性差(基本无)
程序生成三维模型:一般利用数学算法,为实现大批量、便于改变模型外观、便于模型分析等特殊要求生成的模型数据,这类模型有一定的特殊参数,可以通过修改参数实现模型的改变,如:程序生成的管线,特点是控制性强,不美观(做到美观比较难)
交互方法:
模型的交互(程序生成模型除外),一般运用比较简单
1.变换Transformation:改变大小、旋转、位置(用于需要控制距离,角度等需求)  案例:很常见不解释
2.隐藏/显示Display/ Hide案例:楼层应用中,显示第3层模型,3层以上模型隐藏
3.模型替换 Interchange 案例:为摄像机靠近,能更清楚看清模型,管线应用中,当离阀门近的时候,阀门从粗糙的符号模型换成较精细模型(LOD
三、材质Material
材质的交互是非常常见的一种,材质交互:一般是更换材质,给一个模型更换另一种材质,案例:一部分模型需要从实体显示变为半透明显示时,可以用更换材质来实现。
材质的构成
1.Shader
Shader是控制模型外观显示的模块,用来确定材质的表面属性,如:玻璃、金属、发光,布料等,是利用显卡硬件显示三维模型的一种特殊的着色语言,需要对显卡和硬件有一定了解。三维引擎一般提供了一部分常用shader,如有特殊需求需要自己写shader,难度也比较大,实现难度和运行效率都是难度。如:实现地面实时反射。Shader不参入交互,只是提供了一种材质类型。
2.Map/color
贴图map按照制作方法一般分为程序纹理和外部纹理,程序纹理不做介绍
交互方法:
1.更换贴图,案例:更换大理石地板为木地板,就可以更换贴图来实现
2.Color改变:案例:管线从未通水状态变为通水状态,颜色从白色变为绿色,可以通过改变color来实现。
3.UV坐标
交互方法:
UV坐标的交互一般是对UV进行移动,旋转,缩放等方法的调用,案例:管道通水状态下,水流方向动态显示,可以通过给纹理设置UV移动,来实现水的动态流动效果。
4.参数parameter
由于不同的shader有不同的参数,在此不一一举例:如,有些shader可以控制半透明参数,这就可以实现从实体到透明这个过程的交互。
四、动画系统Animation system
动画系统是交互的主要模块,按照实现方法简单分为两类:程序交互动画和美工动画两种:
程序动画可以简单理解成通过程序方法实现的交互动画,常见有以下几种
1.变形动画Morph animation,案例:给气球充气,气球会膨胀;人改变脸型等
2.路径动画Path animation   案例:电力管线动态中显示电流方向。
3.等等
美工动画一般为动画师提供的一段模型动作文件,程序直接调用这个动画或者控制这个动画就行。
1.物体动画:美术制作的三维模型物体变换动画,案例:点击一个物体,那个物体旋转(旋转角度不需要控制)如:点击门,门就打开。
2.骨骼动画Bone:骨骼动画一般是美术制作的动画文件直接调用,案例:人物行走。如果需要控制这个动画是有较大难度的,如:当人一条腿踏台阶上,台阶提升时人的腿也跟随提升,这个需要骨骼反向动力学才能解决。
五、粒子Particle system
粒子系统是三维引擎常见的系统,各种引擎的粒子系统差别也很大,有些以插件的方式实现,通常是用来实现如烟雾,喷泉,爆炸,烟花类的特效,他的交互主要是控制粒子发射器的粒子发射数目,粒子年龄,发射速度,发射面积等参数实现,但是这些发射的粒子无法碰撞,不是模拟不是真正意义上的动力学运算。
案例:模拟消防喷淋口漏水效果
六、动力学Dynamics
主流三维引擎一般集成了刚体,毛发,布料动力学系统,还有些高级三维引擎有软体,破碎,马达等动力学系统,动力学一般用来模拟真实的物理碰撞效果,效果真实。一般应用很少用到除刚体外的动力学系统,其他动力学实现起来非常复杂,效果和资源消耗都是比较庞大的。
案例:堆积的箱子受力后掉落测试;绳子打结的交互操作,模拟微创手术缝合操作。
七、交互界面UI
UI界面是很多三维引擎常见的模块,也是非常重要的部分,由于基于三维引擎开发的UI实现较难,一些交互效果实现起来复杂,效率也不高。Unity3D引擎的UI界面功能很简单,一般用插件NGUI来实现
八、人工智能AI
根据实际需求制作的特定数学计算模型,通过特殊算法实现如规避,寻找等功能,案例:地铁火灾人员疏散演练,人员流动分析。(文章转自刘皮纸)



作者: 花街六少つ    时间: 2013-6-14 17:08
很实用的 大家快来看看
作者: 狂风大尉    时间: 2013-6-14 18:38
还不错,支持一个!
作者: libufan    时间: 2013-6-14 23:26
谢谢楼主分享




欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5