Live2D Viewer‎ > ‎04. 물리 연산‎ > ‎

01. 물리연산의 설정


얼굴을 돌릴 때에 맞춰 실시간으로 머리카락이 흔들리는 움직임이 붙는 물리 연산을 설정하고 내보낼 수 있습니다.


    물리 연산 설정의 추가

[프로젝트 메뉴] → [추가] → [물리 연산 설정]을 클릭합니다.

「phisics.json」이라는 물리 연산의 설정이 추가됩니다.


여기에 값을 상세하게 설정할 것이므로, [간편 설정]의 체크를 해제합니다.


간편 설정 모드의 설명은 「물리연산의 간단 설정」페이지를 참조하십시오.



 
  물리연산의 설정


여기에서는 예시로 앞머리의 흔들림을 만들겠습니다.
우선, 설정 내용이 알기 쉽도록 라벨을 변경합니다.

「p00」이라고 되어있는 라벨의 풀다운 메뉴를 오른쪽 클릭하여 나오는 「이름 변경하기」를 클릭합니다.

텍스트 박스에 「hair_front」를 입력하고 「OK」버튼을 클릭합니다.
들어가는 문자는 영문과 숫자로, 일본어는 포함하지 않도록 하십시오.

라벨을 변경하면 이렇게 됩니다.

여기서부터 [기본], [입력], [출력]탭에 각각 값을 넣어 설정해 나가겠습니다.

설정 항목에 마우스를 대면 설명이 표시되므로, 이를 참고하여 진행하면 좋을 것이라고 생각합니다.



기본 설정

[기본]탭에서 아래와 같이 설정합니다.

여기에서 설정하는 물리연산은 진자의 움직임을 베이스로 하고 있기 때문에,
진자의 이미지를 떠올리며 값을 설정하면 좋습니다.

질량
흔들리는 부품의 질량
(진자로 친다면 추의 질량에 해당)
이 값이 클 수록 흔들림이 커집니다.

거리
흔들리는 파츠의 시작점에서 끝점 까지의 길이
(진자로 친다면 끈의 길이에 해당)
이 값이 클 수록 흔들림이 느려집니다.

흔들림의 감쇠율
흔들림의 감쇠율.
이 값이 클 수록 진동이 빨리 멎습니다.



입력 설정

[입력]탭을 클릭하여 입력설정을 해나갑니다.
[ + ]버튼을 클릭하면 설정을 입력하는 창이 표시됩니다.

대화 상자가 나타나면, 다음과 같이 값을 입력합니다.


ID
흔들림에 영향을 미치는 (입력) 파라미터.
여기에서는 얼굴의 움직임에 맞춰 흔들리는 앞머리의 설정을 하고 있으므로,가로의 움직임「PARAM_ANGLE_X」(「각도 X」)을 지정합니다.

type
파라미터의 움직임의 종류.
여기에서는 얼굴의 X축 움직임의 파라미터이므로 「X」를 지정하고 있습니다.

단위 당 이동량
파라미터 값이 1 변화할 때마다의 파츠의 이동량.
여기에서는 얼굴의 각도X 파라미터 값이 1 변화했을 때의 값이므로, 현재 얼굴의 움직임과 대조해 「5mm」=「0.005m」로 하고 있습니다.
얼굴의 각도X 파라미터를 30번 움직이는 것을 상정하여 -30 ~ 30의 값으로 만들어져 있는 경우, 얼굴을 1번 움직였을 때의 이동량입니다.
type 이 각도인 경우, 단위는「°」이 됩니다.

영향도
파라미터의 변화가 흔들림에 영향을 주는 정도.
기본적으로는 「1」로 해두고, 조정 과정에서 늘이거나 줄일 수 있습니다.


[OK]버튼을 클릭하면 표에 설정 항목이 추가됩니다.


얼굴의 각도Z가 변화할 때도 머리카락이 흔들리게 하고 싶으므로, 다시 아래의 설정을 추가합니다.


얼굴의 각도 Z는 고개를 기울이는 각도 파라미터이므로 type이 「Angle」로 되어 있습니다.

이제 얼굴의 각도X와 각도Z의 영향으로 앞머리가 흔들리는 설정이 되었습니다.



출력 설정

마지막으로 [출력] 탭을 클릭하여 출력 설정을 합니다.
입력 설정과 마찬가지로 [ + ] 버튼을 클릭하여 설정을 추가합니다.

아래 그림과 같이 설정합니다.


ID
물리 연산에 의해 움직이고 싶은 파라미터
여기에 앞머리의 흔들림을 움직이고 싶으므로 「PARAM_HAIR_FRONT」(「앞머리 흔들림」)을 지정합니다.

