myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

SI | Find interior points with Valence 2 (script)

今日は他のツールを公開しようと思ったけど、ある機能が欲しくなったのでプラグイン編集が終わったらアップします。

その機能はこれです。Valence 2 のポイントを探す。

Valence Twoってまだ100%理解しきれていない様な気がするけど、どうやらポリゴンの角度を除き、エッジ2本しかないポイントのことです。Softimageではあんまり聞かない用語ですね。

このポイントを見つけるには普通に多角形を探せばいいけど、もっと早く探したい時の為のツールです。
同じ所にポイントが2つ重なってる時にも役に立つと思います。

こういうスクリプトはもう既にあります。eX-SI blog でICEを利用して、Valence Twoポイントを探すスクリプトが載っていました。

しかし自分はまだ2011を使っていて、たまにクライアントの都合でもっと古いXSIを使うことになるので、ICEは使えません。このスクリプトも2012じゃないと動かないんです。

なので、スクリプトバージョンを作ってみました。

ポリゴンの角度を除き、エッジ2本しかないポイントのことだったら簡単じゃない?

DOWNLOAD

まずはオブジェクトとポイントを取得します。
var oObj = selection(0);
var oPoints = oObj.ActivePrimitive.Geometry.Points;

次は仮のポイントコレクションを作ります。これはValence2ポイントを入れる箱になります。
var oVal2 = oObj.ActivePrimitive.Geometry.CreateSubComponent(siVertexCluster)

準備完了、では全ポイントをループしちゃいましょう:
for ( var i=0, a = oPoints.Count; i < a; i++ ) {

ポイントの隣に2ポイントがあったら次の条件に
	if (oPoints(i).NeighborVertices().Count == 2){

内側のポイントだけがほしいので外側のほうを無視する方法を考えました。内側と外側の違いはなんでしょうと。
内側のポイントと違って、外側のポイントの隣にポリゴン1枚だしかないということに気づいたので、それでフィルターしてみます。
では、隣に2枚以上がある場合のみに入れます。
		if (oPoints(i).NeighborPolygons().Count > 1){
oVal2.Addelement(oPoints(i).index)

最後に Val2 を選択。 

以上

これであのICEスクリプトと同じことをするはずですが、Softimage 2012は持っていないのでテストが出来ません。

Comments

Post a comment


Only the blog author may view the comment.

Trackbacks

Trackbacks URL
http://myara.blog.fc2.com/tb.php/87-2766079f
Use trackback on this entry.