VRIK(FinalIK)를 적용하면 VRM의 흔들림(VRM Spring Bone)의 움직임이 이상해질 때의 대처

1637 단어 VRUnity

원인



VRIK의 FixTransforms는 흔들림의 계산 결과를 덮어 쓰고 있기 때문이었습니다.

VRIK의 FixTransforms가 어떤 것인가라고 하면, 소스 코드에는 이하와 같이 써 있었습니다.

If true, will fix all the Transforms used by the solver to their initial state in each Update. This prevents potential problems with unanimated bones and animator culling with a small cost of performance. Not recommended for CCD and FABRIK solvers.

IK로 계산되지 않은 각 Transform의 값을 매 프레임 초기 값으로 재설정하는 기능입니까?
이것은 흔들림의 Transform 값을 덮어 쓴 것 같습니다.

빼낼 수 있다면 그걸로 해결할 것 같지만, 제 경우에는 오프라고 메쉬가 풀 풀고 있었기 때문에 붙인 채로의 대처를 생각했습니다.

해결 방법



Spring Bone의 실행 순서를 FixTransforms 보다 나중에 설정한다.
ProjectSetttings>ScriptExecutionOrder를 다음과 같이 설정하십시오.



FinalIK는 가져올 때 기본값 이후에 실행되도록 설정됩니다.
그래서 SpringBone을 그것보다 나중에 실행하도록 지정해 주면 됩니다.

기타 신경 쓰는 곳



Animator가 설정되어 있는 경우에는 이를 통해 제어할 수 있으므로 확인해 보십시오.
(Animator 컴포넌트의 Controller가 null이면 아무것도 해주지 않을 것입니다.)

참고



SmoothJoint는 자산으로 머리를 흔들어 설정하면 어제는 흔들렸는데 오늘은 흔들리지 않는거야! 라고 생각하면, 어쩐지 VRIK와 경합해 스크립트 실행 순서로 움직이거나 움직이지 않거나 하고 있는 것 같다. SmoothJoint의 ScriptExecutionOrder를 FinalIK보다 나중에 움직였다. VRIK의 FixTransform 기능이 머리 흔들림을 멈추는 느낌 - 해양 프로그램 (@kaigyoPG) 2018년 1월 30일


거의 이것과 같은 내용이었습니다.


좋은 웹페이지 즐겨찾기