スケール継承をオフにした場合の処理について質問させてください。
Aのアーム、Bのアームのスケール変化についてです。
アームのスケール変化をロボットの手に影響させないため、全てのボーンのスケール継承をオフにしています。
BのボーンにはIKが設定されています。IKオプションは圧縮とストレッチにチェックを入れています。
Bのボーンには土台のボーンに対するトランスフォーム・コンストレイトが設定されており、それを使ってBのボーンのトランスレートは土台のボーンに向けて移動させました。
すると、本来スケール継承をオフにしたため変わらないはずのBのスケールが変化するようになりました。
Aのスケールは継承されないはずなのですが、トランスフォーム・コンストレイトにわずかでも数値が入るとスケールの継承が復活しているようです。
verは4.1.08Proです。Spineのデータも添付しています。
この問題を避け、スケール継承設定が変わらない方法があればお教えいただけると助かります。よろしくお願いします。
ページ 1 / 1
kakudai
添付ファイルを見るにはパーミッションが必要です
4 months ago
- kakudai
- 記事: 6
Misaki
こんにちは、具体的なSpineプロジェクトを添付していただきありがとうございます!
ひとまず解決法としましては、
ただ、なぜ
分かり次第またこちらのスレッドに返信させていただきます。
---
もう一つ解決策として、
ひとまず解決法としましては、
B_Arm_IK
のミックスを0にした状態でのB_Arm
の回転角度を0にすると直るようです。以下は実際に試した際の動画です。ただ、なぜ
B_Arm
の元々の回転角度が影響するか、その理由については少々確認のお時間をいただけますと幸いです。分かり次第またこちらのスレッドに返信させていただきます。
---
もう一つ解決策として、
B_Arm
の回転の継承をオフにすると解決するようです。いずれにせよ回転の値が影響を与えているようですが、原因の詳しい説明については今しばらくお待ちください。 4 months ago
-
Misaki - 記事: 1157
kakudai
動画付きでの詳しい解説ありがとうございます!
IKを設定する段階でのボーン角度のズレに関しては盲点でした、教えていただいた二つの解決策を問題が起きたスケルトンにも試してみます。
お手数おかけしますが、この問題の詳細な原因が解明しましたらまたご返信頂けますよう、どうぞよろしくお願い致します。
IKを設定する段階でのボーン角度のズレに関しては盲点でした、教えていただいた二つの解決策を問題が起きたスケルトンにも試してみます。
お手数おかけしますが、この問題の詳細な原因が解明しましたらまたご返信頂けますよう、どうぞよろしくお願い致します。
4 months ago
- kakudai
- 記事: 6
Misaki
回答をお待たせしてしまい申し訳ありません。
調査の結果、トランスフォームコンストレイントとIKコンストレイントの2つのコンストレイントを適用する場合、まず最初のコンストレイントがワールドトランスフォームを変更し、Boneの
そして残念ながら、この問題は影響範囲が広く、バージョン4.1のパッチアップデートで修正するにはリスクが高すぎるため、4.2-betaにて修正を行わせていただきました。修正されたコードは以下のコミットでご確認いただけます。
https://github.com/EsotericSoftware/spine-runtimes/commit/efb015ef4eb89f2b1cf205e469cc311632d7217c
(申し訳ありませんが、Spineエディターの4.2-betaはまだリリースしておりません。)
また、改めましてこの問題の回避方法につきまして、先日「回転の値を直すか継承を無効にすることで修正可能」とお伝えしましたが、この方法では親ボーンが回転した場合にまた同様の不具合が発生する可能性があるため、バージョン4.1での最も安全な回避方法は「継承の無効化を使用する場合には使用するコンストレイントを1つだけにする」こととなります。
ご不便をおかけしてしまい申し訳ありませんが、何卒ご理解いただけますと幸いです。
調査の結果、トランスフォームコンストレイントとIKコンストレイントの2つのコンストレイントを適用する場合、まず最初のコンストレイントがワールドトランスフォームを変更し、Boneの
updateAppliedTransform
メソッドを呼び出しますが、ここで無効な継承が考慮されていないという問題があることが分かりました。そのため、2番目に適用されるコンストレイント(今回の例ではIKコンストレイント)が計算ミスのあるトランスフォームを適用してしまい、誤った結果を生み出してしまうということでした。そして残念ながら、この問題は影響範囲が広く、バージョン4.1のパッチアップデートで修正するにはリスクが高すぎるため、4.2-betaにて修正を行わせていただきました。修正されたコードは以下のコミットでご確認いただけます。
https://github.com/EsotericSoftware/spine-runtimes/commit/efb015ef4eb89f2b1cf205e469cc311632d7217c
(申し訳ありませんが、Spineエディターの4.2-betaはまだリリースしておりません。)
また、改めましてこの問題の回避方法につきまして、先日「回転の値を直すか継承を無効にすることで修正可能」とお伝えしましたが、この方法では親ボーンが回転した場合にまた同様の不具合が発生する可能性があるため、バージョン4.1での最も安全な回避方法は「継承の無効化を使用する場合には使用するコンストレイントを1つだけにする」こととなります。
ご不便をおかけしてしまい申し訳ありませんが、何卒ご理解いただけますと幸いです。
4 months ago
-
Misaki - 記事: 1157
kakudai
想像以上にお早い回答を頂けて助かります!
問題の原因、また修正内容と修正タイミングの理由についても簡潔かつ具体的な説明を頂けたお陰で素人の私でもすぐに理解できました。
バージョン4.2では修正されているとのことで安心しました、リリースを待ちつつ新たなコンストレイントの使用については少し制限してみます。
詳しく調査して頂き本当にありがとうございました!
問題の原因、また修正内容と修正タイミングの理由についても簡潔かつ具体的な説明を頂けたお陰で素人の私でもすぐに理解できました。
バージョン4.2では修正されているとのことで安心しました、リリースを待ちつつ新たなコンストレイントの使用については少し制限してみます。
詳しく調査して頂き本当にありがとうございました!
4 months ago
- kakudai
- 記事: 6
Misaki
ご返信いただきありがとうございます!あらかじめ問題の再現が可能なSpineプロジェクトをご用意いただいていたおかげで早期に原因を突き止めることができました。詳細なご質問をいただき誠にありがとうございました。
また何か気になった点や不具合と思われる挙動がありましたらぜひこちらのフォーラムへご投稿いただけますと幸いです。
今後ともSpineをよろしくお願いいたします。
また何か気になった点や不具合と思われる挙動がありましたらぜひこちらのフォーラムへご投稿いただけますと幸いです。
今後ともSpineをよろしくお願いいたします。
4 months ago
-
Misaki - 記事: 1157
Mark topic unread
• ページ 1 / 1
Return to 日本のSpine ユーザー
- All times are UTC