2014/08/13

Creating Houdini Project Sets for Mac OS

Side Effectsのチュートリアル内で見かけたHoudini Projectセットを一辺につくってしまうやつ。あれがなんだか自分も使いたかったのでネットを漁って見たのだけれども、見つからず…。
暇をしてたのと、やっぱりR&Dプロジェクト毎に統一したフォルダセットが欲しかったので、Apple Scriptで書いてみた。

使い方は単純で、単一アプリにしてるので起動したらすぐに入力ダイアログが出て来るようになってる。Finderのカスタムメニューに登録したりなんかして使用する感じ。

ダウンロードはこちらから。







2014/07/14

Python - HOMで行く! [効率化編]

久しぶりの投稿です。何を書こうかと考えてたら、そういえばPython for HoudiniであるHOM(Houdini Object Model)に関して何も残してなかったので、それをやろうと。

今回は連続作業の効率化編。





基本的にHoudiniに関して、ツール自体はHoudiniのデフォルト機能で完結してしまうけれども、作業効率的な面での繰り返し作業はPythonに任せた方が良かったり。


例えば、トラッキングしたFBXデータを持って来たりなんかした時、Trackerの位置データはSubnetworkのTransform情報として格納される。となると起こるのが…、Trackerが百数個とか成った時にこれに当たりを付けたいと思うといっこいっこNullをSubnetwork内に入っては作成しては上の階層に戻って、また別のSubnetwork内に入ったり…なんてことをする。

でもでも、Pythonを使えば…「選択したSubnetwork下全てにNullを配置する」なんてことがワンクリックで出来るようになったり。
(現在の所、手っ取り早かったのでこの方法とってるけれども、これ、今の所作成したNullを一括削除する方法はまだ未作成。)

で、そのコードなのだけれども、こういった短いもので出来てしまう。


sel_node = hou.selectedNodes()

if len(sel_node) >= 1:
  for n in sel_node:
    n.createNode("null")
else:
  hou.ui.displayMessage("Choose subnetworks that tracked data attached.", title="Error")


至って簡単なコードだけれども、これで百何とかTracker個毎にいちいち作成していく手間が省けてしまったりする。



ノード作成の効率化としてもう一つこんなものとかも。

HoudiniでSIMをレンダリングする時、特にレンダーファームに投げてファーム側でレンダリングする時はIFDファイルを作成しなければならないのだけれども、正直にやってしまうとそのIFDファイルにSIM情報も書いてしまって激重なファイル容量になってしまったり…。それを避ける為に使用するのが、Delayed Load Procedual VEX(Maya、3ds Maxとかで言う、Render Proxy的なもの)を作成する事。だけれども、これをまた作業毎にDelayed Loadとそれ用のオブジェクトコンテナ(OBJ Net)を作成するのが面倒だったり。
なので、それらをDelayed Loadで使用するため、事前に作成したBGEOキャッシュディレクトリを入力しつつ作成するというもの。



sel_cache = hou.ui.selectFile(title="Select BGEO cache")

if len(sel_cache) >= 1:
  crDlp = hou.node("/shop").createNode("vm_geo_file")
  crDlp.setParms({"file": sel_cache})
  crDlp.setColor(hou.Color((1,0.8,0.8)))
  dlp_path = crDlp.path()

  crGeo = hou.node("/obj").createNode("geo", node_name="geo_dlp1")
  crGeo.setParms({"shop_geometrypath": dlp_path})
  crGeo.setColor(hou.Color((1,0.8,0.8)))
  fileobj = crGeo.node("file1")
  fileobj.destroy()



P.S. 2014/07/30


コードをヒューマンエラー対策をふまえて少し変更。



[References]
Python Scripting with the Houdini Object Model

2012/12/26

Scattering inside of geometry

I was wondering why often is Iso Offset used for scattering.

So this post was noted for the notice.

Usually when we make up with Voronoi Fracture or something like Metaball SOP, we use Scatter SOP. In the case of using only Scatter SOP, it provides scattered points only along surface. So It would be useless for a little precise and controlled devision with Voronoi Fracture or something.




Therefore we use Iso Offset SOP when plug between a geometry and Scatter SOP.





P.S. 2013/10/26

There's another way to solve this system: to use Points from Volume.


It has a bit different way of approaching to making distance between points unlike Scatter SOP. This SOP uses Point Separation as FLIP Object DOP.





2012/12/20

Transfer colour attributes of textures to points

It's just a easy way though, I actually wondered at this: How can I transfer colour attributes from textures to Points.

Yesterday I was taught a solution for it on Twitter. So I will note this.





Just prepare this network first.


Then lay down Point SOP and connect under Points form Volume SOP.
Add colour attribute to it then type expression into red channel parameter box :
tex( "$HIP/images/legoman.jpg", $BBX, $BBY, R )

and also blue, green channel:

tex( "$HIP/images/legoman.jpg", $BBX, $BBY, B )
tex( "$HIP/images/legoman.jpg", $BBX, $BBY, G )

This means tex ( filename or url, u, v, colour type )



If you decrease Point Separation in Points from Volume SOP, you will get more detailed image like this.



P.S. 2013/01/25

We can also apply image colours to points by using Point Map SOP.


Set up Image Map parameter in Point Map, then it will be done.


[References]
tex expression function : http://www.sidefx.com/docs/houdini12.1/expressions/tex
The Visible Lego Man | Badass Digest : http://badassdigest.com/2011/11/16/the-visible-lego-man/