Shade online フォーラム
ログイン
ユーザ名:

パスワード:

IDとパスワードを記憶

パスワード紛失
スレッド表示 | 古いものから 投稿するには登録が必要です 前のスレッド | 次のスレッド | 下へ
投稿者 スレッド
投稿数: 8
投稿日時: 2010-12-16 00:21
Re: スキンの数値設定について
MASA_さん

お返事遅くなってしまってすみませんでした。

まず、ポイントの位置が狂うことに関してですが、数値設定時に「取り消し(アンドゥ)」をしていたのが原因だったようです。
数値上は元に戻っているのにポイントはそのままになってしまうようで…なんで気づかなかったんでしょう。すみません。

他のウェイトの設定方法もおかげさまで随分クリアになりました。

あとは、自由曲面に対しての一括バインド時に、ルートジョイントを動かしても形状が追従しまい問題に関しては、ウェイトの数値とその挙動的には正しいのですが(ルートジョイント=ウェイト値0.5など)、一括バインドのままではキャラクターの位置変更もまともに出来ない数値が割り振られてしまう、ということが起こるようでして、驚きました。これに関しては上記の方法でバインドし、未調整のままのサンプルデータを上げておきます。

以上、いろいろありがとうごさいました!
検証用_腕モデル.shd

検証用_腕モデル.shd
投稿数: 308
投稿日時: 2010-12-14 11:30
Re: スキンの数値設定について
引用:

doordoorさんは書きました:
MASA_さん、返信ありがとうございます。

これらを総合すると、ゲーム用キャラモデルの設定などでよくあるように
ウェイト値を3つ以上のジョイントへ跨って調整したい場合など(SHADE的に
言うと、リスト1番目のジョイントの影響を減らしたり、2番目のジョイント値を調整
したりしたい場合、という感じでしょうか)は、まずリスト1番目のジョイント値を先に
減らし、それから2番目の(下位)ジョイントを指定し、値を変更する、という順番
じゃないと問題だということですよね?そもそも、ジョイントを複数リストする場合は、
上位にあるジョイントはすべて値を1にしていないといけませんか?
しかしバインドした直後の値を見ると、
「上位ジョイントA=0.97、その下位ジョイントB=0.01」
なんて値になっていたりするのはなんなのでしょう???

ウエイトの変更順番は関係ないはずです。
上位にあるジョイントは全て1である必要はありません。ただ、定義の順序を親側のジョイントから記述していけばいいだけです。
ただ、ジョイントA->ジョイントB->ジョイントC
などの構造があるとき、
A:n、C:m のように途中を抜かすことは薦めません(やれないことはないが、意味不明の指定です。)
通常複数のバインドがある場合は、親から子に掛けて連続的に定義していくか、
途中で枝別れするような部分の分かれた複数の子を夫々列記し、個々にウエイトを掛けるような記述が典型的やり方といえます。
最後の質問ですが、ウエイトが1.0なのに100%追従しないポイントがあるというのなら問題ですが、
Shadeの場合そのようなことは、聞いてません。多分どっかに変な設定がある可能性があります。
そのポイントの上位のパートのどこかに変なスキンがないでしょうか?
私もShadeの挙動が変なのでバグかと思ったところ、いつの間にか、形状の上位のパートに
知らないうちにスキンが掛かっていたなんてことがありました。
今注意するShadeのバグは、バインドを掛けた直後に図形ウインドウ上でジョイントの変化に形状が追従しない(内部では変形している)というものです。一度保存して読み直せばちゃんと動作します。あまり変なら、一度全てのジョイントをリセットし、形状を保存してから、再読み込みして確認すればいいと思います。
尚、スキンのバインドは、ジョイント自身にも、パートにも掛けられます。その場合の挙動も結構複雑になりますが、この辺になると各自設定してみて自分で把握されるのがいいでしょう。
後は、ご自分でいろいろ触って確かめてください。
投稿数: 8
投稿日時: 2010-12-14 01:19
Re: スキンの数値設定について
MASA_さん、返信ありがとうございます。

階層が上位のジョイントにはそれが階層化されているので
必ず追従するということは勿論理解しています。
でもそのこと(階層化されているから追従するということ)を、
ウェイト=1と表現するとは思っていませんでした。
「肩1.0 肘0.5 手首1.0」 と「肩1.0 肘1.0 手首0.5」で結果
が違うことはもちろん理解できます。

ともかく、
『階層順を入れ替えてジョイントを指定しない』
という原則は分かりました。またウェイト値を調整するときは、
『指定したジョイントからの影響を減らしたいとき、その値を減らす』
『下位に対してウェイトを乗せたいときは、そのジョイントをリストする』
ということですね?

