APEXのkinefx::characterblendshapescoreはIDを用いて適用する頂点を指定出来ますか?

   758   10   0
User Avatar
Member
38 posts
Joined: July 2018
Offline
お世話になっております。
APEX Autorig Componentで作れるBlendshapeは、kinefx::characterblendshapescoreで変形していることを確認しました。
これには、sop::blendshapes::2.0のように、ptidattrパラメータがありませんでした。
sop::blendshapes::2.0は、ptidattrを用いることで、ブレンドシェイプメッシュによってデフォームさせたいメッシュの頂点を、
IDによる頂点番号の照合で指定することが出来ます。

非常に簡単ですが、私がやりたいことをサンプルとして用意しました。
change_all_or_head_onlyノードを、切り替えることで、ブレンドシェイプメッシュを全身か頭のみに出来ます。
これを頭のみにした場合、APEXのブレンドシェイプは壊れます。
しかし、私には頭のブレンドシェイプメッシュ以外必要ありません。
(データ量など、諸々鑑みて、全身のメッシュは不要であるため)

Character Blend Shapes SOPのワークフロー自体に、IDの概念がなさそうなので、出来ないと感じています。
ですが、もし見落としている項目があるのなら知りたいのです。
もしくは、出来ない場合、今後これがアップデートで追加されるか知りたいです。

よろしくお願いします。
Edited by kurosaba - Oct. 13, 2025 11:01:09

Attachments:
apex_kinefx_blendshape_sample.hiplc (691.3 KB)

User Avatar
Staff
484 posts
Joined: April 2015
Offline
問題を再現する手順も書いていただけますでしょうか?
User Avatar
Member
38 posts
Joined: July 2018
Offline
画像1枚目は、change_all_or_head_onlyノードのスイッチが0の時です。
これは全身のブレンドシェイプを持っている時の条件です。
この時、blendshapeノードで、APEXビュアーステートを有効にし、deform_00スライダーリグを動かすと、
正常にブレンドシェイプしていることが確認できます。

画像2枚目は、change_all_or_head_onlyノードのスイッチが1の時です。
これは頭のみブレンドシェイプを持っている時の条件です。
この時、blendshapeノードで、APEXビュアーステートを有効にし、deform_00スライダーリグを動かすと、
ブレンドシェイが破綻していることが確認できます。

提供したサンプルでは、これを再現することが出来るようになっています。
そして、私がサンプルでやりたいことは、
「頭のみのブレンドシェイプメッシュで、ブレンドシェイプが正常に動作するようにしたい」
ということです。
Edited by kurosaba - Oct. 13, 2025 11:09:47

Attachments:
capture_03.png (2.9 MB)
capture_04.png (2.8 MB)

User Avatar
Staff
484 posts
Joined: April 2015
Offline
再現できました。150647 で登録しました。

申し訳ないですが、「手順」とは、理想的には、番号付きで箇条書きに記述された問題の再現をするために必要な最低限のステップ(手順)のことです。
詳しくは

https://www.sidefx.com/ja/forum/topic/75614/ [www.sidefx.com]

をご覧ください。引き続き宜しくお願い致します。
User Avatar
Staff
484 posts
Joined: April 2015
Offline
こちらですが、上流で Attribute Wrangle を追加、 Point アトリビュートとして

i@id = @ptnum;

を追加すると、問題が自動的に回避されるようです。
また今後のビルドで、この id またはグループを明示的に指定できるようにするとのことです。


Attachments:
id.png (1.7 MB)
apex_kinefx_blendshape_sample_id.hiplc (692.4 KB)

User Avatar
Member
38 posts
Joined: July 2018
Offline
ご回答頂き、ありがとうございます。
すみません、確かに下記ドキュメントにもidを用いることが出来る点が記載されていますね。
自分の失念でした。
https://www.sidefx.com/ja/docs/houdini/nodes/sop/kinefx--characterblendshapes.html [www.sidefx.com]
User Avatar
Member
38 posts
Joined: July 2018
Offline
試したところ、動作することが確認できました。ありがとうございます。
ただ、確認できた上で、APEX Autorig Component SOPのBlendshapeコンポーネントに追加で要望があります。

