我想写个随机循环的表达式,打个比方,用arnold代理了一段30帧的序列动画,给frame写frame%30+1. 这样就可以按照30帧循环下去,但是复制出来的也是这样循环的,太过统一。有没有什么办法让它在运行时随机选取0-29的某一帧,走到29帧的时候结束从0开始循环。这样复制出来的代理模型每一个都是不同的动画。
if(frame == 0)
{
aiStandInShape.frameNumber = rand(0,30)+frame%30;
}else if(frame < 30 && aiStandInShape.frameNumber != 29){
aiStandInShape.frameNumber += 1;
}
else if(aiStandInShape.frameNumber == 29 && frame<30){
aiStandInShape.frameNumber = 0;
}
else
{
aiStandInShape.frameNumber = frame%30+1;
}
这是写出来的表达式,遇到的问题是在第0帧随机后循环到第29帧会暂停等待剩下的帧然后进行循环,也就是说如果一开始从第10帧运行,到了29帧后一共走了19帧,然后停止11帧攒满30帧后开始从头循环。没有办法直接让它到29的时候直接开始从头循环。
如何去修改这个表达式,或者maya有没有别的方法做到我想要的效果。
if(frame == 0)
{
aiStandInShape.frameNumber = rand(0,30)+frame%30;
}else if(frame < 30 && aiStandInShape.frameNumber != 29){
aiStandInShape.frameNumber += 1;
}
else if(aiStandInShape.frameNumber == 29 && frame<30){
aiStandInShape.frameNumber = 0;
}
else
{
aiStandInShape.frameNumber = frame%30+1;
}
这是写出来的表达式,遇到的问题是在第0帧随机后循环到第29帧会暂停等待剩下的帧然后进行循环,也就是说如果一开始从第10帧运行,到了29帧后一共走了19帧,然后停止11帧攒满30帧后开始从头循环。没有办法直接让它到29的时候直接开始从头循环。
如何去修改这个表达式,或者maya有没有别的方法做到我想要的效果。