登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

豆芽兵的生存探索

因,记录。留下历史,看到未来...

 
 
 
 
 

日志

 
 

教程相关问题总结及思想碰撞!  

2011-12-12 22:57:25|  分类: RealFlow探索 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    这篇日志会一直更新网友向我提问的的问题,或一些建议。这需要大家的热情参与,因为很多问题,本人不能回答好,需要大家的交流碰撞。这样做好处是,大家思想深度更深了,所有参与的人都会获得益处。


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教程了。
  评论这张
 
阅读(2721)| 评论(4)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018