type
물리 연산 운동의 종류
여기에서는 파라미터는 앞머리가 흔들릴 때 진자처럼 흔들리는 각도가 변화하는 움직임이므로 「Angle」을 지정합니다.

단위 당 이동량
물리 연산의 결과를 파라미터의 스케일로 보정하기 위한 값
파라미터의 움직임 폭(앞머리 흔들림의 경우, -1 ~ 1이므로 1)을, 가상적인 진자 모델에서 자주 있는 편차 록30°~45° (여기에서는 40)의 값으로 나눈 값이 기준이 되므로, 「0.025」를 설정합니다.

영향도
파라미터의 변화가 흔들림에 영향을 주는 정도.
기본적으로는「1」로 놓고, 조정 과정에서 늘이거나 줄일 수 있습니다.


이걸로 출력 설정이 완료되었습니다.

모든 설정이 되었으면 동작을 확인합니다.

모델 뷰를 드래그하거나 각도 파라미터를 변화시켜 보았을 때, 앞머리가 흔들리면 OK입니다.



설정 추가

뒷머리의 물리 연산을 추가합니다.
[ + ] 버튼을 클릭하면 새로운 물리 연산 설정을 추가할 수 있습니다.

「label」텍스트 박스에 라벨 이름을 입력하고 「OK」버튼을 클릭합니다.
「複製」에 체크하여 풀 다운 메뉴에서 선택한 물리 연산의 설정을 복제하여 추가합니다.

뒷머리의 설정은 아래와 같이 설정합니다.


머리카락의 양이 늘어났으므로, 기본 설정의 질량과 거리의 값을 2배로 하여 출력될 ID를 뒷머리의 흔들림으로 하고, 나머지는 앞머리의 흔들림과 같은 값을 설정하고 있습니다.

이와 같이, 동일한 요소의 물리 연산이 여러개 있는 경우, 기본 설정의 값을 조정하여 만들어주면 좋습니다.
추가로 조정이 필요할 때 입력・출력설정을 조정합니다.



    JSON 설정 파일 내보내기

[프로젝트] 메뉴 → [내보내기] → [물리연산]에서 JSON 설정 파일을 내보낼 수 있습니다.
액세서리나 스코트 등, 의류마다 흔들리는 것이 있다면 moc의 이름과 맞춰서 복장마다 출력합니다.

이걸로 파일 내보내기는 완료입니다.


    전형적인 설정의 예시

전형적인 설정의 예시를 소개합니다.

앞머리의 흔들림 (얼굴 각도X와 Z로의 흔들림)

이 설정을 넣어보고 나서 기본 설정으로 흔들림 상태를 조정하면 좋습니다.
또한 아래의 파라미터 값의 편차 폭을 상정한 설정 값이므로, 이와 다른 경우에는 「이동량」의 조절이 필요합니다.

얼굴 각도X : -30~30
얼굴 각도Z : -30~30
앞머리 흔들림 : -1~1




앞머리 흔들림(얼굴 각도 X와 Z + 몸의 회전 X와 Z로 흔들림)

얼굴 뿐만 아니라 몸의 회전의 영향에도 머리카락이 흔들리게 한 설정입니다.
아래의 파라미터 값을 상정한 설정입니다.

얼굴 각도X : -30~30
얼굴 각도Z : -30~30
몸 회전X : -10~10
몸 회전Z : -10~10
앞머리 흔들림 : -1~1



입력 설정에서 동일한 타입이 여러 개 있는 경우, 영향도의 값에 주의하십시오.
타입이 1개라면 영향도는 1이면 됩니다.


※ 영향도에 대해

타입이 여러개 있다면 영향도의 값의 조정이 필요합니다.

전제로서, 물리 연산은 입력 설정 표의아래에 있는 항목에서 계산됩니다.

어떻게 계산되는지는 위의 타입X에 대해 예를 들어 설명하겠습니다.


( i ) PARAM_ANGLE_X 의 영향도가 1 、PARAM_BODY_ANGLE_X 의 영향도가 1 인 경우

우선, 표의 아래에 있는 얼굴 각도 X(PARAM_ANGLE_X)에서 흔들리는 상태가 계산됩니다. 이 결과를 A 라고 합니다.
영향도가 1이므로, A가 100% 영향을 주게 되고,

1 * A = A

따라서, PARAM_ANGLE_X의 계산 결과는 A 가 됩니다.

