这几天做了一个水波纹的效果,费了不少劲mel+c+rsl全用上了,加上renderman 15向后兼容的问题,折腾了好长时间。
我的想法是,用maya的粒子碰撞编辑器把碰撞位置和时间输出出去,然后用renderman插件把信息读进来用shader调用。因为rsl不太方便搞数组,所以效果直接在dso里实现了。今天先贴上输出脚本,呵呵
global proc myEventProc(string $particleName, int $particleId, string $objectName)
{
int $shijian=`currentTime -q`;
float $ushu[]=`particle -attribute parentU -id $particleId -q $particleName`;
float $vshu[]=`particle -attribute parentV -id $particleId -q $particleName`;
//print($shijian+"\n");
//print($ushu);
//print($vshu);
string $filename="../data/lin.txt";
int $fileId=`fopen $filename "a"`;
fprint $fileId ($shijian+" ");
fprint $fileId ($ushu[0]+" ");
fprint $fileId ($vshu[0]+"\r");
fclose $fileId;
}
注意到输出的数据包括帧和parentUV,没用goalUV和collisionUV,因为他们只适用于nurbs