すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

煙草の煙

なんとなく作成。筋感のある煙は稀によくあるのでメモも兼ねて。

小さいスケールのものを作る場合は、リアルサイズではなく一度スケール10倍や100倍で作ったほうが作りやすい。

youtu.be

hip

cigaretteSmoke_v001_gd.hiplc - Google ドライブ

Houdini Indie 18.5.532で作成

OCIOはNuke12.2v6に付属する、ACES 1.1

使用しているHDRIとOCIOは入っていない。

f:id:godofsuama:20210418221250p:plain

Pyro Sim

Advect by Volumeで使用するvelをPyro Solverで作る。

エミッター

スフィアにScatterしたものをVolumeにしたもの。

大きめの範囲をvelがカバーできるようにエミッターも大きめに作る。

f:id:godofsuama:20210418221458p:plain

コリジョン

TubeとCapで鐘のような形状を作成する。

Sim時に、このコリジョンにあたった部分から形が崩れるので高さがかなり重要。

幅はなるべく広め。

f:id:godofsuama:20210418221700p:plain

Pyro Sim

velを保存する以外に必須の設定はない。Turbulenceをちょっと加えて乱れた感じを追加する。

コリジョンの影響でできる上部の半球状の煙溜まりがポイント。

f:id:godofsuama:20210418221933p:plain

POP Sim

エミッター

Pyroで使用した球状エミッターの、上下を削り、輪っかにする。

f:id:godofsuama:20210418222301p:plain

その後、スケールをかけて潰れた輪っかにする。この際にPyro Simのエミッターよりも小さくなるように全体にスケールもかける。

f:id:godofsuama:20210418222349p:plain

$F などをRotate Yにいれて回転させ、その状態でCopy Transformで複製する。

この際に90度を超えないように微妙な交差状態のほうが筋が見やすくなる。

f:id:godofsuama:20210418222441p:plain

POP Sim

単純なPOP Networkで、Lifeを程よい値に変更し、POP Advect by Volumeを使用して先ほど作成したPyro Simのvelを適応する。

f:id:godofsuama:20210418222715p:plain

POP Advect by VolumeのAdvection TypeがUpdate Forceだとコリジョン形状がバレてしまう。

それを避けるためにVelocity Updateに変更する。

f:id:godofsuama:20210418222855p:plain
Velocity Updateの場合
f:id:godofsuama:20210418222938p:plain
Update Forceの場合

ちなみに、Update Forceの状態でTreat as Windをオフにするとどんどん立ち上る煙草の煙になる。

滞留感が不要な場合はこちらもあり。

f:id:godofsuama:20210418223148p:plain
Update ForceでTreat as Windをオフ

Curve化

sourceptnumで各ポイントをコネクトしてライン上にし、一度NURBSにしたあとでResampleする。

f:id:godofsuama:20210418223347p:plain

Volume化

ageとlifeでdensityとpscaleを作成する。

f:id:godofsuama:20210418223516p:plain

Volume Rasterize AttributeでVolume化する。

f:id:godofsuama:20210418223557p:plain

Point数が足りない場合は、Velocity Blurで補完をかけてもいいが、その分筋感がぬるくなってしまうので注意。

最後に実際に使用するスケールや位置に戻す。

この際、Volume Mix等を使用して、1/スケールのぶんだけDensityをMultiplyすると見た目が維持される。

f:id:godofsuama:20210418223843p:plain

f:id:godofsuama:20210418223859p:plain

タバコ

f:id:godofsuama:20210418224040p:plain

形状

Lineをタバコの長さで作成し、Poly WireでTube状にする。

f:id:godofsuama:20210418224147p:plain

PolyWire前に、Point Wrangleでi@isinterior = neighbourcount(0, @ptnum) > 1;とし、

PolyWireのSmooth Pointを@isinteriorにすると蓋のされていないTubeになる。

f:id:godofsuama:20210418224242p:plain

色とアルファ

curveuから色を設定

f:id:godofsuama:20210418224339p:plain

curveuからAlphaを作成し、Alphaから火がついている部分の色を設定する。

f:id:godofsuama:20210418224512p:plain

f:id:godofsuama:20210418224934g:plain

灰部分

Peakで少し細くし、Polyfillで前後を塞ぎ、Subdivideで分割数を増やしたものにノイズをかけてそれっぽくする。

f:id:godofsuama:20210418225156p:plain

灰皿

形状

Circleを作成し、Group Rangeでくぼませる箇所を選択

f:id:godofsuama:20210418225442p:plain

f:id:godofsuama:20210418225458p:plain

作ったGroupを一度Edge GroupとしてPromoteし、Bevelをかける。

f:id:godofsuama:20210418225603p:plain

Group Transferを使用して最初のPoint Groupを再転送し、またEdge GroupとしてPromoteする。

f:id:godofsuama:20210418225658p:plain

上になるものは、Transformで高さ分だけY軸へ移動し、さらに先程PromoteしたGroupで-Yにちょっと戻すことでくぼみを作る。

下のものはSmoothをかけてPoint間をリラックスする。

f:id:godofsuama:20210418225802p:plain

Skinで面を貼り、Fuseで近接ポイントをマージ。

その後Group ExpressionでY軸が0のものをGroupにする。そのGroupもEdge GroupへPromoteする。

f:id:godofsuama:20210418225937p:plain

Edge Groupを指定してPoly Fillをすることで底面のみが塞がる。

f:id:godofsuama:20210418230034p:plain

Reverseで法線を反転し、Poly Extrudeで厚みをつけ、Poly Bevelで少しベベルをかけたら完成。

ベベル処理の有無でハイライトの出方がかなり変わるのでモデルを作る場合は必須。

f:id:godofsuama:20210418230130p:plain

レンダリング

今回はKarmaでレンダリングしている。Mantraよりかなりレンダリングが速いので早く実用段階になってほしい。

詳しくないのと大したことはしていない。

f:id:godofsuama:20210418231408p:plain

f:id:godofsuama:20210418230335p:plain

HDRI

HDRIはこちらを使用。

hdrihaven.com

ただし、自分の環境ではACES CGでレンダリングしているので、COPで一度カラースペースを変換している。

変換処理

f:id:godofsuama:20210418230548p:plain

f:id:godofsuama:20210418230631p:plain

f:id:godofsuama:20210418230647p:plain