[Unity 3D] FBX添加Mesh Collider

[Unity 3D] FBX添加Mesh Collider,第1张

第一步: 选择模型

__第三步:__Model拖入场景,并为模型添加 Mesh Fillter , Mesh Collider 组件

第四步:为上述添加的2个组件添加第2步生成的Collider;

Tips:

第1步打开unity3d场景在里面导入一个相对更复杂的模型。第2步首先我们给这个模型添加Rigdibody刚体组件。第3步接着在Compont给其添加Mesh Collider组件。第4步勾选里面的 Convex,会默认根据自己的模型生成一个碰撞范围,但是不是很精确。第5步如果要更精确的碰撞,我们可以根据模型对应的部分,创建多个碰撞网格模型。第6步然后我们展开模型,把里面的网格ear1拖放到Mesh中,然后勾选Convex就可以在对应的位置建立碰撞范围,比如这里的右边的耳朵。第7步接着我们可以再次添加一个Mesh Collider把模型的另一个耳朵ear也添加上碰撞范围ear2。第8步同样的方式我们可以把模型需要添加碰撞的地方都添加上去,然后运行就可以得到更真实的物理效果了。特别提示作为碰撞使用的每个模型网格点面不能超过256个,否则转换的时候会报错。

使用unity3D制作场景的时候,我们需要在里面导入各种模型,其中有些比较复杂的模型我们需要给其添加碰撞效果,这时候我们可以使用对应的网格碰撞组件,然后自己设置相对更精确的网格作为碰撞检测的范围就可以了,下面就给大家带来实际 *** 作,希望能帮助到有需要的人。

工具/软件

电脑型号:联想(Lenovo)天逸510S; 系统版本:Windows7; 软件版本:Unity3D

方法/步骤

第1步

打开unity3d场景在里面导入一个相对更复杂的模型。

第2步

首先我们给这个模型添加Rigdibody刚体组件。

第3步

接着在Compont给其添加Mesh Collider组件。

第4步

勾选里面的 Convex,会默认根据自己的模型生成一个碰撞范围,但是不是很精确。

第5步

如果要更精确的碰撞,我们可以根据模型对应的部分,创建多个碰撞网格模型。

第6步

然后我们展开模型,把里面的网格ear1拖放到Mesh中,然后勾选Convex就可以在对应的位置建立碰撞范围,比如这里的右边的耳朵。

第7步

接着我们可以再次添加一个Mesh Collider把模型的另一个耳朵ear也添加上碰撞范围ear2。

第8步

同样的方式我们可以把模型需要添加碰撞的地方都添加上去,然后运行就可以得到更真实的物理效果了。

特别提示

作为碰撞使用的每个模型网格点面不能超过256个,否则转换的时候会报错

近来在一些论坛上看到有不少朋友问及有关如何设置Mesh Collider的相关问题,部分网友的答复的一些方式可能会造成Collider使用的误解,特此写了一篇说明如何在复杂模型上设置Collider的 *** 作,希望对于使用Unity的朋友能在制作上面提供些帮助。

我们以一个赛车模型来说明Mesh Collider组成结构,首先注意到车辆的四个轮子是完全独立,并按照前后轮名称区分模型对应的关系位置。

赛车模型比较特别的地方是有两个 Unity 专用的碰撞对象,名称分别为Collider_Bottom与Collider_Top,这两个对象分别表示车顶与车身的碰撞结构体。

使用移动工具将这两个Collider 移到旁边位置观察,Collider顶部与底部组合起来接近于赛车的外形,但是结构却精简许多,这是因为我们只需要利用这两个碰撞器让赛车模型与环境进行碰撞作用即可。

车辆模型以FBX格式导入Unity之后,我们可以看到车体外观貌似被灰色的结构包覆,没错,灰色的部分就是原来在3ds max里面用来产生碰撞作用的Collider Top与Collider Bottom。

但是我们并不需要Collider这种简单的灰色外观,所以在Inspector面板中将Mesh Renderer这个渲染功能关闭(或是Remove Component也可),然后再增加一个Mesh Collider,这样就完成了车体顶部的碰撞体设定。

Collider_Top完成设定后在Scene窗口所呈现的效果

Collider_Bottom也采用相同的方式,取消Mesh_Renderer,增加Mesh_Collier。

如果需要Collider_Top与Bottom当作触发器,可勾选Is Trigger即可产生作用,此外Material可根据Physics Material提供的碰撞表面进行属性的调整,然后另存为场景中车辆专用。

例如可以将动摩擦力(Dynamic Friction)与静摩擦力(Static Friction)这两个数值加大,可增加车辆在擦撞的其他物体时产生比较真实的碰撞效果,这些数值可以在测试游戏中一边修改一边进行观察。

另一个设置Collider问题最多的地方就是道路的边缘部分,有朋友问说如果需要在弯曲的道路两边设置Collider,那是不是要一个个手动摆放Box Collider…看到这边,相信不少朋友都知道这肯定不是一个好方式,如果要这样摆放Collider,那估计是一个无聊且错误的做法。

如图所示,道路两边绿色网格即是Mesh Collier,制作方法是在3d软件中顺延道路将高度延伸出来(以超过车辆高度为原则),使用单面结构,注意法线方向以免碰撞方向出现错误,导入Unity 之后,与车辆的Collider制作方式相同,关闭Mesh Renderer,增加Mesh Collider。

在Mesh Collier >Material 选项内指定另一个表面碰撞属性,作用就是当车辆撞击道路两侧时除了不会翻越出去,还能产生比较真实的擦撞效果。

从一个隧道的模型来解释Mesh Collier的作用更容易理解,画面中绿色部分为隧道的顶部与部分墙面,从结构上来看很清楚的表示我们只采用了一部分多边形来设定Mesh Collider,

有的朋友可能会说直接将隧道模型加上Mesh Collider不是也可以?为何还需要另外导入一个模型来做为碰撞专用的结构体?

关于这点,我们的理解是这样的,结构越简单的物体所产生碰撞相对来说比较不会出错,同时也不会消耗太多系统资源,毕竟在游戏中追求的是画面流场度,所以在场景设计中必须将这些碰撞计算优化的部分事先考虑进去。

现在我们来看看另一个例子,场景中的栏杆呈现出弯曲造型,将这组模型输出到Unity,然后分别在地板与栏杆上增加Mesh Collider属性。

测试一下效果,在场景内放置一个加上Rigidbody属性的球体,按下Play,球体向下掉落后,遇到栏杆则产生碰撞作用。

如果勾选栏杆Mesh Collider >Is Trigger使其转换成触发器,问题来了,这时栏杆就失去了Collider作用而让球体直接穿越过去,所以在这种情况下我们就必须使用另一个方式来制作栏杆的Mesh Collier,使栏杆能具备碰撞与触发器作用。

回到3ds max,使用2D画线工具延着栏杆画出一段根据外型弯曲的线段,然后使用Outline延展出宽度。

绘制完成线段后延伸出高度并给予命名(Collider_fence),如图所示:

将这个制作完成栏杆模型导入Unity,取消勾选Mesh Renderer,然后增加Mesh Collider并勾选Is Trigger,表示导入的Collider_fence已经具备了触发器作用。

如果Collider_fence不需具备触发功能,只是要做出碰撞反应,那么在Collider_fenceg上面加上Mesh Collider即可,也不需要勾选Is Trigger。

透过前面的简要 *** 作后,相信大家对于Mesh Collider的用法已经有了更深一层的了解,在往后遇到这类模型的制作方法上就可充分运用;对于触发器与Collider的结合 *** 作将会在之后推出更详细的使用教程。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11549298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存