BaseFx实习小记(二)

这个礼拜慢慢的工作走上常轨了,同事之间也相互熟悉了很多。一直持续着晚上十点多睡早上五点左右起的生活,这段时间基本上没有什么自己的个人生活,全都是以工作学习为中心了。希望自己能学的越多越好,时间不等人,自己还有很多事情要去做要去实现。

这个礼拜手上一共拿到了两个镜头,一个是上项目的镜头,不过难度不大,只需要在前人的基础上做一点点修改,虽然是布料模拟,但是到我手上的时候连解算也不需要用上,直接用lattice做手动修改就好了。director给的建议一定要听,这句话现在算是真正理解的很透彻了,去年下半年的时候因为一个作业的原因有幸采访了sidefx的高级产品顾问rob stauffer,其中他就有强调过新手在刚进入这个行业的时候需要注意什么时他就强调过一定要跟着指导的方向走。我们这一行的人有个通病就是觉得自己太聪明,总觉得自己能有很牛逼的解决方法。其实往往现实是指导给出的建议是最经济最直接的方法。我这里强调这个问题不是说这周我做错什么,只是做完了会感觉director给的意见和思路就是他妈的要快要好。这是第一个镜头。

第二个镜头是拿的项目镜头给我做测试用,还有另一个特效师在同时做这个镜头。镜头是子弹打玻璃,就这么简单,但是做起来又一点都不简单。首先的问题是玻璃的材质,其次是子弹是连续打在玻璃上,也就是说过程中有好几枪。最开始想的时候觉得如果能让玻璃有动态的破碎效果,视觉效果应当会非常不错,但是怎么破碎就成了一个很大的问题,预破碎抓不住动态的点,而且玻璃是钢化玻璃碎了的话很多地方是稀碎的样子,所以很不好做预破碎,但是动态破碎短时间又没想好怎么处理。如果你有好的方法希望能够与我分享一下。以前看过有人在unity里面实现过用鼠标点哪哪就破碎,但是这个问题想了半天也没有把思路捋顺在houdini里面怎么去实现它。之后没办法,只好在网上先看大量教程和相关图片找找感觉,总不能死在这个角落里。考虑到是钢化玻璃后来我选了一个折中的办法,玻璃还是预破碎,角色一共在玻璃上打了六枪,我就让他在第五枪的时候像往常钢化玻璃一样瞬间粉碎掉落,这一改是既省事效果又不假,简单测试了这个方向可行后就开始细化工作了。第一个制作步奏就是做好玻璃破碎的otl,因为子弹打穿玻璃会在洞口处出现环状散射形的破碎,其他地方的破碎大小也会受几个子弹孔的位置受到一定影响,所以单纯的voronoid破碎是不太现实的。这个自定义包有两个接口,第一个接入玻璃面,第二个接口接入子弹洞口的点。花了大概两天把otl测试好了,之后就是动力学结算破碎以及什么时候破的问题了,难度都不是太大。

这一个镜头下来整体的感受就是,破碎特效这个部分有两个比较重要的组成能够很直接的影响到最后出来的效果,第一个就是破碎的图案,这个非常有讲究,而且也直接能表现出其材质的特性,第二就是约束,大部分人都知道有glue这个约束,也用不厌。虽然我在这个镜头里面连事先做好的约束也没用上,效果最后出来也不差,但是事后总结的时候觉得单单玻璃这一个物体也有很多总破碎的样子,约束也可以使用不同的类型来实现。比如像篮球框用的是典型的钢化玻璃,破碎的时候图案就很稀碎一颗一颗的类似长方体的,部分能够连成块状,约束用最简单的glue就可以搞定,也可以不用。如果是常规的玻璃,比如小学的时候教室的窗户玻璃,那种玻璃就是最常规的玻璃,他的破碎有个特性就是能够出现长条形的弧线,如果是破个洞的话 ,洞的周围会有剧烈向外散射的裂纹。如果是车子的前窗那样的玻璃就又有点不一样了,他们本来是钢化玻璃,但是在中间会有类似金属网的夹层或者外层会有一层特殊的薄膜层,这一层的目的是让玻璃碎了之后也不会散的到处都是,反倒会像一块软板一样即便是碎了也可以有一定程度的卷曲,这种情况下我觉得能用上hard (pin) 约束或者cone约束并用约束受的torque和angle来判定他们什么时候断,这样是能够达到类似的效果的。

在任务之外,自己也做了一些非常有意思的测试,要不然每天六七点就到了公司也不能白呆在那什么也不干是吧。主要围绕自定义粒子的行为以及用sop里面的法相线来影响粒子的运动法相以及速度。这个之后再有时间在单独出一篇文章好好总结一下,这里就不多说了。

这段时间也好好整理了一下自己需要往哪个方向继续深入。还是觉得自己对效果开发比较感兴趣,更喜欢写点小东西什么的。接下来的时间里希望能把公车和早上的时间利用起来好好把程序这块深入下去。

时间: 2024-12-19 21:51:49

BaseFx实习小记(二)的相关文章