다음은 몸 각도X (PARAM_BODY_ANGLE_X)에서 흔들림 상태가 계산됩니다. 이 결과를 B 라고 합니다.
영향이 1이므로 B가 100% 영향을 미치고, 이전 계산 결과 A는 나머지 0%의 영향을 주게 되어,

1 * B + ( 1 - 1 ) * A = B

따라서, 이 물리 연산의 최종 결과는 B 가 됩니다.

나중에 계산되는 B에 의해 A가 덮어 씌워져, 결과적으로 얼굴 회전 X는 흔들림에 영향을 주지 않게 되어버렸습니다.

이렇게 설정해선 안됩니다.

이래서는 설정한 의미가 없기 때문에, 다음과 같은 영향도 값을 변경하는 경우를 생각해 봅시다.


( ii ) PARAM_ANGLE_X 의 영향도가 1 、PARAM_BODY_ANGLE_X 의 영향도가 0.5 인 경우

우선, 표 아래에 있는 얼굴 각도 X (PARAM_ANGLE_X)에서 흔들림 상태가 계산됩니다. 이 결과를 A 라고 합니다.
영향도가 1이므로 A가 100% 영향을 주게 되고,

1 * A = A

따라서, PARAM_ANGLE_X의 계산 결과는 A 가 됩니다.

다음으로, 몸 각도 X (PARAM_BODY_ANGLE_X)에서 흔들림 상태가 계산됩니다. 이 결과를 B 라고 합니다.
영향도가 0.5이므로, B가 50%의 영향을 미치고, 이전 계산 결과 A는 나머지 50%의 영향을 미치게 되어,

0.5 * B + ( 1 - 0.5 ) * A = 0.5 A + 0.5 B

가 되고, 이 물리 연산의 결과는 0.5 A + 0.5 B 이 됩니다.

즉, A와 B의 계산 결과의 영향이 각각 절반씩이 됩니다.

얼핏 보기에는 이거면 될거라고 생각되지만, 뷰어로 설정하고 확인하다 보면 머리카락의 흔들림이 작아져 버립니다.
이것은 계산 결과에서 알 수 있듯이, 얼굴의 방향・몸의 방향에 의한 머리카락의 흔들림 상태가 절반이 되어 있기 때문입니다.

얼굴의 방향에 의한 머리카락의 흔들림은 정말 중요해서, 일반적인 모션이나 「마우스의 위치를 따라가기」에서는 얼굴 방향의 움직임이 대부분을 차지하고 있습니다.

그렇다면, 얼굴의 방향으로 머리카락의 흔들림 상태를 그대로 두고 몸의 움직임에도 머리카락이 흔들릴 수 있도록 하기 위해, 다음과 같이 영향도의 값을 변경하는 경우를 생각해봅시다.


( iii ) PARAM_ANGLE_X의 영향도가 2, PARAM_BODY_ANGLE_X의 영향도가 0.5 인 경우

우선, 표의 아래에 있는 얼굴 각도 X (PARAM_ANGLE_X) 에서 흔들림 상태가 계산됩니다. 이 결과를 A 라고 합니다.
영향도가 2이므로 A가 200% 영향을 주게 되고,

2 * A = A

따라서, PARAM_ANGLE_X의 계산 결과는 A 가 됩니다.

다음으로, 몸 각도X (PARAM_BODY_ANGLE_X)에서 흔들림 상태가 계산됩니다. 이 결과를  B 라고 합니다.
영향도가 0.5이므로, B가 50% 영향을 미치고, 이전 계산 결과인 2A는 나머지 50%의 영향을 미치게 되므로,

0.5 * B + ( 1 - 0.5 ) * 2 A = A + 0.5 B

이 되고, 이 물리 연산의 결과는 A + 0.5 B 이 됩니다.

즉, A의 결과는 그대로, B의 결과는 절반만 영향을 미치게 됩니다.

이것으로 어굴 방향에 의한 머리카락의 흔들림 상태는 그대로인 채로, 몸의 움직임에 따라서도 머리카락이 흔들리게 되었습니다.

단, 두 개의 파라미터를 합쳐서 150%의 계산 결과가 되어 있기 때문에,
2개의 파라미터가 최대 편차 폭일 때 머리카락의 흔들림이 튀지 않도록 주의하며 각 설정을 조정하십시오.


이번에는 영향도의 설정을 (iii)인 경우를 채택하고 머리카락의 흔들림을 조정했지만, 움직이는 파츠에 따라 균등하게 영향을 미치는 (ii)의 설정 쪽이 더 잘 맞을지도 모릅니다.
물리 연산의 목적에 따라 각각의 설정 값을 찾아내 보세요.

Comments