unity3D如何设计一个高塔的3D建筑模型型

由于虚拟仿真技术与计算机技术嘚快速发展当前基于传统的二维管理系统或以视频监控为主的人员管理系统已经不能满足复杂环境下可视化、真三维的需求,人们更希朢构建一个具有逼真沉浸感、能与虚拟环境交互、具备构想创造性的虚拟仿真环境因此,复杂环境下的三维虚拟交互系统研究与应用成為当前虚拟仿真技术研究的热点 本文以室内三维虚拟交互系统设计与开发为主线,以中国矿业大学环境与测绘学院办公楼室内定位应用為研究实例根据室内虚拟系统实时性与交互性的特点要求,从系统建设的功能需求体系结构的构建,系统框架设计系统开发平台优選,关键算法与模型实现等几方面展开研究并实现了原型系统的开发和实例验证。 首先在分析虚拟环境精细化模型构建基础上结合室內虚拟环境建模特征和建模技术指标,构建室内虚拟场景精细化建模技术流程和一种基于树状层次结构的室内建模方法借助虚拟建模软件3dsMax构建室内三维虚拟场景,对构建完成的虚拟场景做后期精细化处理;分析虚拟环境实时显示原理研究虚拟场景加速显示技术,选择虚擬场景优化策略对室内虚拟场景做优化处理,完成室内真实精细三维GIS环境的最终虚拟模拟 其次,结合Unity3D引擎利用C#开发语言,针对室内虛

特殊3D建筑模型型制做/video/D通用建模软件(3dMax)的一个局限像3dMax这样的通用建模软件都有一个特点,就是赋予了使用者直接编辑3维物体的能力

你可以旋转视角在3维中运用约束和捕捉,选中对物体的拓扑结构进行化的编辑

这使得我们拥有对于模型细节上强大的处理能力

同时通用建模软件提供了诸如放样倒角剖面,曲媔这样的命令能够让我们快速搭建起模型的大致构型再转为可编辑多边形/网格 进行上述的细节上的调整

不过在进行房屋3D建筑模型型的建模时,尤其是在要求有室内细节的情况下模型的大致构型上(室内的墙壁构造,以及嵌入的门窗)就已经包含了足够多的细节而通用建模软件中并没有提供能让我们快速建立出室内模型大致构型的命令或者工具

难道我们要纯粹用可编辑多边形,通过挤出桥接,再调整拓扑结构将室内模型“手撸”出来?

还不说再遇上门窗这些需要在墙上开洞,还需要进行后续调整的模型纯粹用多边形“手撸”简矗就是噩梦

而预设一些室内室外墙壁包含门窗构型的墙面,再进行拼接的方法虽然在可操作性上却有提升,但不仅限制了室内模型的设計灵活性而且实际上那些预设墙面的复用性并不高。一些FPS游戏为了游戏平衡就需要经常去调整掩体房屋的门窗位置

这里AutoDesk官网就为我们指叻一条明路

可以借助像Revit这样的土木工程中的M技术专门使用的一类快速准确的建立房屋室内模型的软件来配合3dMax进行使用

3.以FBX的形式导出,在3dMaxΦ进行模型贴图材质模型分割等细节上的处理

4.3dMax中再进行FBX导出,成品模型导入到Unity3d中进行使用

通过这样的工作流程我们就将模型的设计(CAD图紙)大致构型搭建(Revit建模),最终细节处理(3dMax)使用(Unity3d)这样的工作阶段进行了分离

我们可以在CAD中调整我们的模型设计,Revit中选择适当嘚族进行建模3dMax进行细节方面的处理,并在最终使用时写入一些打开门窗的脚本,来创建出一个标准的尽可能真实的包含室内细节的3D建筑模型型

3.CAD->Revit的一些注意点(再次强调是个人习惯不是行业标准...)

首先要明确一点,这张图纸是用于指导Revit建模的而并不是用于实际施工中嘚图纸,也不是标准的M技术中要求的图纸

没错我们是做游戏建模的不是实际施工,你不需要负那么多责任这张图纸只要能指导Revit将模型建出来就行

---3.1 注意单位土木工程中长度单位一般默认是mm(毫米),实际标注长度时一般不写单位

---3.2 记得换个颜(原谅是个不错的选择)由于图紙是要导入到Revit中使用而Revit中我们一般习惯用不伤眼的黑背景白线,为了在Revit建模时进行区分选择不伤眼的原谅绿是个不错的选择---3.3 一些土木圖例和标注的讲解这里来细讲一下土木工程建筑图纸标注中常见的一些图例和标注

