这篇日志会一直更新网友向我提问的的问题,或一些建议。这需要大家的热情参与,因为很多问题,本人不能回答好,需要大家的交流碰撞。这样做好处是,大家思想深度更深了,所有参与的人都会获得益处。Q1:破裂的泡泡教程,会现这种报错怎么解决?问题来源:《破裂的泡泡》教程(点击打开)问题描述:根据破裂的泡泡教程,模拟时会出现如下报错。
>[12/?????/2011 21:26:06] - WARNING: Script error: Global variable "oldRadius" not defined. >[12/?????/2011 21:26:06] - WARNING: Script error: Global variable "idList" not defined.
>[12/?????/2011 21:26:06] - WARNING: Script error: "argument of type 'NoneType' is not iterable" at line number 11
我的回答:
我先就针对脚本报错的这三句话简单说明下。
如果大家知道这是什么意思,那么就忽略不要看下面跟着的的几句说明
1.全局变量“oldRadius”没有定义
2.全局变量“idList“not 没有定义
3.自变量类型没有定义 在11行小结:
正常看来,全局变量没有定义的话,那就检查脚本中的变量,如果要在全局应用,那就看看是不是没有定义成全局的。改过来就正常了;自变量类型没有定义,它直接告诉你错误行号了,就直接找到11行,看看自变量是不是之前没有定义好。
上面情况是针对正常情况的排错,恰好我们这个泡泡案例有点特殊。这也是我为什么一开始就恭喜你。因为你所有写的代码是正常的,作者就是要写出那个错误来。不明白,下面详细说
我先来说一下解决的办法,真的很简单。
解决办法:报错时暂停下,Reset。然后再次模拟。//怎么样,一切正常吧,泡泡是不是慢慢破裂了。
但我们知道了解决办法还不行,得知道产生的原因啊。
先说明一下,
这个错误,只在第一次模拟时才会产生。可能很多人,在做这个案例时第一次模拟时也遇到到了,但没有重视,因为相信大部分人,在第一次出错时,肯定会再试着模拟一下,恰好,它就正常了。你很细心,主动提出来了。现在来分析一下案例中的脚本,满足一下你的好奇心,呵呵。
在 framePrescripts 脚本代码中第一句话就是:
oldRadius = scene.getGlobalVariableValue("oldRadius")
我们从命名就能看到,“oldRadius” 老的半径 ,也就是旧的,之前的半径。
现在明白了吧,点破了就是这么简单。第一次模拟时,oldRadius没法取到老的半径值,因为这是第一次模拟,之前没有值存在啊,所以RF就会报错,相应的,idlist也没有值取,最终就引发了你看到的错误。
然后再一次模拟时,它就正常了,原因就是RF有了一个oldRadius值。怎么样,明白了吧。
这个是原作者代码不完善的地方,你可以想个办法,解决这点,然后发到我博客上,跟大家交流。相信你肯定可以的!
罗嗦一下:我想把你这个问题,还有我的回复,整理到博客上,专门用一篇,叫问题总结什么的。如果你不同意,请来信告诉我删除。
最 后再说明一下,我的回复虽然有让你柳暗花明的感觉,其实还没触摸到代码根源上,原因很简单,本人知识有限,请原谅。我会随时思考这个问题的,因为我也要一 个柳暗花明的感觉。你可以从你角度再分析思考下告诉我,再宣传一下我的博客,也请你帮助宣传下,毕竟有人的地方才叫江湖。
我的博客地址:
http://qqww2334.blog.163.com/再道一个小谦:为什么我不立即回复,我本来想五天后再回的。我知道很多人都是对轻易得来东西不珍惜,我想让你多思考几天,这样你的盼望值高一点,我的回复价值会更大,因为你会更认真看。但我知道你应该是个很用心的,不需要这些心理考量。
GOOD LUCK!
如果真遇到全局变量的问题,那还真不容易解决,下面一些参考拓展一下
http://developer.51cto.com/art/201002/182067.htm Python 全局变量
http://www.cnblogs.com/phoebus0501/archive/2011/01/18/1938728.html 与上面网站内容类似,但重点是推荐这个网站给你
-----------------------------------------分割线-------------------------------------------------------------------------------------------------------------------
Q2:请问这种材质如何赋予? 问题来源:层叠的糖浆 问题描述:这是给我邮件人的描述说:请问这种材质如何赋予?两面不一样的感觉?我用的是MAYA,当然说MAX也行。就是不知道这种UV怎么匹配上
我的回答:
1.先顺着你的思想我来回答下。你想要的是两面不一样的感觉。既然你熟悉maya,那么在我就在maya中简单说明一下双面材质(或双面纹理)的赋予。如果有看官知道,就不用看这点了。
双面纹理&双面材质:首先得清楚这是两种不同的概念。
双面纹理,是几体体内外是同一种质地(反光、高光、透明)但有不同的纹理。例如一块布的正反面,上面糖浆也可以这么认为。
双面材质,是几何体内外两个表面根本就是两种质地,比如橙子皮,外面是坑洼的橘黄色,里面是脉络的白色。
双面纹理制作:用到工具 condition 和samplerInfo 工具。根据不同的条件应用不同的纹理就可以了。
双面材质制作:用到上面两个节点工具。同样也是根据条件,赋予相应的材质。与上面唯一不同就是把纹理换成不同材质球。
具体操作,会根据大家的响应程度,日后单独用一篇日志。(如果大家想早点详细知道,参考书籍《maya节点技术教程》百度文库可下载到)
2.我们回到这张图片的真正需要上来,这个材质 的制作方面应该用的不是双面材质,纹理,也没有会去给他分UV。要知道这是流体,不是一个固定的几何体,现在Maya的UV方法根本没法实现这样的贴图。就算你耐心好,也只能是一帧帧Key,UV的帧,这样会麻烦死人的。很是抱歉,本人知识限制,不能分享权威的回答,我在这只提出我的一些思路。
方法一:用两套粒子混合成这样的形态,不同的粒子生成的Mesh就是单独的两个几何体mesh。导入三维时,你就可以分别赋予材质球调整它们材质了。(比如上面的黑白巧克力,)
方法二:还没想好,
方法三:交给其它网友了,
--------------------------------------------------------
上面说的暂时不要看,我有新的进展,下周会出完整的,我这周实验的过程和结果 ------------------------------------------
我提问的网友。他说的没错,我回复的也没错。
刚才又回头看你之前发邮件,发现一个大大的误会。
你的问题用Ramp是的确非常容易做到的(左图)。事情坏在,我上次收到你邮件后,我参考的是RF2012的demo(右图),你的应该是早几年的。 我一直认为你想知道的是右图,粉白那个流体的材质。 这个动态是,它会不停旋转,产生这种两面完全不同材质的效果。这种效果,材质真的是很有挑战的。这也是为什么它能入选参加今年的siggraph 展示。
不去仔细的分析它,真的会很容易忽视,认为它会非常简单,用几个ramp就能解决了。
不过也幸好看错了参考视频,不然我肯定没有这几天的巨大收获。
1.先说你那个材质的制作。 只要一套mesh就可以了,后期中默认ramp,U方向,就能做这种条状的黑白相间的效果。非常简单。
2.我主要想说下,右图那个。效果,真的非常有挑战。
仔细观察,会发现,粉色的那个只是一套流体做的mesh。为什么我要单独提出说这是一套流体。是为了区别两套流体,听着好像是废话。
这个粉色的材质难在哪??1.一套流体才能生成这种动态(有极小几乎没有的可能,用多套做)
2.流体不停旋转,正反面朝向不规则
3.只能用生出来的mesh,后面加材质。对UV的确定是一个很大的麻烦。没有一个能把前后区分出来的方法
估计很多新手一看,啊,这用双面材质不结简单吗?是的双面,但生成的mesh不是单面,是一个完整的几何体。并且每帧都在改变。
realflow 还有一个属性贴图的功能。但我实验了两天,看了很多资料,发现,只能在RF看属性,不能应用到后面环节(但没有用Maxwell进行测试,估计它是一个很可能的方法)
realflow本能提供了一个melt材质方法来区分不现发射器。我本来设想用两套很近的流体生成一套。一个做为正面,一个作为反面。
可太近了,有融合,远点时,就看出是明显两套流体。
在maya中可以操作法线,然后用Sample Info 结点能用双面材质思想做。但悲剧的是,同样要一帧进行操作,特别麻烦。
转成snapShort模型,但这增加了更多工作量
如果,用光照,或摄像机信息。标志出前后的ID,估计也能解决。但它不停选择,不是很方便的办法。
上图是,用两个发射器,然后用MR,melt材质做的效果(要用STmesh,不然氏区分不出颜色,这个问题也纠结了我好久),之前认为这种方法,是最可能成功的。真如看到的,有破的地方。
4.现在我唯一能完美做出这种效果的方法,就是手动的一帧帧刷UV。
现在期待有一个方便的,能做出正反面ID,的方法。着手点肯定在mesh结点。RealFlow,输出属性贴图可能是唯一我现能看到一丝希望的入口。
上面乱的很,太晚了,周末整理吧。因为这个问题也导致了Nuke教程制作的推迟,只能出之前做好的RF教程了。
评论