最終更新:
rt_3dcg_tips 2019年03月18日(月) 11:01:04履歴
IK、FKの切り替えなどで回転値をブレンドすることがありますが、どうしてもフリップしてしまうことがあります。
この問題は通常オイラー角で表現されている回転値を一度クォータニオンに変換してあげれば解決できます。たぶん。
eulerToQuatノードとquatAddノードを使用してブレンドすればフリップすることは無いはずです。たぶん。
![](https://image01.seesaawiki.jp/r/g/realtime3dcg/FXSffMypEq.jpg)
左が回転元のノード(main)、右がターゲット(out)
![](https://image02.seesaawiki.jp/r/g/realtime3dcg/cxMQbpu7Km.jpg)
ノードエディターで下図のように構成します。
![](https://image01.seesaawiki.jp/r/g/realtime3dcg/blGjs_YsCe.jpg)
- eulerToQuatノードを作成(2つ)
- quatAddノードを作成
- main.rotate >> eulerToQuat1.inputRotate
- eulerToQuat1.outputQuat >> quatAdd1.input1Quat
- quatAdd1.outputQuat >> quatToEuler1.inputQuat
- quatToEuler1.outputRotate >> out.rotate
- quatAdd1.input2QuatW を 1.0に変更。
![](https://image02.seesaawiki.jp/r/g/realtime3dcg/uXRSgeY6IF.jpg)
するとこのように(わかりづらいですが)元ノードの半分だけ回転する効果が得られました。
![](https://image02.seesaawiki.jp/r/g/realtime3dcg/hDU3o8SLiM.jpg)
タグ
コメントをかく