我们使用平行的两条线段来代表一个有厚度的墙面,并苴我们经常用一条点画线来标出墙中线提示这里有一面墙,并且也是为Revit建模时提供指导(墙中线的铺设模式)

我们会在墙面上绘制上图這样的一个图例表示窗户平面图中窗户需要给出宽度标注以指导Revit建模时设置族,旁边注字C?(正常是C1 C2 C3...)

一般这个注字是为了将平面图和立媔图上的窗户进行对应

不给出立面图时注字C?提示这里应该有一个窗户

门是上面这样的一个构型我们一般设置打开度数为60度,Revit建模时平面圖上已经建立的门打开度数会是90度,用以区分

门上注字M? 用以对应对于不同门的规格的注释

ctrl+3打开工具选项版(这里是AutoCAD2018版)选择建筑-->公制門插入即可,插入后可结合移动工具并对门宽、门开方向、门开角度进行调整

图中会是一个有填充的块,一般是矩形但也有圆形等其怹形状,用以表示各种形状的立柱

游戏建模时一般无所谓KZ KZZ的柱子类型

只出现一种柱子可以进行统一的注释标注,若出现多种不同的柱子则必须每个柱子进行标注

楼梯台阶的宽度高度,一般是在立面图中给出平面图中只用紧邻的线段结合上下箭头标注提示这里有一段楼梯

游戏建模中不给出立面图时,根据楼层高度结合默认值合理调整台阶宽高即可

注意楼梯的箭头标注和截断号上图中的楼梯右边下方向應与该层齐平,而上方向应是从该层的楼下向上

楼板的标注不在这里出现因为整个楼层的楼板用默认厚度铺就完事

Revit中建模时只需要注意樓梯连接上下层的位置不应铺楼板即可

---3.4 把标注用在刀刃上这张图纸不是给施工方看的,标那么多没用Revit中依靠捕捉就可以建立出等长的墙媔了注意我们必须要标准的点:

1.窗户的宽度,需要用于Revit建模时族的设置并在窗户旁注字C?提示这里应该有一个窗户

2.门的宽度和厚度,需要鼡于Revit建模时族的设置并在门旁注字M?提示这里应该有一个门

3.墙厚度,需要用于Revit建模时族的设置你可以写在正下方的注释里

---3.5 给出一些附加信息可以在图纸左右下角附加一些多次出现的构建的标注,指导Revit的族设置正下方写明一些注释指导建模---3.6 别在意那么多细节,这里是游戏建模再次再次强调我们是做游戏建模不是负责实际施工

当然实际施工中你得上全标注,各向立面图等等做好各种细节的地方

但就建立虚擬世界中模型进行实际施工的要求未免有些太拖时间了。因为在游戏世界除非我们希望否则房子不会倒

你可以不建立面图,那么门窗高度合适即可

你可以不管厕所的防水隔层细节直接一块楼板铺就完事

你可以不给楼梯台阶宽高,使用Revit中的默认值合理调整即可

4.Revit建模及导絀FBX模型其实Revit中感觉没什么好讲的正常操作即可

---4.1 注意标高约束---4.2 一些常见的尺寸游戏建模不给立面图的时候,一句高度合适即可究竟有多高呢

窗户窗台一般离地高度0.9m,卫生间窗户窗台高度一般是1.2m-1.4m特殊的排气窗口可以更高

窗户顶高需要比居住者高以保证正常的眺望

门高2.2m是一個通用的数值

其他的楼板,台阶尺寸不需要进行太细致的设置直接用Revit中的默认值即可

---4.3 注意族Revit中建模时是通过设定族类型并在平面图上建竝实例调整位置,自动生成3D模型的方式进行建模的

因此要注意导入和使用合适的族

特殊需要可以通过Revit中编辑或使用3DMax手动创建出合适的族類型进行使用

插入选卡中载入族的选项两扇不同的窗户,使用了不同的族进行建模5.3dMax中的细节处理我们在Revit中以FBX格式导出模型通过3dMax导入这个FBX模型进行细节上的一些处理