BaseFX 实习小记(四)

已是夜深了,今天的拖延症格外严重,所有的邮件和OPT申请的事情都拖到了晚上才开始做,轮到这篇文章的时候已经过了凌晨了,但是这篇文章一定要今天写完,过了这个点估计也抓不到这个心情了. 说实话心情是不好的,主要是OPT的申请还没开始就一直伴随着各种问题,关键就出在自己人在中国,而那份申请最安全的方法还是必须自己亲自在美国申请.在这想插一句,再往前推更不爽的事情就是因为是中国人,活生生去sidefx加拿大实习的机会也因为签证给搅黄了,他么台湾人香港人来去无阻.而后这段时间也没从base本身得到有太大收

BaseFx实习小记(三)

在Base实习接近一个月了,基本上工作什么的已经步入了正轨.工作上因为项目任务不重,所以也没有给我分配太多的镜头,主要是做角色的肥肉抖动和胡须抖动,难度都不大.到目前为止都一直还没有在项目上碰过气态的模拟之类的,所以基本还是要靠自己来研究. 其实Base的个人自由度是非常小的,可以说类似于工厂.不能使用自己的个人电脑,要连接外网就只有一个远程桌面,工作期间也是非常卡的所以基本上不会随便去用它.感觉公司的理念不是以人为本的,对待员工全部都是规章制度,虽然能做国外的一些项目老板也是个外国人,但是和其

实习小记-python中不可哈希对象设置为可哈希对象

在这篇之前,我又专门翻译过官方python3.3的可哈希对象文档,大家可以先参考一下: 实习小记-python中可哈希对象是个啥?what is hashable object in python? 预备知识: 在定义一个类时,如果我们需要改写该类的__eq__函数,特别要注意的是它将会变为不可哈希对象,也就是说如果你将它放到哈希集会报错误 >>> class A: ... def __init__(self, x): ... self.x = x ... def __eq__(self

实习小记-python 内置函数__eq__函数引发的探索

乱写__eq__会发生啥?请看代码.. >>> class A: ... def __eq__(self, other): # 不论发生什么,只要有==做比较,就返回True ... return True ... >>> a = A() >>> b = A() >>> a == b True >>> a != b # 这个地方为什么会返回False? False >>> a > b Trac

实习日志二

一:yaf连接数据库操作 二:利用yaf自己写后台开发接口 三:参考师兄的doT.js写前端的模版引擎 控制器中的代码如下: 跨域操作:由于在前端的代码中,我们需要调用另外一个服务器的资源,因此会受到js跨域的限制,在php中添加以下这句代码就可以进行跨域操作了. header('Access-Control-Allow-Origin:*');//跨域操作 前端的JS代码如下显示 在前端中返回的数据类型如下所示:

实习小记-论开源闭源

今天是我在公司实习的最后一天,老板给我做了一些评估,之前一直疑惑老板为什么如此坚持开源,今天便询问了他.他说了这么几点: 1. 闭源的项目是短命的,一旦没有人更新他,维护他那么他便寿终正寝了: 2. 不同于闭源,开源是极其长寿的,我们现在用到的很多元老级别的工具都是开源的,正因为开源所,以大家都会不断的对他进行完善进行维护,它的寿命也得以延长: 3. 对于客户来说,自己定制的一套软件,如果没有了原本定制商的支持和维护,那么这些软件将无法使用最终的结果将会是淘汰: 4. 而客户将自己定制的软件进行

实习生活(二)

这一周算是步入正轨了,新调的项目组组长人超好...而且对新人特别耐心. 因为做的是微软的项目,所用的自动化测试工具也是微软内部研发的,第一周大概就是部署测试环境,熟悉起run的流程,以及分析run. 还是感觉对我来说最大的挑战还是英文,每天早上的stand up metting 是我最头疼的事,前一天晚上写稿子,然后再背一背,下班前还要发daily report邮件给组长,哎,,心累 这一周过的还真挺魔性的,可能是刚进入一个新的环境还没适应过来,基本上晚上睡不着觉,我也是可以的. 不说了,写稿子

构建之法阶段小记二

本周因几门课结课,加上参加了普通话水平测试,总的来讲有些忙碌.忙里偷闲,把上周看了少量的第二章作了补全,第三章也简简单单开了个头. 第二章中,仅凭简单朴实的文字,说来重点也不过几句寥寥,却让人了解到了软件开发中非常重要的几个环节:测试及能效分析.简单来讲,测试又分为几个模块.其中,单元测试又涵盖几个要求:好的单元测试应该在最基本的功能/参数上验证程序的正确性.必须由最熟悉的人(即代码作者)来写.单元测试过后,机器状态应保持不变,且测试要快,应该产生可重复.一致的结果.另外,单元测试的运行/通过/

实习小记-python中可哈希对象是个啥?what is hashable object in python?

废话不多说直接祭上python3.3x的文档:(原文链接) object.__hash__(self) Called by built-in function hash() and for operations on members of hashed collections including set, frozenset, and dict. __hash__() should return an integer. The only required property is that obj