LoginSignup
0
0

Mayaで切頂二十面体を作るスクリプト

Posted at

はじめに

Mayaでは正二十面体がプリミティブで用意されている。これをベースに、切頂二十面体をつくるMELスクリプトを書いた。

MELスクリプト

頂点を全選択し、ベベルをすればいいのだが、UIからでは、入力できる有効桁数の関係で、1/3がちゃんと反映されたかわからず、精度が気になるので、スクリプトで小数点以下を多めに入力する。

code.mel
polyPlatonic;
select -r pPlatonic1.vtx[0:11] ;
polyChamferVtx 1 0.3333333333333333333333 0;

一応、精度を確認するために、てきとうな六角形の辺の長さを計算してみる。
MELの画面では、頂点座標が結構な12桁表示されるが、コンポーネントエディタでは、小数点以下3桁までしか表示してくれない。心配なので、オブジェクトを大きくスケールして、確認する。カメラもそれに合わせて、クリップ範囲を調整する。その状態で、適当な面の6辺の長さを計算する。

code.mel
{
polyPlatonic;
scale -r 1000000 1000000 1000000;
select -r persp ;
setAttr "perspShape.farClipPlane" 10000000;
setAttr "perspShape.nearClipPlane" 100;

select -r pPlatonic1.vtx[0:11] ;
polyChamferVtx 1 0.3333333333333333333333 0;

$v1 = `pointPosition pPlatonic1.vtx[40]`;
$v2 = `pointPosition pPlatonic1.vtx[41]`;
$v3 = `pointPosition pPlatonic1.vtx[53]`;
$v4 = `pointPosition pPlatonic1.vtx[52]`;
$v5 = `pointPosition pPlatonic1.vtx[51]`;
$v6 = `pointPosition pPlatonic1.vtx[50]`;

vector $v = <<$v1[0] - $v6[0], $v1[1] - $v6[1], $v1[2] - $v6[2]>>;
float $d = `mag $v`;
print($d);

}

辺の長さの違いを比較
40to41 : 350487.375683
41to53 : 350487.440757
53to52 : 350487.387556
52to51 : 350487.45018
51to50 : 350487.353366
50to40 : 350487.447236
6桁はあってる。計算の何処かの過程で、floatになってるのかな。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0