ボーンの平行移動で、操作したい軸と別の軸の値が変動する。

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2013/3/11 0:58
七篠  半人前 居住地: チバラギ  投稿数: 37
OS: Windows XP SP3
Blender: 2.62

こんばんは。

ポーズモードであるボーンを指定し、平行移動中に Z キーを押して操作軸を Z に固定して操作すると、見た目は Z 軸限定で動いているんですが、プロパティの平行移動の値を見ると、Y 軸の値が変動する場合があります。

プロパティ画面のボーン関係に軸の指定か何かがあるのではないかと思ったのですが、ソレらしい項目が見つかりませんでした。


スクリプトで平行移動を処理する際に意図しない結果になってしまうため、見た目上の Z 軸と違う動きをするかどうか判断する方法をご存じの方がいらっしゃいましたら、アドバイスいただけると幸いです。
投票数:4 平均点:2.50
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/3/11 13:18
完全無欠猫  長老 居住地: 兵庫  投稿数: 750
あるボーンだけではアドバイスをするのは難しいと思います。
どのような構成のボーンなのか、Modiferは設定されているのか、Constraintsは?
などなど可能な限りの状況を提示した方がいいと思います。

また、可能であれば最新版で挙動を確認されることを勧めます。
過去版の場合は不具合を含んでいます。
(最新版も含んでいますが)
少なくとも過去版の抱えている問題のいくつかは修正されているはずですから。

版を明記される場合はRevを含んで明記した方がいいと思います。
そのRev以降に問題が解決している可能性もあります。
投票数:3 平均点:3.33
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/3/12 0:36
七篠  半人前 居住地: チバラギ  投稿数: 37
御返事ありがとうございます。

2.66a r55075:55077 で試してみたところ、同じ現象を確認でしました。

Modifier 、Constraint の影響を確かめるため、新規作成状態からボーンを追加して挙動を確認したところ、?新しく追加したボーン( Z 軸+方向( Front View で上方向)向き)、そこから? Extrude で Z 軸+方向に発生したボーンは、ポーズモードで G キー -> Z キーで Z 軸に限定した平行移動で、 Y 軸の値が変動していました。

? Extrude で X 軸+方向( Front View で右方向)に発生したボーンはポーズモードで同じように操作( G -> Z )したところ、Z 軸の値が変動していました。

?と?をプロパティ画面の Object, Armature などでプロパティを見比べてみましたが、ソレらしい違いが見当たりませんでした。

他に不明な部分があったらご指摘お願いします。
投票数:7 平均点:4.29
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013/3/12 8:54
完全無欠猫  長老 居住地: 兵庫  投稿数: 750
この記述の意味がわかりません。
>Modifier 、Constraint の影響を確かめるため、新規作成状態からボーンを追加して挙動を確認したところ
新規作成しただけのボーンであればModifierもConstraintも設定されていないはずでは?

記述されている状況を私なりに解釈して試した内容を書きます。
---設定条件---
1.新規作成状態でボーンを1個追加する。
2.Editモードで追加したボーンをZ軸方向にExtrudeする。
-------------
3.Poseモードで子ボーンを選択してZ軸方向に移動させる。
この時、子ボーンは親ボーンの回転座標系を継承しています。
また親子関係にあることから空間座標もローカルに限定されます。

この状態での状況は記載されたようになります。
(変化しているのはRotationだと思いますが・・・Locationは変化していないはず)

試しに以下のように設定してください。
1.Editモードで子ボーンを選択し、RelationsのParentボーンを削除、Connectedを外す。
2.Local Locationの選択が可能になるので、これも外す。
3.Poseモードで元子ボーンを選択しZ軸限定で移動する。

Z軸に対して変化するはずです。

これは親子関係にあるボーンが親ボーンから継承した制限範囲で稼動しているからです。
Poseモードは基点からの変移なのでこの場合は親ボーンからの変移を示しているのだと思います。
ボーンのオブジェクトタブのDisplayでAxisをONにすると座標軸が表示されるので分かりやすいです。

