Houdini回。
ポリゴンプリミティブの面を消して、エッジを残す簡単な方法。
面はいらんのじゃ、線だけほしいのじゃ、って時があったのです。
PolyWire(SOP)とか使いたくないし、かといってWrangleで書くのもなぁ、きっとノードで出来る、と思って調べたらPrimitive(SOP)を使うとそれっぽくなりました。。
忘れたころにPrimitive(SOP)の以外な有用性に気付かされます。
パラメータのFace/Hullタブにある「Close U」を”Open”に変更します。
これでポリゴンが開いて、面がなくなりエッジだけになります。
大抵はこれでイケる、ただし万能ではない!
他に簡単な方法があったら、ぜひ教えて下さい。
2017/02/16追記
コメント等でいろいろ教えてもらったので追記。
Primitive(SOP)
設定Unroll。エッジだけ残す目的ならOpenよりこっちがよか。
「Openはなくなっちゃうエッジがあるんだよなぁ、たしかに」、と思ってた。
うん、思ってた!
Ends(SOP)
PrimitiveのFace/Hullタブの機能と同じ。
でも、Ends(SOP)は使ったことなかったなぁ。
Carve
プリミティブからいろいろカットするヤツ。
正直、「これでエッジだけ残るんだ」って思いました。
Convert Line(SOP)
ジオメトリを線にコンバートする。
なまえ、そのまんまじゃ!
Convert Line(SOP)の中身とwrangle
int n[] = neighbours(1, @ptnum); foreach (int pt; n) { if (pt > @ptnum) { int pr = addprim(geoself(), 'polyline'); addvertex(geoself(), pr, @ptnum); addvertex(geoself(), pr, pt); } }
日本語に訳すと、
「隣接ポイント探して、それらのポイントと自身との間にpolylineを作る。また、ポイント番号が自分より大きい場合だけに限ることでエッジが重複して作られないようにする」
かな。
自分でwrangle書くの面倒だと思ったのは、エッジの重複にどう対応したらと困りそうだったからなのだけれど、こんな簡単な条件でよかったんだ!、
もうして見ると、いっぱい手法があるものですね。
自分で探してたときは、全然みつからぬっ!、と思ってたのに。
ここで少しだけ注意したいのは、これらの方法で作られるエッジは見た目はほとんど同じだが、データとして明確に異なるということ。
たとえば、Primitive(SOP)のOpenでラインにすると一筆書きっぽい線にしてくれるが、ConvertLine(SOP)はバラバラに分割されたラインである、とかそういうのです。用途に合わせて使い分けよう。
意外と奥が深い。
また次回!
OpenだとなくなるEdgeがあるんで、ばらばらになっちゃいますが基本Unrollにしてます。
Unroll!
その設定、見えてなかった。マニュアルみたら確かに求めてた機能でした。Openで満足してました。
Openだとたしかにエッジがなくなっちゃうから、記事に「万能ではない!」って書いてたんですよ。
そっか、Unrollかぁ。
勉強になりましたm(_ _)m
結局中身は Wrangle ですが Convert Line でもいけますし、
Primitive と同じですが Ends や Carve でもいけますね!
そんなにいっぱい方法があったなんて・・・。
End SOPとか使ったことなかったから初めて知りました。
てかCarveでもイケるってのはちょっとビックリ!
先入観ですかね、そもそもラインっぽいの以外にCarveを使おうとしたことなかったです。
勉強になりました、ありがとうございますm(_ _)m
convertlineSOPはどうですか?中身Wrangleですけど。
Convert Line SOP、なんとドンピシャなものが!
中身のwrangleも思ったよりずっとシンプルでしたし。
勉強になりますm(_ _)m