设置材质3dMax中导入模型后我们获取场景材质,3dMax就会解析出Revit中使用的材质信息一般门板楼板都会自带有合适的材質包含贴图我们获取一个场景材质后,在FBX文保持的目录下就会出现这个文件夹包含模型所使用的贴图Revit中的这个材质格式虽然能被3dMax解析,泹这个材质以FBX格式导入到Unity中时能够解析出的部分就很有限起码贴图无确的链接我们使用3dMax中的标注材质重建那些包含贴图的材质赋予给场景中的物体,以保证贴图在导入Unity后的正常链接别忘记勾选在视口中明暗处理材质以及按材质选择这个好用的功能---5.2 分割窗片门板设置链接關系,修改对象名称调整物体坐标轴Revit导出的FBX模型中门和窗是完全一体物体,但为了保证我们能够正常制作开关门窗的动画我们需要在3dMaxΦ对窗片门板进行分离

这里开关动画是两个静止状态的切换,运用Unity中的动画状态机系统以及动画复用机制就可以轻松创建和复用开关门窗嘚动画因此我们在Unity中进行动画的创建工作。3dMax需要正确的分割出窗片门板绑定链接关系,修改名称并调整物体坐标轴(保证正确的旋转)为Unity创建复用动画工作进行铺垫

我们需要分割出原本一体的门框和门板,以在Unity中制作开关门的动画一般导出的模型中所有同规格的门窗应该都是有实例链接关系的,同一规格的门我们只需修改一个实例在进行简单操作即可

alt+x透明化显示周边墙壁,选择喷漆选择模式面编輯模式选中门板的全部面作为克隆对象分离并给对象起一个名字,之后选中的面可以看到大多数有实例链接关系的门面一同被了,少數两个门我们再进行分割链接命令,将门板链接到门框上实例门板保持原名称先点击断开链接,之后链接到我们想要链接的没有门板嘚门框上 选中门板轴向显示父对象,右键将移动旋转清零ok门板被设置到了正确的位置上同样的方法我们分割绑定链接好所有的门框和门板

由于门的打开动画是进行以物体坐标为轴的旋转因此我们需要将门的物体坐标轴设置到正确的位置上

参见CAD图纸中的开门方向仅影响轴,旋转打开捕捉设置门板的物体坐标轴是实例出的门板,只需调整一个的轴向即可若不是实例,可记录父对象下轴位置的数据直接對其他门板调整轴向时的移动数据中填入即可---5.3 其他3dMax到Unity的模型导出导入设置建议Randy:当3dMax遇上Unity3d---模型导入的前后你需要注意的地方6.Unity中的模型使用一些导入模型后的设置建议可以看下上面的那篇文章

这里主要讲一下门窗动画的创建

首先需要进行动画复用的,保证父子关系设置的正确孓对象窗片门板的名称一致,如果有错误需要进行手动修改父对象门框上添加一个Animator组件创建一个Contorler动画控制器给Animator组件引入子对象的旋转作为幀控制数据创建两个1s的静止动画,一个是门打开一个是门关闭。如果你正确设置了轴向只需对一个轴进行旋转就可以正确的将门打開通过Unity的动画控制器混合,两个静止动画切换时就会出现正确的开关切换效果创建一个变量控制切换取消Has State保证短时间内连续多次摁下开關门时灵敏且正确的反应UI中创建一个Panel子对象是一个展示的按钮和字体,并挂上一个名为DoorMainCon的脚本(后面给出代码)给门框创建一个名为DoorCon的脚步(后面给出代码)选中其他门框拷贝Animator和DoorCon这两个组件,实现动画的复用下面给出两个脚本的代码代码就不细讲了

我们使用了委托的思蕗来构建开门按钮的脚本

但我们没有采取在DoorMainCon中每帧遍历所有的DoorCon与Player的距离,找出距离合适且最近的门这样的方式

这样的模式在应对中大型游戲中同一场景中门及其他交互机关可能数以千计甚至万计时

我们可以通过将一定区域内的门和其他交互机关数量收集至一个父物体中

在父物体中通过判定与Player的距离选择是否将子对象中的DoorCon脚本active

这样就可以优化每次Update时的运算量

所以我们选择了这种有更有优化空间的思路

ok以上就昰 CAD->Revit->3dMax->Unity3d 运用M技术快速创建3D游戏中的包含室内细节的3D建筑模型型的工作流程以及个人对相关注意点的习惯总结很分享

其实上面有一些点给出的视頻中的那个室内模型在工作流程中并没有做到,是完成后一些总结

4扇推拉门有一个面片没删掉

这篇文章也只是我正在学习中的业余制作者嘚一点总结和分享

这套工作流程的一些注意点如果还有什么纰漏的地方我会不断进行更新

欢迎各路dalao进行留言指正若能不吝赐教鄙人先谢為敬

我要回帖

更多关于 3D建筑模型 的文章

 

随机推荐