検索 - User list
Full Version: APEXのkinefx::characterblendshapescoreはIDを用いて適用する頂点を指定出来ますか?
Root » 日本語フォーラム » APEXのkinefx::characterblendshapescoreはIDを用いて適用する頂点を指定出来ますか?
kurosaba
お世話になっております。
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の概念がなさそうなので、出来ないと感じています。
ですが、もし見落としている項目があるのなら知りたいのです。
もしくは、出来ない場合、今後これがアップデートで追加されるか知りたいです。

よろしくお願いします。
Ken Taki
問題を再現する手順も書いていただけますでしょうか?
kurosaba
画像1枚目は、change_all_or_head_onlyノードのスイッチが0の時です。
これは全身のブレンドシェイプを持っている時の条件です。
この時、blendshapeノードで、APEXビュアーステートを有効にし、deform_00スライダーリグを動かすと、
正常にブレンドシェイプしていることが確認できます。

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

提供したサンプルでは、これを再現することが出来るようになっています。
そして、私がサンプルでやりたいことは、
「頭のみのブレンドシェイプメッシュで、ブレンドシェイプが正常に動作するようにしたい」
ということです。
Ken Taki
再現できました。150647 で登録しました。

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

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

をご覧ください。引き続き宜しくお願い致します。
Ken Taki
こちらですが、上流で Attribute Wrangle を追加、 Point アトリビュートとして

i@id = @ptnum;

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


kurosaba
ご回答頂き、ありがとうございます。
すみません、確かに下記ドキュメントにもidを用いることが出来る点が記載されていますね。
自分の失念でした。
https://www.sidefx.com/ja/docs/houdini/nodes/sop/kinefx--characterblendshapes.html [www.sidefx.com]
kurosaba
試したところ、動作することが確認できました。ありがとうございます。
ただ、確認できた上で、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]
Ken Taki
> これはCharacter Blend Shape Channels SOPのチャンネル情報と一緒です。(Detailアトリビュート)

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

ドキュメントの "Create custom sliders" ファイルはこちらです。
kurosaba
Character Blend Shape Channels SOPというノードが存在します。
これは私のHDAではなく、SideFXさんよりリリースされているノードです。
このノードは、ブレンドシェイプによってデフォームする時の変化量を、Detailアトリビュートとして定義することが出来るノードの様です。

チャンネル情報を出力して欲しいというのは、
例えば、APEX Scene Invoke SOPノードでBase.skelを呼び出すとき、一緒にBlendshapeの変化量も出力できるオペレーションが欲しい。
ということです。
Ken Taki
すみません、私の最初のコメントとも関連しますが、一番ありがたいのは「手順」を提示してもらうことです。
つまり、 apex_kinefx_blendshape_sample_id.hiplc のどのノードのことでしょうか?
申し訳ないですが、フォーら以外の質問や問題も抱えており、また出張中でもあるので、シーンファイルを扱う手順を記述してもらえると助かります。
kurosaba
失礼しました。
ただ、適切な手順が思いつかないため、サンプルを用意しました。
このサンプルにはチャンネル情報を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に実装されることです。
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB