unity 获取所有节点节点在空间中的状态有哪些?

  • 有关导入 ATF 文件的信息,请参见使用 Autodesk 转换框架 (ATF) 导入文件以及导入选项主题中关于 Autodesk 转换框架 (ATF) 选项的部分。

    Maya 的此 Extension 版本结合了 FBX 的最新版本 (),除了提供对 HumanIK 侧滚骨骼和新的 LOD 改进功能的支持外,还提供了各种错误修复。

    有关支持的 FBX 导出格式的完整列表,请参见高级选项中的“FBX 版本”(FBX Version)。

    若要放大鼠标指针下的视图(例如,“视图面板”(View Panel)或“曲线图编辑器”(Graph Editor)),请按 Shift + 空格键。这将收拢停靠在主窗口中的所有其他窗格。它类似于按住 Ctrl + 空格键以显示全屏视图,但是不会隐藏“状态行”(Status Line)、“工具架”(Shelf)和“时间滑块”(Time Slider)等 UI 元素。如果鼠标指针悬停在界面的浮动窗口或其他部分(例如,“通道盒”(Channel Box)或“工具设置”(Tool Settings))上方,则会影响您所单击的最后一个视图。再次按住 Shift + 空格键可还原之前查看的配置。

    默认情况下层编辑器中不显示渲染(Render)选项卡

    早期版本中通过层编辑器中的选项卡提供的渲染层编辑器现已替换为新的渲染设置系统(请参见 Maya 中的渲染设置)。如果要使用传统渲染层系统,请打开“首选项”(Preferences)窗口中,选择“渲染”(Rendering)类别,然后选择“传统渲染层”(Legacy Render Layers)作为“首选渲染设置系统”(Preferred Render Setup

    在文件引用期间加强控制通过锁定操作排除属性

    锁定被引用文件的属性时,现在可以加强控制能够通过锁定操作排除的属性。例如,现在您可以仅排除特定节点上的单个属性,或者排除特定节点的所有属性。

  • 工作区定义了窗口和面板的配置。您可以修改当前工作区,方法包括:打开、关闭和移动窗口和面板;通过拖放来停靠或取消停靠窗口和面板。这些更改将在保存时自动覆盖当前工作区。

    工作区比面板布局更为灵活,因为您可以将几乎所有窗口或面板移动或停靠到界面中的任意位置。此外,工作区作为单独的文件存储在用户目录而非场景中。

    使用“窗口”(Windows)菜单中的新命令,您可执行以下操作:

    详细信息请参见工作区。

    注: “窗口”(Windows)菜单中的许多项目均已重新排列。

    新的内容浏览器取代 Visor,成为供您查找示例、场景和其他内容以在 Maya 中构建场景的一站式中心。您可以浏览 Maya 项目、本地和网络目录以及样例库中的文件,然后将其拖放到视图面板中。

    有关详细信息,请参见从内容浏览器查找并导入文件和自定义内容浏览器。

  • 在可用工作区之间切换,其中包括“Maya 经典”(Maya Classic)等预设工作区以及为更具体的任务创建的其他工作区。

  • 将当前配置保存为自定义工作区。

  • 导入和删除自定义工作区。

  • 如果在选择组件时启用“对称”(Symmetry),Maya 会自动选择适当的镜像组件。现有还有一个新的HUD 元素,将显示当前处于活动状态的对称轴。

    还可以使用新的翻转(Flip)命令沿对称轴交换组件的位置。有关详细信息,请参见将不对称的组件进行对称。

    此外,对称支持已扩展到下列工具:

    UV 编辑器工具进行了许多改进,其中包括:

    Maya 2016 Extension 2 中引入的新曲线扭曲变形器可用于快速将网格连接到曲线,驱动各种变形效果。它类似于运动路径,但可以通过更简化的工作流提高自定义。现在,曲线扭曲变形器已经过优化,可进一步提高性能。它还支持 Bezier 曲线,并新增了“循环闭合曲线”(Loop Closed Curves)功能。请参见曲线扭曲变形器。

    现在,您可以使用“对顶点重新排序”(Reorder Vertices)或“传递顶点顺序”(Transfer Vertex Order)命令更改多边形对象上的顶点顺序。请参见修改或传递顶点顺序。

    通过多边形首选项中新增的“细分方法”(Subdivision Method)选项,可以设置新多边形对象的默认细分方法。

  • 排布 UV 已使用新算法进行了更新,可以提供自定义程度更高的结果。

  • 对称 UV 工具允许沿对称线快速排布 UV。请参见对称 UV。

  • 时间编辑器是一个基于片段的非线性编辑器,可用于以非破坏性的方式从整体上编辑动画。与需要角色集的 Trax 编辑器不同,“时间编辑器”(Time Editor)支持动画师处理具有动画曲线的任何属性(包括角色、摄影机、颜色等),使其不受约束。使用修剪、缩放、循环、分割、分组和 Crossfade 等直观的控件,您可以轻松编辑已存在的动画,例如运动捕捉(甚至是多个 Take FBX 文件)或关键帧运动。

    时间编辑器还可用于在基于片段的工作流中根据标准的音频混合软件编辑音频,以将动画混合在一起,从而创建全新的运动。

    “时间编辑器”(Time Editor)还支持许多高级工作流:

    时间编辑器支持您快速迭代任意数量的构想,实现您的创作目标。

    “曲线图编辑器”(Graph Editor)是动画工作流的主要环节。如今,它已凭借更直观简洁的界面实现现代化,可以显著简化上述过程。

    注: 默认情况下,Maya 使用新的“曲线图编辑器”(Graph Editor)启动。切换为动画(设置)首选项中的经典曲线图编辑器。

    重新设计后的曲线图编辑器(Graph Editor)通过增加曲线与背景之间的对比度、简化堆叠视图并将时间轴移动到“曲线图编辑器”(Graph Editor)顶部,注重突出曲线的可见性。

    形变编辑器中的形变创作工作流进行了许多改进,其中包括:

    注: Maya 2016 Extension 2 中引入了形变编辑器。新的形变编辑器取代混合变形编辑器,成为创建、编辑和管理形变的平台。新功能包括单放、分组、镜像、翻转、复制以及导入和导出形状。有关详细信息,请参见 Autodesk Maya 2016 Extension 2 中的 角色动画新特性。

    现在,当使用形变创作工作流时,您可以通过克隆目标工具将编辑从一个混合变形复制到另一个混合变形。

  • 现在可以合并同一混合变形上的多个目标。请参见合并目标形状。

  • 如同目标形状一样,中间帧目标现在具有可见性切换按钮,这样可以在网格上显示和隐藏其效果。请参见编辑目标形状。

  • 通过“形变编辑器”(Shape Editor)创建组合形状时,您现在可以选择驱动者目标影响组合形状的方法。请参见创建组合目标形状。

  • 动画(设置)首选项中的曲线图编辑器首选项

  • 将内容添加和导入到时间编辑器

  • 使运动与不同的世界空间对齐(请参见通过重新定位重新确定角色的方向)

  • 非线性重定时(请参见在时间编辑器中重定时动画)

  • 对新运动分层(请参见将动画层添加到时间编辑器)

  • 禁用和单放轨迹(请参见使用时间编辑器轨迹)

  • 存储不同的运动版本(请参见通过时间编辑器合成组织多个动画故事)

本文无意比较for和foreach谁效率更高,不会设计到for和foreach取值之类的等等。单纯探讨foreach会不会影响unity3d效率。

事情开端是这样的,之前在看unity优化的时候,遇见了这么一句:

尽量不要使用foreach,而是使用for。foreach其实会涉及到迭代器的使用,而据传说每一次循环所产生的迭代器会带来24 Bytes的垃圾。那么循环10次就是240Bytes。

由于刚接触unity以及c#不久,当时没有仔细研究内在原理,只是简单相信了这个说法。于是接下来我会在代码中尽量避免使用foreach,虽然我觉得foreach真的挺好用的。

然后,现在每次遇见遍历,我都会思考为什么foreach会有这样的行为,我想知道真正的原因,直到今天,我才深入寻找资料去论证这个观点。

关于这个说法,百度了下(懒得翻墙去google),找到一篇被广泛转发的文章:

初步看到代码后,很是疑惑,为什么一个简单的foreach会有这么多的内存开销。带着不解,继续搜索,直到看到知乎上这么一篇回答:

所以的疑惑在这里几乎都可以得到解答:

之前在另一个地方看见过2014Unity亚洲开发者大会会议简录上有一个说法:

检测每帧都具有20B以上内存分配的选项

这几乎意味着在Update中使用foreach是不太明智的选择。关于为什么每帧20B以上内存分配不太好,我还没有仔细研究,个人猜测如果每帧20B,累计一段时间会有大量回收内存堆积,而mono回收机制里回收时间点不固定,如果隔一个较长时间点统一回收,必然会导致顿卡现象出现。

回答问题之前,我打算顺着 王剑飞 先生的代码验证一次,代码跟他在知乎回答里的几乎一致:

请注意,这是直接在unity工程里面添加了C#脚本,使用内置的mono编译器来编译代码。

一共440B内存开销,这侧面印证了一个foreach会产生40B的堆内存说法。

这样的结果似乎还是在说,不要使用foreach啊!

我又回想起来知乎上还说过:

既然是mono老版本的bug,能绕过去吗?

答案是肯定的,因为我们的项目正好是把脚本达成dll包,放入工程使用。编译脚本时,使用的是MS最新的编译器,这样是不是没问题呢?

测试一下,将新编译的dll放入工程,结果如下:

相信看完上面的朋友已经有了自己的想法了。

1.脚本直接放在Unity工程中,如果不是在Update中每帧调用,使用foreach没有太大顾虑。如果是Update中,而且是多个地方频繁使用foreach,就需要慎重考虑了。

2.脚本放入Dll中,爱咋咋地吧!

    随着现代城市的不断拓展延伸,城市空间多层次、立体模式管理逐渐成为城市规划管理的发展趋势[1],实现城市空间信息管理模式从二维到三维的转变,三维虚拟城市技术,已经成为人们关注和研究的热点[2]。

图 1 系统实现结构图

    数据的收集与处理,主要包括基础数据准备、实地采集和后期处理。

   基础数据准备主要是收集整理乐山某区域的1: 2000 地形图和高程点,以及最新的航空影像。 通过地形图与影像图的对比和实地考察,划分区域分布图和编号图,用于指导实地数据采集和三维模型建设[8]。

    区域分布图分为基础模型、标准模型和精细模型三个级别,编号图主要是依据道路和景点的分布划分编号,作为模型和纹理命名的依据。需要对前期准备和实地采集的数据进行处理[9],如照片的整理、纹理的收集、属性的汇编,然后建立分片景区照片库、通用纹理库、属性记录表等。 例如树的采集,按照树的种类建立照片库,对照片进行处理后,按照树的种类建立通用纹理库[10]。

    地形模型建模采用高精度数字高程模型( DEM)和高分辫率数字正射影像(DOM),制作高精度地形模型[11]。 根据划定的建模范围,将 DEM 裁切出来,同时结合航空影像,通过 GIS 软件将 DEM 和 DOM 转换到统一坐标系,保证两者坐标一致,将 DEM 和 DOM 数据导入专业软件中,自动生成地形模型,将生成的地形模型转换为三维建模软件(如 3DSMAX)兼容的格式,进行纹理映射,生成高精度地形模型。 这种建模方式的主要特点是建模快速、高程精确、模型真实。

    对于细节要求高的地形实体,如植被、景观路等,主要是根据地形图等高线、高程点以及特征点线,通过三维建模软件,可采用两种方式建模。 一是以 1: 2000 地形图和航空影像作为参考,先勾勒出整个建模范围的道路,以道路作为控制,建立每个景点或者街坊,通过点的高度来表现地形的起伏;也可通过地形图,先在 CAD 勾勒出道路、建筑或人工湖、花坛等封闭的线,参考高程点,在 CAD 调节线中点的高度,然后导入 3DSMAX 中形成面,后者更方便,更准确。 主要特点是表现细腻、色彩美观协调,能够细致表现对象变化细节。

    模型的建立是整个虚拟系统的重要部分,因此在该过程中工作量较大,工作较繁琐。 主要实现过程:建筑物形状分析、建筑物分类和纹理贴图处理[12]。


我要回帖

更多关于 unity 获取所有节点 的文章

 

随机推荐