数学的にこういう事情ですと説明できれば分かりやすいのだと思いますが私にはその知識がありません。
キャラクタを作成してボーンを組み込んでいるとConstraintなどの設定で空間設定がいろいろと出てきます。
その際に見た目と異なる軸が反応するので私も最初は戸惑いました。
理論的に理解している方は常識と思われるでしょうが私には???でした。

どなたか理論派の方がこの辺りの説明をしてもらえるといいと思います。
私から言えることは親子関係にあるボーンの場合は継承元の空間座標系を基にしている結果だということです。

私はこのように認識していますが、それは違うという方がいれば訂正をお願いします。
投票数:2 平均点:5.00
前の投稿 - 次の投稿 | 親投稿 - | 投稿日時 2013/3/12 12:01
yamyam  管理人 居住地: そうや、うちはおおさかやー  投稿数: 4405
確かにマニピュレーターで移動すると、他の軸も多少変動していますが、3DViewのプロパティ領域([N]キー)の▼Transformで軸のロックボタンをONにした状態では変動しなくなります。
それぞれの軸の状態をロックするメソッドがそちらを利用すればどうにかなる…かもしれませんね。

投票数:6 平均点:3.33
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/3/13 14:41
七篠  半人前 居住地: チバラギ  投稿数: 37
お二方、御返事ありがとうございます。

引用:
この記述の意味がわかりません。
>Modifier 、Constraint の影響を確かめるため、新規作成状態からボーンを追加して挙動を確認したところ
新規作成しただけのボーンであればModifierもConstraintも設定されていないはずでは?

いじっているファイルが随分前に作ったファイルで細かいことを覚えていないため、
それらの要素が影響している可能性をチェックするために初期状態でも起きる現象か
確かめるためにこのようなことを行いました。

また、1つ書き忘れていたことがあります。申し訳ありません。
Extrude した子ボーンを平行移動したと書いていますが、このボーンはそのままだと
親ボーンから離れて平行移動できないため、プロパティ画面の Bone タブの Relations
にある Connected のチェックを外していました。

引用:
これは親子関係にあるボーンが親ボーンから継承した制限範囲で稼動しているからです。

なるほど、では、適用したい平行移動のベクトルに、親の行列変換を加えて
テストしてみます。
投票数:6 平均点:3.33
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/3/14 10:15
完全無欠猫  長老 居住地: 兵庫  投稿数: 750
>Extrude した子ボーンを平行移動したと書いていますが、このボーンはそのままだと
親ボーンから離れて平行移動できないため、プロパティ画面の Bone タブの Relations
にある Connected のチェックを外していました。

Connectedが外れていると少し違うので書きます。
前述していますがボーンのAxisを表示すれば分かると思います。
画像を添付しています。

ビューではZ軸方向ですが、ボーンの空間座標ではその方向はY軸です。
これはボーンRollを変更していない状態です。
但しRollを変更していると異なる場合があるので初期状態での説明です。



この状態だと分かりにくいので別の状態でも説明します。
下記の画像は親ボーンを寝かせた状態にしています。
(Editモードで回転させています)
画像を見ると分かりますが子ボーンの垂直方向の軸はYですが、親ボーンの垂直方向の軸はZです。



子ボーンのLocal LocationのチェックをON/OFFして確認すると分かります。
Local LocationがONの場合は自身の空間座標に基づいています。
Local LocationがOFFの場合は親ボーンの空間座標に基づいています。

投票数:7 平均点:7.14
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013/3/15 12:20
七篠  半人前 居住地: チバラギ  投稿数: 37
御返事ありがとうございます。

ボーンの逆行列をワールド座標系で定めたベクトルにかけたとろこ上手くいきました。

写真一枚目のボーンを例にすると、ワールドで Z+1 動かしたい場合、ボーンに Y+1 してやる必要があります。 ボーンの座標系はワールドに対して X 軸で 90 度回転しているため、
ボーンの行列を適用したいベクトルに適用すると Y-1 になってしまいます。
そこでそれを逆にするために逆行列を使用しました。

説明が上手くできなくてもどかしいですが、やりたいことは出来るようになりました。
ありがとうございます
投票数:5 平均点:6.00

  条件検索へ


ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki