« 悲しみのローカルシンメトリ弐。 | トップページ | Add to クラスタの憂鬱。 »

2011年2月24日 (木)

○。

マルですよマル
マルなプリミティブが欲しかったのです。


厚みがゼロのプリミティブ cylinder とでも言うか。
プリミティブ cylinder のフタの部分だけと言うか。
真ん中の穴が無いプリミティブ disk と言うか。
完全に平面の、ポリゴンでできた丸。
いっぱい使うじゃないですか。


今まではシリンダのフタの部分だけ取り出したりとか、めんどくさいことしてました。

これについて某所で悪態を付いたら、某さんがまた知恵を授けてくれたのです。



  シリンダの厚みゼロにして、底面のフタ無しにすりゃいいんでないの?



  Σ(゜д゜lll) Σ(゜д゜lll) Σ(゜д゜lll)


俺の頭はチタンで出来ているので、硬いのです。そういう柔軟な発想が出てこない。自分で 「厚みがゼロのシリンダとでも言うか」 なんて言っておきながら、ねえ。



やってみました。

・・・・惜しい。

厚みがゼロの場合は上面底面の頂点をウェルドというか結合してくれればいいのですが、XSI 様はそんなに親切ではありませんでした。 パッと見はちゃんと平面のマルになっているように見えるんだけど、頂点を調べてみると、上面底面の頂点がぴったり同ポジで重なって存在していました。 外周の全ての頂点がダブっているということです。 これでは使えません。

ふと思いついて FilterPoints オペレータをかましてみたら、あっさりと頂点は結合されました。

これがやりたかったんだよっ (*゚∀゚)=3



ここまで来ればこっちのもんです。あとは手順をスクリプト化するだけ。 けけけけけ。





ってことで書きたてホヤホヤのスクリプト。

//    デフォルト値をお好みで書き換え
ObjName = "maru1";
Radius = 1;
U = 12;
V = 1;
Base = 1;

//    平面シリンダ降臨 (頂点ダブって存在してるけどね)

var oCylinder = ActiveSceneRoot.AddGeometry( "Cylinder", "MeshSurface" );
oCylinder.height.value = 0;
oCylinder.closevmin.value = false;

//    シリンダにデフォルトの値をセット

oCylinder.Name = ObjName;
oCylinder.Radius.value = Radius;
oCylinder.subdivu.value = U;
oCylinder.subdivv.value = V;
oCylinder.subdivbase.value = Base;

//    FilterPoints で頂点結合

var oFilterPointsOp = ApplyTopoOp( "FilterPoints", oCylinder )(0);

//    PPG 表示して、選択状態にして、おしまい。
InspectObj( oCylinder );
Selection.Clear( );
Selection.SetAsText( oCylinder );


Maru

シリンダの状態を決めているのは、Geometry オペレータですね。プリミティブをゲットした時に自動で付いてくるオペレータです。 この中で厚みをゼロにし、底面をオフにしてます。 この時点では頂点がダブって存在する。

その後 FilterPointsByDistance オペレータで近接する頂点を結合しています。 シリンダの状態を変更しても、Geometry の計算の後に FilterPoints が必ず計算されるので、Geometry オペレータの中で厚みを持たせない限り平面のまま分割数などを変更できます。  ううむ、スヴァらしい。



いやあ、助かりました。
そのうちセルフインストール形式のプラグインにします。



これはこれとして、XSI に独自のプリミティブを作る方法はあるのかしら。
分割数や大きさなどがパラメトリックに決められる独自プリミティブということね。
どのように開発していいのか想像すらつかん。
たぶん俺には無理でしょう。
あの人とか、あの人とかが調べて書いてくれないかな。

そういえばティーポットのがあったな。あれを調べてみようかな。

.

|

« 悲しみのローカルシンメトリ弐。 | トップページ | Add to クラスタの憂鬱。 »

コメント

coneで、底面を抜けば、FilterPointsByDistance Opは必要ありませんよ~。

投稿: TERA | 2011年4月23日 (土) 05時59分

あらテラさんひさしぶり。

ほんとだ、cone でいいじゃん。
もうー 早く言ってくださいよ。出し惜しみしないで。

さっそく書き換えよう。

投稿: junki | 2011年4月23日 (土) 10時58分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/50954087

この記事へのトラックバック一覧です: ○。:

« 悲しみのローカルシンメトリ弐。 | トップページ | Add to クラスタの憂鬱。 »