曲线转骨骼 【MEL 小工具】

问题
一个朋友问:
我想先创建一条曲线,然后在创建几段骨骼并吸附到曲线上,并且可以自定义骨骼的数目,也就是按照曲线的弧长来平分骨骼之间的距离,想请问,用MEL怎么实现?
思路
我的想法是这样的:
根据NURBS曲线的U参数,获得曲线上的任意一点的坐标,就可以在此创建骨骼了。
不过一般NURBS曲线的U向参数并没有归一化,骨骼并不会根据弧长均匀分布。
所以如果想要骨骼均匀沿着曲线分布,最好把NURBS曲线Rebuild一下,就可以解决问题了。
具体代码如下,希望有点用。
核心命令有两个,pointOnCurve和joint
结果

////////////////////////////////////////////////////////////
//created by hmaya at May24 2008
//MEL Command: Curve2Joints(int $pSpan, string $CurveName)
//www.cg-discovery.com
//Usage:
//1在脚本编辑器中执行该代码
//2指定骨骼段数和NURBS曲线名称
//例如:输入Curve2Joints(6,"curve2")并运行
//注意:为了获得更好的效果,建议运行该MEL之前,把BURBS曲线Rebuild一下
//////////////////////////////////////////////////////////////////
proc Curve2Joints(int $pSpan, string $CurveName){
if($pSpan < 0){ error "Please reassign the number of joints, it should be positive!"; } float $u; if($pSpan <= 0) $u = 0; if($pSpan > 0)
$u = 1.0/$pSpan;
int $i;
for($i = 0; $i <= $pSpan; $i++){ float $parameter = $i*$u; float $pos[] = `pointOnCurve -top 1 -pr $parameter -p $CurveName`; joint -p $pos[0] $pos[1] $pos[2]; } }

作者: hmaya

developer!

看完不过瘾?点此向作者提问

《曲线转骨骼 【MEL 小工具】》有一个想法

发表评论

邮箱地址不会被公开。 必填项已用*标注