Blendshapeによるチャンネル情報をBase.skelのOutputに含めてほしいです。
具体的には、画像1枚目のような具合です。
これはCharacter Blend Shape Channels SOPのチャンネル情報と一緒です。(Detailアトリビュート)

現在のAPEX Autorig Component SOPのBlendshapeコンポーネントが構築するグラフは、この情報を出力しないようです。
結果を確認したところ、チャンネル情報をBase.skelへ記述する処理は成されていましたが、それを出力するようには接続されていないようです。
なので、2枚目のようにBlendshapeのBase.skelの情報をOutputに接続すれば、チャンネル情報がBase.skelに反映されて出力できました。

例えば、ゲームに結果を出力したい場合は、Base.shpが直接変形されるのではなく、何等か別の形式に情報が出されている方が都合が良い人も多いはずです。
手作業やカスタムスクリプトで調整出来ますが、それは敷居も高いため、この情報の出力有無を選べると良いと感じます。

見たところ、現在この情報が出力できるようになるオプションは、存在しなさそうでした。
検討して頂ければ、と思います。


【追記】
すみません、加えてもう1点質問。
下記ドキュメントのカスタムスライダーが再現できません。こちらのサンプルファイルを頂けませんか?(画像三枚目)
https://www.sidefx.com/docs/houdini/character/kinefx/animatestateblendshapes.html [www.sidefx.com]
Edited by kurosaba - Oct. 18, 2025 05:34:55

Attachments:
capture_06.png (13.2 KB)
capture_07.png (121.5 KB)
capture_08.png (341.0 KB)

User Avatar
Staff
484 posts
Joined: April 2015
Offline
> これはCharacter Blend Shape Channels SOPのチャンネル情報と一緒です。(Detailアトリビュート)

これは具体的にどのノードのことですか?

ドキュメントの "Create custom sliders" ファイルはこちらです。

Attachments:
blendshapes.hip (684.3 KB)

User Avatar
Member
38 posts
Joined: July 2018
Offline
Character Blend Shape Channels SOPというノードが存在します。
これは私のHDAではなく、SideFXさんよりリリースされているノードです。
このノードは、ブレンドシェイプによってデフォームする時の変化量を、Detailアトリビュートとして定義することが出来るノードの様です。

チャンネル情報を出力して欲しいというのは、
例えば、APEX Scene Invoke SOPノードでBase.skelを呼び出すとき、一緒にBlendshapeの変化量も出力できるオペレーションが欲しい。
ということです。

Attachments:
capture_09.png (54.6 KB)

User Avatar
Staff
484 posts
Joined: April 2015
Offline
すみません、私の最初のコメントとも関連しますが、一番ありがたいのは「手順」を提示してもらうことです。
つまり、 apex_kinefx_blendshape_sample_id.hiplc のどのノードのことでしょうか?
申し訳ないですが、フォーら以外の質問や問題も抱えており、また出張中でもあるので、シーンファイルを扱う手順を記述してもらえると助かります。
User Avatar
Member
38 posts
Joined: July 2018
Offline
失礼しました。
ただ、適切な手順が思いつかないため、サンプルを用意しました。
このサンプルにはチャンネル情報をDetailへ出力しないケースと出力するケースを用意しました。
not_have_blend_channel_infoノードはチャンネル情報をDetailに出力しません。
have_blend_channel_infoノードはチャンネル情報をDetailに出力します。(画像1枚目)

現在は、APEXグラフに手を加えないとhave_blend_channel_infoノード時点のように、チャンネル情報は出力されないはずです。
求める結果は、APEX Autorig Component SOPを用いて、have_blend_channel_infoノード時点のように、
チャンネル情報を出力する機能がBase.rigに実装されることです。

Attachments:
apex_kinefx_blendshape_sample_01.hiplc (2.4 MB)
capture_10.png (304.3 KB)

  • Quick Links