global proc string createCurveSphere( // カーブ名を返す
float $subdiv, // 粗さ:4,8,12,24,36(,360)
float $radius ) // 球の半径
{
float $div = 360.0/$subdiv;
vector $pos[];
float $x,$y;
// xy
for( $i=0; $i<=$subdiv; $i++ )
{
$x = cosd( $i * $div );
$y = sind( $i * $div );
$pos[size($pos)] = << $x, $y, 0.0 >> * $radius;
// yz
if( 270 == ($i * $div) )
{
for( $j=0; $j<=$subdiv; $j++ )
{
$x = cosd( $j * $div + 270 );
$y = sind( $j * $div + 270 );
$pos[size($pos)] = << 0.0, $y, $x >> * $radius;
}
}
}
// xz
for( $i=1; $i<=$subdiv; $i++ )
{
$x = cosd( $i * $div );
$y = sind( $i * $div );
$pos[size($pos)] = << $x, 0.0, $y >> * $radius;
}
return createCurveObject( $pos );
}
createCurveSphere( 24,5 );で、ikHandleで使うような球体のカーブオブジェクト。
createCurveSphere( 4,5 );で、poleVectorで使うような八面体のカーブオブジェクトになります。
応用で、
{
string $crv=createCurveSphere( 4,5 );
select -r ($crv+".ep[7]") ($crv+".ep[12] ");
doDelete;
}
とすると、ピラミッド型になります。
0 件のコメント:
コメントを投稿