🧊3DCG: Houdini
https://gyazo.com/e9df83a27a898c7d8c5c56dc153d4653
初心者向けノードサンプル集
ありがたすぎる
とりあえずこれを見れば基本的な変形がなんとなくわかる
プロシージャルとは
入力が切り替えられたときに破綻せず、正しい出力を得られる状態
非破壊編集
Houdiniを使えばかならずそうなるというわけではなく、実現には作業者の意識が必要
各UI
3Dビュー
https://gyazo.com/448c0ba21844808ba3534e3a82370476
ホットキー
H
ホームポジション
Z
カーソル直下のオブジェクトをセンターに
Space長押し
カメラ選択時以外に一時的にカメラ操作にする
D
ディスプレイオプション
xy軸を消したり背景を暗くしたりできる
W
ワイヤーフレームオンオフ
S
選択モード切り替え
うまく切り替わらなくなったときはマウスで別のツールを選択してみること
Tab
3Dビュー上でノード追加
押出とかはこれを使う
呼び出し後、パラメータエディタ上で詳細の編集が可能
Qキー
直前のノード追加の繰り返し
SPACE + 1~
パースペクティブ/上/左右へ視点変更
X 押し続け
スナップの設定
パラメータエディタ
https://gyazo.com/6f02f7449e920ef1340bbd8b081e9473
数字が並ぶところ
ネットワークエディタ
https://gyazo.com/e889d832dc5e48b836225a48206f4154
ノードが並ぶところ
Tabで新規オブジェクト追加
ノード内の編集はEnter or ダブルクリック
基本的に上側から下側に流れる
左側から右側に流れるケースもある
ノードの青いフラグ(ディスプレイフラグ)まで計算が進められる
ノードの黄色いフラグ(バイパスフラグ)はその計算を無視する
ノードのピンク色のフラグ(テンプレートフラグ)はそのノードまでの計算結果をオニオンスキン表示する
mergeノードで情報がまとまる
ホットキー
L
ノードを縦整列
選択状態+Shift+L
選択したノードを縦整列
選択状態+A+右にドラッグ
選択したノードを横並びに整列
選択状態+A+下にドラッグ
選択したノードを縦並びに整列
R+選択
ディスプレイフラグを移動
Q+選択
バイパスフラグを移動
選択状態+P
パラメータエディタ起動 / 終了
C
カラーパレット表示
整頓用にノードに色をつける機能
選択状態+Shift+O
ネットワークドックス作成
整頓用にノードをまとめる機能
Blenderでいうフレーム
Shift+P
Stickey(ふせん)追加
選択状態+Shift+C
サブネット化
Blenderでいうグループ化
U
上の階層に戻る(Up)
ノード生成確定時 Shift+Enter
Display Flagがオンの状態でノード作成
ノード上でホイールクリック
情報表示
https://gyazo.com/f678856ca84ed83653c955478d11ddfc
ずっと情報を出しておきたいときはiボタンを押すとフロートで表示しっぱなしになる
https://gyazo.com/c401ccb6c4ebbda08fda9a8fbfdcb21b
ノードを掴んで振り回すと枝から切り離すことができる
VOPノード内でノードを選んで右クリ>Create Input Parametors
パラメータを外部に出すことができる
https://gyazo.com/565bf72e15aafd670ada93635a45422a
https://gyazo.com/eca193da8df8dcae455d5e01d87d3c22
https://gyazo.com/6fa1e4b797148633e7a4f3704721fe73
出てきた!
ジオメトリスプレッドシート
https://gyazo.com/67d6a11caab015b12a16d9ee70815efc
エクセルみたいなやつ
各要素とAttributeが並ぶ
データ型
単位
同じ単位でのみ計算ができる
float: 小数
int: 整数
vector: 3つのfloat
座標{1.0, 2.0, -1.0}
色情報{1.0, 0.0, 0.0} = 0xff0000
ベクトル
3D空間上の方向を表す
string: 文字列
"" / ''
Attribute
HoudiniのNodeはAttributeを変更するために存在する
要素が持つ値(情報)のこと
(例)Transformノードのチュートリアル
グリッド作成
Geometry Spreadsheet
Point
Vertex
Primitive
面のこと+α
Detail
そのオブジェクトそのもの
パラメータエディタ>Primitive Type
PointsにするとPoint表示になる
これは単なる表示用ではなく、実際に使われるタイプを表す
PointsにするとGeometry SpreadsheetのPrimitiveの表示が消える
表示のみの変更は3Dビューの右側オプションから
頂点番号の表示とかもこっち
3Dビュー上で頂点を選択するとGeometry Spreadsheet上でもハイライトされる
各頂点の持っている値、PointsならPx Py PzがAttribute すべてのノードはAttributeを変更するためにあると言える
ノード
Geometry
オブジェクトの箱であり、様々な形状を作るためのもの
Blenderで言うオブジェクト(頂点を持たない空っぽ状態)
モデリングツール
Geometry内で使えるノードをSOPと呼ぶ
Surface Operator
編集ノード
Geometry内部ではGeometryに関連するノードのみが置けるようにになる
Blenderで言うObject / Editモードの違いのようなもの
いちいち空のGeometryを作らずに、直接Grid等を作ることもできる
Geometry内にGridが置かれた状態のノードが直接作られるショートカット
SOP系ノード
SOPのノードは~SOPという呼び名をすることがある
transform
位置情報のAttributeを変更する
接続されたPointに自由変形を適用する
Group TypeをPoints>GroupをPoint番号に設定すると任意のPointのみに適用できる
color
色情報のAttributeを変更する
接続されたPoint / Vertex / Primitive / Detailに色情報を追加 / 変更をする
Classタブで変更可能
色情報を持たない場合は自動で追加される
Group TypeをPoints>GroupをPoint番号に設定すると任意のPointのみに適用できる
mountain
Pointの位置情報のAttributeを山のように変更する
Blenderで言うディスプレイスメントマップ適用に近い
blast
指定したPointの表示を消す
頂点を手動選択して効果を適用させるのは非推奨(破壊的編集)
大本の形状を変更したときにPointの増減により形状が破綻してしまう
自動生成されたグループ指定で消すのが良い
選択以外の部分のみを消すこともできる
attribute transfer
近い位置のポイントのattributeを転写するノード
左転写されるジオメトリ 右転写するジオメトリ
色情報などを転写してマスクを作る
Colの場合
https://gyazo.com/b30db62e3c097c4264f6e9aee7a5ae27
Conditionsタブで微調整
https://gyazo.com/fc4d270c3d0aed0707e729af769d4bfb
※ただし転写は頂点に基づくのである程度メッシュが細かくないと正しく転写できない(この場合は頂点カラー)
clip
https://gyazo.com/d873b8d88ae6ce109411b1d2343c3d32
ある地点Originから特定方向Directionに存在するPointを消し、エッジに新規Pointを追加する
group
https://gyazo.com/332b75aeedc609e66dcf58cd3c124a6a
Pointsを選択する
Base Group > 矢印ボタンで手動指定もできるが非推奨(破壊的編集)
キャンセルするときはEnableチェックを切る
Include by Edges
Unshared Edge
シェアされてないエッジを選択
外周のエッジを選択する機能
よくつかう
Keep by Normals
指定した法線方向のみ選択
https://gyazo.com/9e04bcd41010c10116d2bfebe13e0b74
Direction 0, 1, 0 / SpreadAngle 56.4
copy stamp
配列複製を行う
BlenderでいうArray
attribute VOP
詳細編集を行う
https://gyazo.com/07fb5ed0d4bbecf712e20e0f8225ba44
Group
操作対象の選択
Run Over
操作対象のタイプの選択
内部はBlenderのノードに似ている
https://gyazo.com/4a661bb376e07d2b3a08fd5af298415c
例として位置に定数0,0,0.4を足し算している
左のノードはもとの数値を参照したいときに使う
ただの代入であれば使わなくてもいい
ほかのVOPシリーズ
point VOP / primitive VOP/vertex VOP
これらはattribute VOPのRun Over 違いで同じもの
ショートカット的機能
ray
https://gyazo.com/5752743803b373b816ac7c7d60ab9e1e
(なんかビーム貫通しとる)
(複数入力のノードはだいたい左側が変形させたい対象)
左入力したジオメトリから光線を飛ばして右入力したジオメトリにぶつかった地点にポイントを移動させる
左入力したジオメトリを右入力したものに吸い付けるものと考えてもよい
BlenderでいうShrinkwrap
Method
Project Rays
任意の方向に投影
NormalとかVectortoka
Minimum Distance
最短距離の地点を取る
copy to points
https://gyazo.com/357327585f73d27d71ff4e88e2c7a8b7
指定Pointsにジオメトリを複製する
複製したい物体を左に複製されるもとのポイントがある物体を右に
複製したものの色をそれぞれ変えるには指定Pointsの色を予め変えておく
上の例だとgridとcopytopoints1の間にcolorを差してランダムにする
https://gyazo.com/bbab125b3ddffc18b45e15245a893c13
複製後に色を変えようとすると頂点ごとの色が変わってしまい、まだら色のSphereが大量に発生する
https://gyazo.com/48ec28c4f43adec666f2d5f54b1a4ce4
なぜ?
copy to pointsのパラメータCopy Point Attributesがオンになっている
https://gyazo.com/130e93d75f47344a346cc120b7afde94
指定ポイントのAttributeを参照して対象ポイントに追加する機能
よくつかう
scatter
https://gyazo.com/86ca5d0ca5167c3e14c30e05fb1b5824
指定形状範囲に指定数のポイントをばらまく
density attrがある場合、そのattrのあるところにだけばらまくことができおる
https://gyazo.com/cb88720ac4092d1e9f1a456943b6737c
白黒マスクを作ってRGBのいずれかの値をdensityとして扱えばマスクのあるところにだけばらまく等の操作を行える
color
https://gyazo.com/7a278af988ef2a8ad582d8c0f34b26be
色をつける
Classでタイプ指定
Color Type
ベタ塗り
各タイプごとにランダムカラー
など
merge
https://gyazo.com/3459d71cbb079e53268c09c8f17f4481
複数のジオメトリを合体させる
複数ノードを選択状態でAltキーを押しながらいずれかのOutputを引き出すと素早く作成できる
curve
カーブ作成
Xキースナップで操作するとやりやすい
https://gyazo.com/b52a4b1b8da0be58529bdee75262026aこれONで3Dビューに線を引けるようになる
3Dビュー上でcurveを作成してしまうと上の階層に出現してしまうので注意
オプションで回避可能
https://gyazo.com/0eec45c3f128250e611bdeadf0f70586
revolve
https://gyazo.com/bb5947c65367243dab0f06b6ee63df98
Blenderでいうcast
Detailタブで分割数とかを設定できる
attribute wrangle
VEX言語を実行する
いわゆるエクスプレッション的なプログラム
@P += {0,2,0}; // ポイントに{0,2,0}ベクトルを加算
@P.y += 2; // ポイントの持つyに2を追加
@P.y = 3; // ポイントの持つyに3を代入
@Cd = {1,0,0}; // 色を赤くする(色attrがない場合は追加)
attribute vopのノードごちゃごちゃをプログラムで短く表現できる
attributeは新規作成ができる
@test = 5; //各要素にtest attrを追加して5.0を代入(特に断りがなければfloat)
f@test = 5; // 上記と同じ
i@、v@など
組み込みattribute
@Pや@Cdなどの最初から用意されているattr
代入するときに必ずしも型が同じでなくてもなんとなく代入してくれる
@P.y = @ptnum; // ポイントナンバーを取得する(取得してy座標に入れる)
@numpt // ポイントの総数を取得する
@test = @ptnum / (@numpt - 1.0); // ポイントのtest attrを最初0.0~ 最後1.0に割り当てる
カスタムattrをビューポートに表示する
https://gyazo.com/283cae1ea35642615a37ae5aca88d59c
https://gyazo.com/e9e883ed49c40383da0a4ddfb6c098d4
糸通しアイコンを右クリック、シーンに追加、該当attrを記述
関数 chramp ("ラベル", 0~1の数値);
しーえいちらんぷ
チャンネルグラデーション?
@test = @ptnum / (@numpt - 1.0);
@P.y = chramp("shape", @test);
https://gyazo.com/6acad95fc78b236727cd61bf2e3813c3
記述後に右の地味なボタンhttps://gyazo.com/88fedf86819270edae7736728821a767 を押すとグラフが出現する
https://gyazo.com/110bff13d9f4923e1a3227a19a5dcf28
Creates spare parameters for each unique call of ch()
翻訳:ch()の一意の呼び出しごとにスペアパラメーターを作成します
0~1の値を任意のグラフ②に置き換えることができる
BlenderのColorRampに似てる気がする
マウスでシェイプを描くことができる
https://gyazo.com/67fd0fc645fcb911427fe9a0e7f63eb9
関数ch("ラベル");
https://gyazo.com/4639d0c8bb16e3b485b26b73eb046af6
右の地味なボタン押す
https://gyazo.com/dc609ddea37251490d82219d6b4c7669
ラベル名の定数パラメータがスライダーで出現する
マウスで調整することができる
attrを使わない記述
変数を使う
float range = @ptnum / (@numpt - 1.0); // float rangeを作る
二度と再利用しない数値は変数にしたほうがソースがキレイ
どうしてもattrを使う→消したいときは専用のノードがある
attribute delete
attrを強制的に消すノード
関数chとhttps://gyazo.com/88fedf86819270edae7736728821a767
デフォルトで生成されるスライダーは0~1
右上の歯車から変更することができる
https://gyazo.com/a8bee556873ca05384489c8804a32337
https://gyazo.com/c3d7b0e9588593d0494056417ea96cb5
関数chv(vector)
ベクター型のch
@Cd = chv("color"); // カラムから色をいじれるようになる
いちいちhttps://gyazo.com/88fedf86819270edae7736728821a767 を押さずとも最初からスライダーを出現させる方法
https://gyazo.com/1efbf8c5c6c108228dd6ab6ef37aa235
空のwrangle状態でEdit parameter interface
追加したいデータ型、右矢印、名前、Acceptで追加可能
facetノード
https://gyazo.com/0aa492d245bb6f4fbc0cf70133525177
同一線上のポイントを削除して頂点数をへらすノード
Remove Inline Points オプションで切り替え
polybevel
https://gyazo.com/c2ac82b53737dcbaf08b1d2287a4761f
ベベルをかけるノード
面を貼っていなくてもちゃんとかかる
revolve
https://gyazo.com/7bc06d1ff990bed0677e8a43d61cf3a9
回転体をつくるノード
fuse
重複頂点を削除するノード
channel
ノードの持つパラメータのこと
AEのエクスプレッションに近い
パラメータ同士を参照することができる
直線ノードを長さの分だけ位置を変更するなど
ch("./dist") // 同パラメータ内の距離パラメータを取得
https://gyazo.com/a3bd72001c6770e150cabe151f56aed4
ch("dist") //./は省略可能
ch("../box1/sizey") // 同ジオメトリ内のbox1のパラメータsizeyを取得
URLアクセス
ch("../sphere2/scale") // 同ジオメトリ内のbox1のパラメータscaleを取得
双方のパラメータがリンクする
poly extrude
ノーマル方向にポリゴンを押出す
厚み付けとかにも使える
Output Backにチェックを入れると裏面の描画がされる
任意の方向に押し出したい(真上)
予め@N = {0,1,0}; wrangleを仕込んでおく
https://gyazo.com/f7c01a26913389ebcc6b9e82f115594b
オプションをPoint Normalに、追加オプションをExisting(既存のノーマル)に変更
押し出したとこだけのグループを作りたい
https://gyazo.com/06baa7f716504a5cde6155214ab21212
このへんのオプション
押し出した縁部分だけとりたいときはFront Boundary…とかのチェックからグループを取る
set vector component
vectorの任意の値を新規の値で上書きする
Vector ComponentをComponent3にすると3番目の値、z軸に対する変更になる
vectorに限らずset~componentは上書きの意味
get vector component
vectorの任意の値を取得する
数値系ノード
const
定数
Constant Typeで定数のタイプを設定して使う
add
足し算
Typeの異なる足し算は特殊な結果になる
例)0,0,0 + 1 = 1,1,1
random
入力にランダムな値を加えて出力する
Signatureパラメータでタイプを選択
入力ノードを差すと自動で設定される
Clamp Position to Integerパラメータ
数値を整数として扱うか否か
Vectorとかfloatをつかうときはオフにしておくこと
noise
入力にノイズを加えて出力する
randomと異なりwiggle的
連続性のある波を返す
ファイル系ノード
file cache
ファイル書き出しを行う
グローバル変数
$OS
ノード名を取得
https://gyazo.com/e74f66f50319e195c561c7e2258af519
いちいち内部を見なくてすむので便利になることがある
$F
フレーム数を取得
https://gyazo.com/0e923ff3afa9a43cd9237e7f63491e5e
たのしい
$T
秒を取得
$HIP
現在作業中のファイルの保存パス
$HIPNAME
現在作業中のファイルのファイル名
グローバル変数をもっと知りたい
F1 >Networks and parameters > Parameter expressions>HScript global variables
ローカル変数
$NCY
copy stampノード内でしか使えない変数
コピー総数を取得
各ノードが何のローカル変数を持っているのかを知りたい
F1>該当ノード名でLOCALSを参照
小ネタ
ヘルプ
クリックで表示切り替えができる
https://gyazo.com/5174872369a8fff39d01ec435defe2df
緑になるのは数式が入ってるという意味
リアルタイムに再生するには
https://gyazo.com/5a7a7a7064e74f58e12c92dfa4b492a9
計算結果を普通の数値に変更したい
Ctrl+Shift+クリック
Context
NetworkEditorの右上にある文字
https://gyazo.com/5a83e435afe74b18ee0e080a3e3f8470
Objectsの場合はObjectsのみ追加できることを示す
Tabキー追加はシーンに置けるものだけ列挙される(全てのノードではない)
左上のURLバーっぽい場所にあるobjの文字
https://gyazo.com/f3befa65baf3f71987ffbc1412adc28e
クリックするとmat(マテリアルモード)に変更したりできる
BlenderでいうWindow切り替え
例)mat = ShaderEditor
このモードの区分のことをContextと呼ぶ
他のジオメトリのゴースト表示を消したい
3Dビュー右上のGhost Other Objectsオプションを変更する
https://gyazo.com/de942f97e7f8ab70e2ede9d8c46aa613
Space + Y
オブジェクトマージ
ネットワークのどこかにあるノードを参照するノード
遠方のノードから線を引っ張ると事故るので使われる機能
ノードがワープしてくる感じ
https://gyazo.com/792ee72779888c0db503ee03fd1ba134
https://gyazo.com/5bb8b155e7a6d75f9c690d47787fd0ea
(ここ全部大文字にしておくとオブジェクト選択ウィンドウで上のほうに出てきて事故りにくいんだって!)
Shift + Sでノードの枝が丸くなるんだって!
Alt + クリックで中間地点を作れるんだって!
ジオメトリの最下部を中心にしたい
https://gyazo.com/7a17add72efeb1fda79de4b9712ce92d
トランスフォームYに-$YMINを入れると一発!
chを手打ちしないでコピー
https://gyazo.com/17271718381843f53d9838af2ccba5b5