在整个行业都在高呼“农业学大寨,流程学xx”的大背景下,你想推出一个新的更好的流程有着极大的难度。

在2014年的时候行业内大部分公司就有了资产的概念,会成立资产部门去专门创建资产,供后续环节多次重用,提升单一项目的效率,甚至会供后续其他项目多次使用。由此可见资产的概念已经广为接受,但提出概念容易,要让概念落地就不是一回事了。

       如何整理资产的组织逻辑,如何建立基于资产组织逻辑的配套工具在国内依然缺乏成熟的框架。

近年Pixar为了提升流程的灵活程度,推出了USD这样一个稳定可伸缩的资产组织工具,这个工具充分考虑到了资产组织过程中会涉及的各个节点,对后续资产的复用也提供了任意粒度的重写机制。基于USD如此多的优点,我们来看一下USD是如何组织资产的。

简单举四个例子:

  1. 资产部门创建了一匹马,这匹马有低中高三个不同精度的模型,USD提供了variant功能来支持这种需求;
  2. 资产部门创建了一匹马,马会有多套skin shading network供后续环节选择使用,skin shading network就是马的材质部分,USD提供了reference-layer功能来支持这种需求;
  3. 资产部门创建了一匹马,马鞍是马的道具部分,与马的材质部门分属两个不同层面的粒度,现在马鞍也希望有多套版本供后续环节使用,USD变通地提供了reference-asset功能来涵盖这种需求;
  4. 当资产部门创建的这匹马地可替换部分无法满足后续环节需求的时候呢?USD提供了override机制来化解,你可以inherit这匹马,修改之后发布。

USD通过一套成系统的概念及关系网络来实现这四种特例,是不是很心动?

然而现实很残酷,USD对Maya的支持是有限的,即使是对Presto的支持也是有限的。很多USD中的概念在Maya中并无对应的节点,.usd文件中的层级关系导入到Maya后只能用Group来替代,Maya制作体系中要采用USD是难以覆盖全部环节的。很多人认为USD对Presto是全面支持的,这是一个误解,在Pixar中USD依然是作为Cache使用的,只不过这个Cache更为高级,具备丰富的组织能力。

话题回到Maya,Maya作为国内三维制作中普及率最高的软件,在大多数公司中的绝对位置不容撼动,而当前大部分基于Maya的配套流程工具都采用Maya-Cache-XML-Katana的混合方案,这种方案有几种非常明显的缺点:

  1. 这种方式并未对资产概念做充分实践,大抵还是model->shade->rig->layout->animation->lighting的套路,没有把资产环节单独提炼出来独立设计,粒度不清晰,在资产复用时,这种方案缺少力度。
  2. 装配环节过于简陋,将多个场景文件的配置信息记录在xml中再组装起来的过程层级过于单一,并未形成装配网络的概念体系。
  3. 即使个别公司实现了多层的装配网络,每一个层级也并未组件化,更遑论成熟的配套工具了。

实际上这种方案的极限可以参考Golaem,该插件将XML的方案用到的了极致,并提供了一系列配套工具来构建资产,使用资产,但这个级别的开发可能国内所有视效公司都是望尘莫及的。

那么公司内部的Maya自研流程真的就到极限了吗?显然不是,我下一篇文章将会介绍如何在Maya中成体系的快速建立资产体系,将资产环节的问题一劳永逸的解决!

闲话Pipeline In Maya的更多相关文章

  1. cg tut

    Gesture Drawing with Alex Woo Gesture Drawing with Alex Woo and Louis Gonzales http://eisneim.com/?p ...

  2. redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作

    前段时间在做用户画像的时候,遇到了这样的一个问题,记录某一个商品的用户购买群,刚好这种需求就可以用到Redis中的Set,key作为productID,value 就是具体的customerid集合, ...

  3. 将MPM雪模拟移植到Maya

    同事实现了一个迪士尼的MPM雪模拟论文,我将其移植到Maya中 论文题目是 A material point method for snow simulation 代码在这里: https://git ...

  4. 从Maya中把模型搬运至网页的过程

    虽然利用threejs来在网页中渲染3d模型不是第一次折腾了,但是还是遇到了各种问题.总结下我所遇到的问题,希望能给正在使用threejs的小伙伴一个帮助. 一.所使用的软件与开发环境 Maya201 ...

  5. Building the Testing Pipeline

    This essay is a part of my knowledge sharing session slides which are shared for development and qua ...

  6. Scrapy:为spider指定pipeline

    当一个Scrapy项目中有多个spider去爬取多个网站时,往往需要多个pipeline,这时就需要为每个spider指定其对应的pipeline. [通过程序来运行spider],可以通过修改配置s ...

  7. 图解Netty之Pipeline、channel、Context之间的数据流向。

    声明:本文为原创博文,禁止转载.       以下所绘制图形均基于Netty4.0.28版本. 一.connect(outbound类型事件)  当用户调用channel的connect时,会发起一个 ...

  8. 初识pipeline

    1.pipeline的产生 从一个现象说起,有一家咖啡吧生意特别好,每天来的客人络绎不绝,客人A来到柜台,客人B紧随其后,客人C排在客人B后面,客人D排在客人C后面,客人E排在客人D后面,一直排到店面 ...

  9. jcFeather Maya 羽毛插件

    jcFeather 2.8.6 插件持续更新地址为:http://www.jerrykon.com/jcFeather.html 和 http://www.creativecrash.com/maya ...

随机推荐

  1. Linux 使用硬盘

    一.硬盘分区规划: swap(交换,掉期交易,互换)分区:虚拟内存使用,不能保存用户信息. boot(引导)分区:保存启动系统得相关文件. root(根)分区:放置系统文件得根,所有文件都保存在该分区 ...

  2. while循环--登录

    user = "fallen577" password = " count = 0 while count < 3: username = input(" ...

  3. JS Math方法

  4. java 二分法学习

    假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1.代码如下: package ...

  5. ES6 —— 数组总结

    1. map:映射   一个对一个 arr.map(function(item) { ... })    可以配合箭头函数:arr.map(item => ... ) let arr1 = [1 ...

  6. 浅析toString()和toLocaleString()的区别

    翻看<javascript高级程序设计>,对toString()和toLocaleString()两者的区别并没有直白的说明,简单查阅了一下 ecmascript官方文档 和 MDN 二者 ...

  7. python 12

    #! /usr/bin/python a = 1 b = [2, 3] def func(): a = 2 print("in func a:", a) b[0] = 1 prin ...

  8. OnApplicationFocus & OnApplicationPause &时间戳

    锁屏.切到后台 程序强制暂停时使用 private long leaveTime; private void OnApplicationFocus(bool focus) { if (focus==f ...

  9. DJango 前三天小结

    一 DJango 所有命令: 1下载: 控制台:pip install django== ​pip install django== -i 源解释器:找到解释器,点击加号搜索django 2创建项目; ...

  10. Codeforces 1105B:Zuhair and Strings(字符串水题)

    time limit per test: 1 second memory limit per test: 256 megabytes input: standard input output: sta ...