喜大普奔!Maya 2022来了?!

距离Maya 2020第一个版本发布已经过去将近1年半。各位用户苦等Maya 2021的发布,不料2021没等到,而Maya 2022要来了?!这两天小编刷Maya官网,在帮助页面竟然看到官方放出了“Maya 2022 新特性”的页面!吓得小编虎躯一震,赶紧为各位客官整理了即将到来的~ 适用于Maya的USD插件Maya 中提供了通用场景描述 (USD) 支持:美工人员可以将 USD 与 Maya 工作流无缝地结合使用。通过 Maya 中的通用场景描述 (USD) 支持,美工人员可以将 USD 与 Maya 工作流无缝地结合使用。Windows、Mac 和 Linux 上提供了预置的 Maya USD 开源插件。Maya 2022兼容USD一举,让Maya用户更好地优化Pipeline,更灵活、更规模化地传输和集成3D资产文件。想更多了解什么是USD,USD在一流视效工作室中是如何应用的,又解决了哪些难题,可以阅读瑞云渲染之前来带的。 Python 3默认情况下,适用于 Windows 和 Linux 的 Maya 现在将以 Python 3 模式启动。Python 3 可用于所有平台。对于 Windows 和 Linux,按照更新后的 Maya 中的 Python 部分中的说明,仍能够以 Python 2 模式启动 Maya。注:适用于 MacOS 的 Maya 只能以 Python 3 模式启动。对于适用于 macOS 的 Maya,Python 2 不再可用。 安全首选项可以在“首选项”(Preferences)窗口中标记要在 Maya 加载命令或插件时阻止的特定命令或插件位置。可以在“首选项”(Preferences)的新“安全”(Security)部分中标记要在 Maya 加载命令或插件时阻止的特定命令或插件位置。在您要从未知源接收文件并想要保护系统的完整性时,这尤其有用。不论是去年的突如其来的“普天同庆”恶意脚本,还是前几天曝出的疑似“普天同庆”变种的病毒,除了会感染Maya的场景文件,新的变种病毒甚至不会在特定时间杀死宿主,而疯狂传播,任意肆虐。Maya这一更新能有效的保证场景文件不被病毒侵害,可谓给广大小主上了一粒“救心丸”。更多关于“也给你列出来了,欢迎大家查阅。Maya 2022除了这3项重要的更新,还有以下一些重要的新特性: 动画重影使用“重影编辑器”(Ghosting Editor),可以创建回显动画的图像,从而能够可视化已设置动画的对象随时间的移动和位置变化。")角色来源:创建三维角色 变形器的组建标记组件标记可用于创建与节点无关的命名组以对几何体进行变形,从而允许您即时修改标记成员身份。使用组件标记可替换以前变换顶点所需的 groupID 节点,并通过消除调整节点来清理节点编辑器(Node Editor)。每当创建变形器时,都会自动创建组件标记节点,其中包含选定组件的子集。可使用“组件标记”(Component Tags)表(位于“属性编辑器”(Attribute Editor)的形状节点选项卡中)创建和编辑组件标记成员身份。有关这些元素的描述,请参见为几何体指定组件标记。 Bifrost 2.2.1.0 插件Maya 2022 提供 Bifrost 2.2.1.0,其中包括新功能、性能改进和错误修复。 曲线图编辑器改进“曲线图编辑器”(Graph Editor)具有以下更新和改进。1. 用于清理噪波动画数据的峰移除过滤器2. 可用于减少曲线“噪波”的平滑过滤器(高斯)3. 保留切线类型(Preserve Tangent Type):现在用于添加的关键帧:启用(默认")用于添加的关键帧的“保留切线类型”(Preserve Tangent Type):启用(默认):禁用")用于添加的关键帧的“保留切线类型”(Preserve Tangent Type):禁用 扫描网格(Sweep Mesh)使用新的“扫描网格”(Sweep Mesh)功能可以从简单的曲线形状创建网格。功能可以从简单的曲线形状创建网格")扫描网格示例工作流:开瓶器、框架和藤蔓 Rokoko 运动库插件使用 Rokoko 插件,您可以直接在自己家中安全舒适地将专业制作的运动捕捉资产拖放到您的场景中。 缓存播放改进缓存播放已更新,可支持动力学节点和“时间编辑器”(Time Editor)。 新的固化变形器使用新的固化变形器,可以在变形几何体上创建看起来比较坚固的几何体区域,从而可以定义角色衣服的刚性部分,如纽扣或皮带扣。 OpenColorIO v2Maya 集成了 OpenColorIO v2,以实现一流的颜色管理。OCIO v2 是一款完整的颜色管理解决方案,适用于电影制作,重点在于视觉特效和计算机动画。 Create VR for Maya Create VR for Maya 是一款沉浸式概念设计工具,可供美工人员和设计师直接在三维环境中开始他们的创意之旅。 Arnold for Maya 4.2.1 插件Maya 2022 提供 MtoA 4.2.1,其中包括新功能、性能改进和错误修复。 自动切线类型“曲线图编辑器”(Graph Editor)中新增的“自动切线”(Auto Tangents)选项可提供改进的算法,让动画师能够更好地控制和预测结果。 启动体验改进1. 更快的启动和退出速度以及新的初始屏幕2. 新的复制首选项选项3. 记住“输出窗口”(Output Window)的状态4. 能够从以前的安装复制特定首选项5. 信息更丰富的新初始屏幕以上都是Autodesk官方详细列出的新特性,除此之外还有6个功能被简洁地罗列了出来。1. Maya 2022 devkit新特性2. 新环境变量3. HUD更新了解算管理器状态消息4. “时间滑块书签“(Time Slider Bookmark)改进5. 变形器更新6. HumanIK:“颈部运动减少”(Neck Motion Reduction)设置从这些更新的功能中我们不难看出,Maya 2022想给用户打造一个兼容性更强,速度更快,玩法更丰富,重点是更加安全的创作平台。目前Autodesk官网帮助页面刚刚释出Maya 2022新功能不久,甚至还经常404,感兴趣的小伙伴可以移步官网探寻更多细致的新功能解析。若出现404页面,按照图片操作步骤点击,即可查看新特性不过,可以确定的好消息是不久的将来Maya 2022就能和各位小伙伴见面啦,让我们一起期待它将给大家带来怎样的新体验吧~本文《整理发布,如需转载,请注明出处及链接:相关阅读推荐:

