myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

SI | ハードエッジを選択

今回のプロジェクトは結構ローポリで解像度が低い為、UVで上手く節約しながらなるべく真っ直ぐなUVにしなきゃ綺麗に出来ません。

なので、UVの展開を考えながらモデリングしています。

出来た後の達成感が気持ち良いです。
こんな低い解像度でこんなに綺麗に見えるよ!と誰かに自慢したくなるぐらい気持ちいけど、
かなり面倒くさい作業ですよ、これ。

そして、イメージをつかみやすくするために、UVの切れ目の代わりにハードエッジを入れています。

もちろんこの自作ツールを使っています^0^

よし、モデリングが出来ました!

このハードエッジをUVの切れ目にして、とりあえずUnfold。

そして、切り目のエッジを選択して・・・


あっ・・・


しまった!


ハードエッジってどうやって選択するんだよ?!!


出来る?出来ない?・・・出来ないよね・・・orz



良いアイデアだと思っていたのに。


しょうがない。書いてみるか。

ちゃちゃっと書いて・・・でけたー!

スクリプトはちょっとぐらい出来るようになって良かった~。



と昨日の作業の流れでした。

そして、出来上がったスクリプトを複数のオブジェクトにも対応するように編集して、公開します:



mSelect Hard Edges

DOWNLOAD

使い方:
スクリプトです。
このコードをスクリプトエディターにコピペーして実行してください。

または、ファイルをダウンロードして、ツールバーとかにドラッグ&ドロップでボタンを作って、実行。




エッジをループして、ハードエッジだったら選択。
全然難しいことはやっていないけど、一応今日のコードのポイント:




① 選択されたオブジェクトからPolymesh だけを取得したい時に、最近この方法を使っています
var oSel = SIFilter(selection, siPolyMeshFilter);



② 空っぽのアレイにサブコンポネントを入れて、最後にSelectObjで選択する

var oObj = selection(0), totalarray = []
var HardEdges = oObj.ActivePrimitive.Geometry.CreateSubComponent(siEdgeCluster)
var edgs = oObj.activeprimitive.geometry.edges
for ( var i=0, a = edgs.Count; i < a; i++ ) {
if(edgs(i).ishard) HardEdges.Addelement(edgs(i).index)
}
if (HardEdges.ComponentCollection.Count >0) totalarray.push(HardEdges)
if (totalarray.length !=0) SelectObj(totalarray)

アレイにすることによって複数のオブジェクトも対応します。
これを使ってmCleanerをちょっといじっています。そのうちに更新します。



③ コンパクトな書き方。
例:
var a=1, b=2;
if (a==0) b=3;
else b=2 ; logmessage (b)

みたいな。別にコンパクトに書く必要がないけど、打つ文字の数を減らすとなんか得した気分ですね。
やりすぎると読みにくくなって逆効果ですけど。

ま、参考まで。


コード↓:


var oSel = SIFilter(selection, siPolyMeshFilter);
if (oSel != null){
var totalarray = []
for ( var j=0, b=oSel.Count; j < b ; j++ ) {
var oObj = oSel(j)1, edgs = oObj.activeprimitive.geometry.edges
var HardEdges = oObj.ActivePrimitive.Geometry.CreateSubComponent(siEdgeCluster)
for ( var i=0, a = edgs.Count; i < a; i++ ) {
if(edgs(i).ishard) HardEdges.Addelement(edgs(i).index)
}
if (HardEdges.ComponentCollection.Count >0) totalarray.push(HardEdges)
}
if (totalarray.length !=0) SelectObj(totalarray)
else logmessage ("No Hard Edges Found")
}
else{
logmessage ("You need to select at least 1 PolygonMesh Object", siError)
}

Comments

ハードエッジ選択

はじめまして
選択フィルタのクリースエッジとかではダメな感じでしょうか?
オブジェクト選択してクリースエッジをCTRL+Aで選択・・・的な
何か根本的に違ってたらすみません^^;

  • 2012/06/22(金) 05:04:02 |
  • URL |
  • Azarashi #-
  • [ Edit ]

Re: ハードエッジ選択

> はじめまして
> 選択フィルタのクリースエッジとかではダメな感じでしょうか?
> オブジェクト選択してクリースエッジをCTRL+Aで選択・・・的な
> 何か根本的に違ってたらすみません^^;

初めまして。
マジですか~~~!!やっぱりあったんですね!ありがとうございます!
エッジ選択フィルターはめったに使わないからここを探るのは思いつかなかった。(恥
や~恥ずかしい (/-\*)

でもこんな馬鹿なことをやってブログに載せたおかげでAzarashiさんがコメントを残してくれたから全部無駄なことでもなかったようにも思えます。うん、ポジティブに考えないと凹みます(o^ー^o)

ありがとうございます。

  • 2012/06/22(金) 10:45:35 |
  • URL |
  • myara #-
  • [ Edit ]

こちらこそ、スクリプトはからっきしなので
いつも勉強させていただいています!
自分も10年近く使ってますが、最近存在を知った機能とかあったりします^^;

  • 2012/06/23(土) 02:54:21 |
  • URL |
  • Azarashi #-
  • [ Edit ]

Post a comment


Only the blog author may view the comment.

Trackbacks

Trackbacks URL
http://myara.blog.fc2.com/tb.php/138-7a631182
Use trackback on this entry.

まとめtyaiました【SI | ハードエッジを選択】

今回のプロジェクトは結構ローポリで解像度が低い為、UVで上手く節約しながらなるべく真っ直ぐなUVにしなきゃ綺麗に出来ません。なので、UVの展開を考えながらモデリングしています。...

  • 2012/06/23(土) 05:59:19 |
  • まとめwoネタ速neo