Houdini備忘録: UVLayoutを使った敷き詰めとHDA化

はじめに

Houdiniの学習にあたっての備忘録になります。
Houdini 18.0.391を使用してます。
今回は、UVLayoutを使った敷き詰めをやってみました。
その際につまった所、勘違いしていた所などを書いていきます。

f:id:yuyasaltcanyon:20200306005510p:plain:w600

もくじ:

  1. 今回作ったもの

  2. つまった所

  3. 宿題

1. 今回作ったもの

Curveを軸にUVlayoutによる敷き詰めをHDA化し、UE4に持っていきました。



作った時に参考にしたサイト/動画です。

qiita.com
youtu.be

今回作ったHDAの中身

ノードカラーを緑にしているものはUE4上でパラメーターを変更できるようにしています。

f:id:yuyasaltcanyon:20200306011330p:plain:w600

各種Subnetの中身

  • DissolveFlatEdge
    ノードの内容は、SideFX LabsのLabsDissolveFlatEdgesノードと同一ですが、
    思った結果にならなかったので、to_dissolveノードのパラメーターのみ変更しています。
    f:id:yuyasaltcanyon:20200306011818p:plain:w300

  • MakeMeshForPlacement
    UVLayout時に使用するGeometryの簡略化を行うためのSubnetです。
    f:id:yuyasaltcanyon:20200306011643p:plain:w300

HDAに公開したパラメーター

それぞれの詳細は、以下のドキュメントをご覧ください。

https://www.sidefx.com/docs/unreal/_inputs.html

パラメーター

f:id:yuyasaltcanyon:20200307140036p:plain:w400

  • GenerateNum
    配置するGeometryの生成数を決める値です。
    pointgenerate1ノードのNumber Of Pointsの値と紐付いています。

  • PlaceSpaceWidth
    敷き詰めを行う際の横幅を指定しています。
    sweep1ノードのWidthと紐付いています。

Editable Nodes

  • Input_EditableCurve
    Curveベースの敷き詰めを行う際の
    Curveを操作できるようにするため、用意しています。

Input

  • TargetMesh
    配置するGeometryデータを指定するためのインプットです。
    f:id:yuyasaltcanyon:20200307135544p:plain:w300

  • PlaceTargetGround
    UVLayout後にY軸の値を決めるためのRayを飛ばす対象を指定するインプットです。
    f:id:yuyasaltcanyon:20200307135658p:plain:w300


    2. つまった所

    今回は、特につまったりはしなかったです。
    先人の知恵様様です!


3. 宿題

  • HDA化してUE4で使用すると重いように感じる そもそもとして、このベイクのスピード感が普通なのかどうかが気になる所ですが...
    現在、だとこのHDAのCurveを編集するとクックに5秒は待たされます。

  • UE4上から入力されるInputの複数対応 UE4上から、HDAにInputとして渡せるパラメーターは、アセットの場合は配列で渡せるようです。
    ということは、HDA内で1つのInput内の複数アセットを処理できれば、敷き詰めを複数のアセットを使ってできるのでは?
    f:id:yuyasaltcanyon:20200306013117p:plain:w400

さいごに

今回、HoudiniとUE4の連帯周りについて触ってみました。
Houdiniを触り始めた目的が、UE4との連帯なので、少しづつ開拓して行ければと思います。