头条
Python 的效率編程_simplified

Python 说是当今最热门的编程语言之一,相信大家都不会反对。在去年就有报导说在美国顶针的计算机大学当中,有80%的大学已选用Python 作为编程入门的教学语言。在三维动画业界当中,也越来越多软件支援使用Python 来作开发,使制作人员能容易开发出相关工具,从而提升工作效能。跟Perl 和Ruby 一样,Python 被归类为Scripting language,设计取向为语法简单,但秏用系统资源比较多,被形容为「犠牲执行效率去换取编程的开发时间」。在这里让我们来分享一些有关怎么去做Python 编程的例子,可以让我们争取更多的执行效率。例子一・ 交换两个变数的值: import timeit def doSwapWVar(): a = 1 b = 2 tmp = a a = b b = tmp def doSwapWOVar(): a = 1 b = 2 a,b = b,a if name == 'main': t1 = timeit.Timer('doSwapWVar()', 'from main import doSwapWVar') t1.timeit() - t2 = timeit.Timer('doSwapWOVar()', 'from main import doSwapWOVar') t2.timeit() The execute time print 'Swap with create variable : ', min(t1.repeat(3, 3000000)) print 'Swap without create variable : ', min(t2.repeat(3, 3000000)) print 'Swap with create variable : ', min(t1.repeat(3, 3000000)) print 'Swap without create variable : ', min(t2.repeat(3, 3000000)) print 'Swap with create variable : ', min(t1.repeat(3, 3000000)) print 'Swap without create variable : ', min(t2.repeat(3, 3000000)) Result : Swap with create variable : 0.577996969223 Swap without create variable : 0.568822145462 Swap with create variable : 0.588035106659 Swap without create variable : 0.556537151337 Swap with create variable : 0.599809169769 Swap without create variable : 0.563858985901a,b = b,a 是Python 的一个典殿堂范例,完美展现出Python 语法的简单和优雅,但好处不只这样。我们使用timeit 来统计这两个不同的交换方法执行所需的时间,doSwapWVar是产生一个参数来暂存其中一个变数的值,另一个doSwapWOVar是直接运用Tuple的打包/解包来实现互换。我们从结果看到,doSwapWOVar 执行的效率明显比doSwapWVar 快。例子二・使用if 还是使用 try/except:我们先来看下面的程式码 import timeit def doCheckUsingIf(x): d = {1:None, 2:None, 3:None, 4:None, 5:None, 6:None, 7:None, 8:None} for i in range(1, x): if i in d: di = i def doCheckUsingTry(x): d = {1:None, 2:None, 3:None, 4:None, 5:None, 6:None, 7:None, 8:None} for i in range(1, x): try: di = i except: pass if name == 'main': t1 = timeit.Timer('doCheckUsingIf(10)', 'from main import doCheckUsingIf') t1.timeit() t2 = timeit.Timer('doCheckUsingTry(10)', 'from main import doCheckUsingTry') t2.timeit() print 'Check using if :', t1.repeat(1) print 'Check using try :', t2.repeat(1) Result : Check using if : 2.5136549472808838 Check using try : 2.1905322074890137 这次我们想要对一个dictionary 里面的key,指定一个跟key 一样的值。在Python 当中,如果指定值的Key 是不存在的话,系统就会返回错误。在doCheckUsingIf 当中,每次执行「d[i] = i」之前,都会用if 去先检查目标的key 是否存在于dictionary 里面。而doCheckUsingTry 当中,使用了try/except 去处理当「d[i] = i」错误发生的状况。从上面的结果看到的,使用Try/except 比使用if 所花的时间少。我们来修改一下刚刚的程式码 import timeit def doCheckUsingIf(x): d = {1:None, 2:None, 3:None } for i in range(1, x): if i in d: di = i def doCheckUsingTry(x): d = {1:None, 2:None, 3:None } for i in range(1, x): try: di = i except: pass if name == 'main': t1 = timeit.Timer('doCheckUsingIf(10)', 'from main import doCheckUsingIf') t1.timeit() t2 = timeit.Timer('doCheckUsingTry(10)', 'from main import doCheckUsingTry') t2.timeit() print 'Check using if :', t1.repeat(1) print 'Check using try :', t2.repeat(1) Result : Check using if : 1.8367161750793457 Check using try : 2.2109630107879639我们只修改了d 在初始化时的内容,减少了一部份的key。有趣的是,这次的结果跟刚刚完全相反,运行doCheckUsingIf 比doCheckUsingTry 快!确实是当进入except 的次数比较多的状况下,执行所花的时间会非常多,但这是否代表我们就不应使用Try/except 呢?其实我们在编写程式的时候,不应该容许返回错误那么多的情况出现,只要我们在编程时注意所处理资料的向性,使用Try/except 也绝对可以是高效的。例子三· 比对两个List import timeit def doCompareWithList(): a = range(30) b = range(10) for number in a: if number not in b: b.append(number) def doCompareWithDict(): a = range(30) b = range(10) dictB = dict.fromkeys(b) for number in a: if number not in dictB: a.append(number) dictBnumber = None b.append(number) if name == 'main': t1 = timeit.Timer('doCompareWithList()', 'from main import doCompareWithList') t1.timeit() t2 = timeit.Timer('doCompareWithDict()', 'from main import doCompareWithDict') t2.timeit() print 'Compare between with list :', t1.repeat(1) print 'Compare between with dict :', t2.repeat(1) Result: Compare between with list : 21.412750959396362 Compare between with dict : 12.298678874969482现在我们想要做的是比对一下a 跟b 两个List 里面的元素,当发现a 当中有b 没有的元素时,就把这个元素加入b 里面。在doCompareWithList 当中,用for 把a 的每一个元素代入成number,用if number not in b 去检查,我们要注意的是,这样要遍历整个b 才会知道number 是不存在的。所以当a 有大量b 没有的元素的话,遍历整个b 的次数会非常非常多。在doCompareWithDict 当中,我们在比对之前先用b 的元素创建了dictB 这个dictionary,然后用if number not in dictB 来比对,检查number 是否跟一个dictionary 的key 相同,所执行的速度是非常快,key数量的多少不会对这速度有太大的影响,所以我们看到范例的做法,doCompareWithDict 比doCompareWithList 效率超出了43%。以上就是本期瑞云学堂的内容,希望对CG感兴趣的朋友可以关注我们的微信公众平台,或者官方微博,下期瑞云小讲堂再见!

2015-02-09 08:38:52Python
小讲堂

热搜关键词

搜索

媒体支持

media-0media-1media-2media-3media-4media-5media-6media-7media-8media-9media-10media-11media-12media-13media-14media-15media-16media-17media-18media-19media-20