>ジョイントを動かしておいてからのウェイト値の変更
>ポイントの位置が狂ってしまう

に関しても、このジョイントのウェイト値設定のルールに起因していたようで、
スキンウィンドウで2番目の(下位)ジョイントを指定した際、1番目のジョイント
の値を少しでも下げると、頂点の位置がズレて戻らなくなっていたようです。

これらを総合すると、ゲーム用キャラモデルの設定などでよくあるように
ウェイト値を3つ以上のジョイントへ跨って調整したい場合など(SHADE的に
言うと、リスト1番目のジョイントの影響を減らしたり、2番目のジョイント値を調整
したりしたい場合、という感じでしょうか)は、まずリスト1番目のジョイント値を先に
減らし、それから2番目の(下位)ジョイントを指定し、値を変更する、という順番
じゃないと問題だということですよね?そもそも、ジョイントを複数リストする場合は、
上位にあるジョイントはすべて値を1にしていないといけませんか?
しかしバインドした直後の値を見ると、
「上位ジョイントA=0.97、その下位ジョイントB=0.01」
なんて値になっていたりするのはなんなのでしょう???

>***すみませんがジョイントを移動とは???
間違った操作をしてしまったのでしょうか?たとえばバインド実行後、
ルートジョイントを選択し、ジョイント編集モード(F4)でジョイントを移動し、
キャラクターの位置を動かそうとしたのですが…そのときに、前述のような
100パーセント追従しないポイントがある、というのは問題かと思うのです。

すみません、どうも考え方がうまく馴染んでいないのでとんちんかんな事
ばかり言っているようですが…どうぞよろしくお願いいたします。
投稿数: 308
投稿日時: 2010-12-13 16:35
Re: スキンの数値設定について
誤解があるようなので、お答えしますが、
細かいので、引用内に直接コメント(***付き)します。
引用:

doordoorさんは書きました:

ただ同時に新たな疑問がこれらを仮に肩→肘→手首という構造で例えると、
「肘=0.5」
のとき、残りの0.5は肩に対してウェイトが乗っている訳ですが、
***違います、肩には1.0のウエイトが掛かってます。肩を動かしてみてください。***
「肘=0 、手首=1」
という順でウェイトを指定すると、そのポイントは手首に100パーセント追従しました。
***違います。肩1.0 肘0.0 手首1.0です。
これを
「肘=0.5 、手首=1」や、「肘=1 、手首=1」
としてもなんと結果はまったく同じでした。
***違います。最初は、肩1.0 肘0.5 手首1.0 次は、肩1.0 肘1.0 手首0.5です。各設定で全てのジョイントを動かしてみてください。違うでしょ。***
ちなみに
「肘=0 、手首=0.5」や、「肘=1 、手首=0.5」
とした場合、手首に対して50パーセント追従し、残りはそれぞれ肘やその上位(肩)に対して、
はじめの法則に従ってウェイトが分配されていました。
***違います。肩は1.0です。
これは、ジョイントの階層が下位のものが
指定された場合は、そのリスト順が下位でもウェイトはそちらを優先するということですよね。
***違います。最初のバインドジョイントだけに関しては、上位のジョイントすべて1.0のはずです。二番目以降は、親には伝播しません。***

ついでに現状のテスト結果で気になったことも下に記します。

・バインドする際、ルートジョイントが1番にリストされたポイントでその値が0でないものがある
***別におかしくはないとおもいますが。
・その際、ジョイントを移動すると(当然)そのポイントはその割引に応じて追従してくれんない
***すみませんがジョイントを移動とは???ジョイントはスキンを掛けてからは移動させない方がいいです。ジョイントを変形させたば場合、そのウエイト分変化するはずですが。***
・それは表示上「1」となっていても1ではないかも知れない

***以下略
投稿数: 308
投稿日時: 2010-12-13 16:04
Re: スキンの数値設定について
引用:

doordoorさんは書きました:

でも、1番目のジョイントのウェイト値が0.5のとき、指定したジョイントへの追従は
確かに50パーセントになりましたが、残りのウェイト値がどのジョイントにどれだけ
追従しているかは数値では示されないということなのですねぇ。

