网格(meshes)

2015-1-6 16:36| 发布者: 杨炎| 查看: 1845| 评论: 0|原作者: 蛮牛|来自: yzc88亚洲城脚本manual

摘要: 网格(meshes)网格组成很大一部分三维世界坐标。除了一些资源商店插件之外,unity 不包括建模工具。不过 unity 与大多数三维建模包之间具有很强交互性。unity 支持三角形或四边形网格。nurbs、nurms 和 subdiv 表面必 ...

网格(meshes)

网格组成很大一部分三维世界坐标。除了一些资源商店插件之外,unity 不包括建模工具。不过 unity 与大多数三维建模包之间具有很强交互性。unity 支持三角形或四边形网格。nurbs、nurms 和 subdiv 表面必须转换为多边形。

三维格式

您可使用两种主要的文件类型将网格导入至 unity:

导出的三维文件格式,如.fbx 或 .obj

专有的三维应用文件,如 3d studio max 或 blender 中的.max和.blend文件格式。

这两种类型的文件可帮助您将网格导入至 unity,但在选择文件类型时,您需要考虑使用哪种文件格式:

导出的三维文件

unity 可读取.fbx,.dae(collada)、.3ds.dxf.obj文件,您可在此找到 fbx 导出程序,也可查找可用于多种应用的 obj 或 collada 导出程序

优势:

仅导出所需数据

使用可验证的数据(在 unity 重新导入至三维资源包)

文件通常更小

鼓励使用模块化方法 - 例如,根据碰撞类型或交互性选择不同组件

支持其他三维包(我们不直接支持其专有格式的三维包)

劣势:

原型和迭代的管道运行速度更慢

更容易丢失源(工作文件)和游戏数据(如导出的 fbx)之间的版本信息记录

专有三维应用文件

unity 也可通过转换导入专有三维应用程序文件:maxmayablendercinema4dmodolightwavecheetah3d文件(如.max.mb.ma等)。优势:

快速的迭代过程(节省源文件和 unity 重新导入时间)

简化的初始阶段

劣势:

使用 unity 工程的所有机器都必须安装有许可证的软件副本

无用数据会大大增加文件大小

文件太大会降低 unity 更新速度

验证减少 故障排除难度增加

下面是一些针对直接支持的三维应用程序的指导,其他三维应用程序通常可以导出上面列出的文件类型。

maya

cinema 4d

3ds max

cheetah3d

modo

lightwave

blender

纹理

unity 会按照特定搜索计划,在导入时自动查找网格使用的纹理。首先,导入器会在网格所在的相同文件夹中或任何父文件夹中查找名为“纹理”(textures) 的子文件夹。如果此查找失败,则会对工程中的所有纹理执行详尽搜索。虽然稍微较慢,不过详尽搜索的主要劣势在于工程中可能存在两个或更多同名纹理。在此情况下,不保证将找到正确的纹理。

将纹理置于处于资源级别或该级别以上的纹理 (textures)文件夹中

用于模型的 fbx 导入器选项

材质生成和分配

对于每个导入的材质,unity 将应用以下规则:-

如果禁用材质生成(即取消选中导入材质 (import materials)),则将分配默认漫反射材质。如果启用,则将执行以下操作:

unity 将基于材质命名 (material naming)设置为 unity 材质选取名称

unity 将尝试查找具有该名称的现有材质。材质搜索范围由材质搜索 (material search)设置定义。

如果 unity 成功找到现有材质,则会将其用于导入的场景,否则会生成新材质

碰撞组件

unity 使用两种主要类型的碰撞组件:网格碰撞组件基元碰撞组件。网格碰撞组件是使用导入的网格数据的组件,可以用于环境碰撞。在“导入设置”(import settings) 中启用生成碰撞组件 (generate colliders)时,会在将网格添加到场景时自动添加网格碰撞组件。对于物理系统而言,会将其视为固体。

如果在四处移动物体(例如汽车),则不能使用网格碰撞组件。而是必须使用基元碰撞组件。在此情况下,应禁用生成碰撞组件 (generate colliders)设置。

动画

动画会从场景自动导入。有关动画导入选项的更多详细信息,请参阅 mecanim 动画系统中关于资源准备和导入的部分。

法线贴图和角色

如果某个角色具有从高多边形版本的模型生成的法线贴图,则应使用 180 度的平滑角度 (smoothing angle)导入游戏质量版本。这会防止由于切线拆分而在光照中形成看起来奇怪的对接处。如果使用这些设置时仍存在对接处,请启用跨 uv 对接处拆分切线 (split tangents across uv seams)

如果将灰度图像转换为法线贴图,则无需担心这一点。

混合形状 (blendshape)

unity 支持混合形状(blendshape,也称为变形目标或顶点级别动画)。unity 可以从.fbx(混合形状 (blendshape) 和控制动画)和.dae(仅混合形状 (blendshape))。unity 混合形状 (blendshape) 支持顶点、法线和切线上的顶点级别动画。网格可以同时受皮肤和混合形状 (blendshape) 影响。使用混合形状 (blendshape) 导入的所有网格都将使用蒙皮网格渲染器(无论其是否具有皮肤)。混合形状 (blendshape) 动画作为普通动画的一部分导入 - 它仅在蒙皮网格渲染器上对混合形状 (blendshape) 小组件进行动画处理。

可通过两种方法导入具有法线的混合形状 (blendshape):

法线 (normals)导入模式设置为计算 (calculate),这样会将相同逻辑用于为网格和混合形状 (blendshape) 计算法线。

将平滑组信息导出至源文件,这样 unity 将通过平滑组为网格和混合形状 (blendshape) 计算法线。

如果希望混合形状 (blendshape) 上具有切线,则将切线 (tangents)导入模式设置为计算 (calculate)

h提示

尽可能将网格合并在一起。使它们共享材质和纹理。这具有巨大的性能优势。

如果需要在 unity 中进一步设置对象(添加物理、脚本或其他超棒内容),请无需苦恼,而是在三维应用程序中正确地命名对象。使用大量类似于pcube17或box42的对象并不有趣。

使网格在三维应用程序中的世界坐标原点上居中。这会使它们更容易放置在 unity 中。

如果网格没有顶点颜色,则 unity 在首次渲染网格时会将一组全白顶点颜色添加到网格。

unity 编辑器显示太多顶点或三角形(与三维应用程序的显示相比)

这是正确的。您所看到的是实际发送给 gpu 进行渲染的顶点/三角形数量。除了材质需要将它们发送两次这类情况,与建模应用程序的显示相比,硬法线和非连续 uv 这类其他内容显著增加了顶点/三角形数量。三角形在三维和 uv 空间中都必须连续以形成剥离,因此在具有 uv 对接处时,必须创建退化三角形才能形成剥离 - 这会增加数量。

另请参阅

为优化性能建模角色

如何使用法线贴图 (normal maps)?

如何修正已导入模型的旋转?

相关阅读

文章点评
相关文章