何か勘違いされているようなでのですが、残りだとか、全部で1.0だとかという発想自体が無いのです。
ジョイントA->ジョイントBという構造で、ジョイントBは、ジョイントAに完全に追従するので、
あるポイントが、ジョイントBにウエイトwだとすると、ジョイントAに対しては、wの値に関係なく無条件に1.0の
影響を受けるのです(ジョイントBが100%ジョイントAによって影響されているわけですから。)。
これは、ジョイントの全ての親ジョイントにまで伝わります。
ですので、安易に親子関係にあるジョイントを逆にバインドするようなことをするのは止めたほうがいいです。
次に親に伝播するのは、最初にバインドされているジョイントのみです。
二番目以降のジョイントは、そのジョイントの変化量にウエイト分だけ元の変化に対して付加されるだけです。
何だか、理解にずれがあるようなので、基本はこれ位にします。
もし、新たな疑問があれば投稿願います。

次に
引用:

>ジョイントを動かしておいてからウエイト値を変更することで
>ウエイト値の微調整が出来ます

ウェイト値の調整時にできればジョイントを動かしておいた状態でやりたいのですが、
それをすると、ジョイント自体は削除したり追加したりしたわけではないのですが、
ポイントの位置が狂ってしまうのか、元の形状に戻らなくなってしまいます。
何か回避方法があるのでしょうか?

元に戻らないはずは、ないんですがね。
一応、ジョイントがリセットされた状態で、あるポイントにジョイントAのウエイトが、0.5かかっているとします。
そのジョイントを動かしてから、そのポイントの変化量が大きすぎと思えば、そのウエイトをスキンウインドウ上で0.4にしたとします。
すると直ぐにポイントがそのウエイトに応じた変化に変わるはずです。その後ジョイントをリセットすると初期の位置になっているはずです。
注意することは、この間絶対にポイント自体やジョイントを動かさないことです。
どうしてもならないなら、ならない場合の具体例を示してください。
投稿数: 8
投稿日時: 2010-12-13 14:35
Re: スキンの数値設定について
MASA_さん、atkitajimaさん、返信ありがとうございます。

スキンウィンドウに1番目に示されるジョイントとその割合が(文字通り)重要で、
それ以降は副次的なものだということが分かっただけでも随分すっきりしました。

でも、1番目のジョイントのウェイト値が0.5のとき、指定したジョイントへの追従は
確かに50パーセントになりましたが、残りのウェイト値がどのジョイントにどれだけ
追従しているかは数値では示されないということなのですねぇ。

ちなみに今テストしてみたのですが、あるポイントのウェイトをスキンウィンドウで
あるジョイントひとつだけを指定しその数値を0にしたとき、その変位の結果は、
その上位にあるジョイントに対して100パーセントウェイトが乗っている(ひとつ上位に
あるジョイントのウェイト値を100とした状態)と結果が同じになりました。
これで一番目に示されるジョイントのウェイト値が0.5のときの残りがどこへいったかも
解決できます。

ただ同時に新たな疑問がこれらを仮に肩→肘→手首という構造で例えると、
「肘=0.5」
のとき、残りの0.5は肩に対してウェイトが乗っている訳ですが、
「肘=0 、手首=1」
という順でウェイトを指定すると、そのポイントは手首に100パーセント追従しました。これを
「肘=0.5 、手首=1」や、「肘=1 、手首=1」
としてもなんと結果はまったく同じでした。ちなみに
「肘=0 、手首=0.5」や、「肘=1 、手首=0.5」
とした場合、手首に対して50パーセント追従し、残りはそれぞれ肘やその上位(肩)に対して、
はじめの法則に従ってウェイトが分配されていました。これは、ジョイントの階層が下位のものが
指定された場合は、そのリスト順が下位でもウェイトはそちらを優先するということですよね。

ついでに現状のテスト結果で気になったことも下に記します。

・バインドする際、ルートジョイントが1番にリストされたポイントでその値が0でないものがある
・その際、ジョイントを移動すると(当然)そのポイントはその割引に応じて追従してくれんない
・それは表示上「1」となっていても1ではないかも知れない

これらのことが起こって、ルートに100パーセント追従させたい場合は、ジョイントの指定を
いったん解除して(このようにちゃんとリセットしないとうまくいかない場合がある)、
再度ルートジョイントを選択し、その値を「1」とすると問題は解決します。
またルートとその下位ジョイントでウェイトを分散させたい場合は、上記の方法で一度設定を
リセットした後、下位のジョイントを選びなおしてから、その割合を「0.5」なり入力してあげると、
ルートジョイントとその下位でのウェイトの分散がうまくいくことが分かりました。

しかし、クセがあるというか、なかなかこのような法則でウェイトが定義されているという情報が
オフィシャルにもネットにもなかなか見つからなかったので、すっごくたいへんでした…


あと、頂いた返信についても少し質問させて頂きたいのですが、

MASA_さん
>ジョイントを動かしておいてからウエイト値を変更することで
>ウエイト値の微調整が出来ます
>ジョイントの追加や、削除、ジョイントの変更
>ポイントの初期位置が狂ってしまう

ウェイト値の調整時にできればジョイントを動かしておいた状態でやりたいのですが、
それをすると、ジョイント自体は削除したり追加したりしたわけではないのですが、
ポイントの位置が狂ってしまうのか、元の形状に戻らなくなってしまいます。
何か回避方法があるのでしょうか?


以上、長文になってしまい失礼しました。
投稿数: 36
投稿日時: 2010-12-11 16:31
Re: スキンの数値設定について
引用:
たとえば合計で1になるように
各ジョイントごとのウェイトの割合として示されて
いるならまだ分かりやすいのですが、ひとつのジョイント名
だけ示され……

ウェイト値についてはMASA_さんがご説明なさっているので、この疑問点について補足しますと、
Shadeのスキンは、最初のジョイント割り当てのみ、ボーン(多関節)を考慮する様になっています。
つまり、例えば肩→肘→手首というボーンが有ったとして、
スキンに手首1.00と設定した場合は、肩→肘→手首の全ての影響を受けます。
手首0.00と設定した場合は、肩→肘の影響のみを受けます。

前述した通り、こうした動作はスキンの最初のジョイント割り当てのみです。
なので、例えばスキンに肩0.00+手首1.00と設定した場合は、
手首のみの影響を受けます。
投稿数: 308
投稿日時: 2010-12-11 12:11
Re: スキンの数値設定について
数値というのは、ウエイト値ですね。
これは、その対応するジョイントからそのポイントが受ける変形の強さのことです。
例えば、ジョイントAが回転ジョイントでそのウエイト値が1.0
なら、ジョイントが90度回転すると、そのポイントは90度回転します。
ウエイト値が、0.5なら、45度回転します。
移動でも、ボールジョイントの回転やオフセット変形も全て
同じです。
これによって、一連のポイントが、特定のジョイントの変化を滑らかに受けて、柔らかく変形出来るようになります。
1つのポイントに複数のジョイントを設定すると、その複数のジョイントの各変形の総和が変形量になります。
但し、スキンウインドウの一番最初のジョイントが基本ジョイント
で、それから以降は、補助的変形を受け持つと思ってください。
スキンウインドウ上でのウエイト値の修正は、何時でもできます。
ジョイントを動かしておいてからウエイト値を変更することで
ウエイト値の微調整が出来ます。
但し、ジョイントの追加や、削除、ジョイントの変更は、
ジョイントを全てリセットしてから行うようにしないとポイントの初期位置が狂ってしまうので注意が必要です。
投稿数: 8
投稿日時: 2010-12-10 16:46
スキンの数値設定について
初心者です。よろしくお願いします。

いろいろ調べてみたのですが、スキンウィンドウでの
数値設定の方法や考え方が分かりません。

まず各頂点ごとの数値が何を表しているかもよく
分かりません。たとえば合計で1になるように
各ジョイントごとのウェイトの割合として示されて
いるならまだ分かりやすいのですが、ひとつのジョイント名
だけ示され、その数値も0.2だったりするので、
そうではないですよね?これはどのような数値なのでしょう?

このような状態ですので、数値を減らすべきか、増やすべきか、
(まではなんとなく分かるとしても)他のジョイントを追加する
のはどのようなタイミングか、などの判断ができず困っています。

おおまかで結構ですので、この手動設定する際のコツや手順を
ご教授頂けると幸いです。
スレッド表示 | 古いものから 投稿するには登録が必要です 前のスレッド | 次のスレッド | トップ

最近の投稿

フォーラム スレッド 返信 閲覧 最終投稿
Free Talk DNAの2重らせんの水素結合部位の作成 0 11755 2016-08-01 21:37 Benthos
Free Talk パート内の名前を一括返還 2 14262 2016-03-07 12:21 画像投稿機
Dev Forum イームズシェルチェアーの作成 2 14177 2015-11-25 14:44 CR7
Free Talk MOVファイルについて 17 35277 2014-12-29 17:14 momokuma
Dev Forum 2種類の液体アニメーションを作る方法 0 14256 2014-11-13 10:42 mejapan
Free Talk 面取りについて 0 13371 2014-11-08 15:18 MoonChild
Free Talk 丸太を結ぶ縄の作成について 1 19577 2014-09-18 22:33 kenslab
Free Talk パーティクルフィジックスのメタパーティクルについて 0 13832 2014-09-03 20:40 penta
Free Talk データの保存に関して 2 13660 2014-08-18 01:24 sierra
Free Talk Shade 3D ver14での、ポリゴンメッシュへの変換以上終了 1 14098 2014-04-23 12:04 MASA_