오늘은 본격적으로 시뮬레이션을 적용해 보았습니다.
pack을 하지 않은 결과, 그리고 pack의 위치가 다른 2개의 상황을 만들었습니다.
그리고 dopnet으로 설정을 잡았습니다.
결과를 확인하면 팩된 결과와 단지 결과는 당연히 결과가 다릅니다.
pack 노드가 달린 위치가 다르기 때문에 sim의 결과가 달라 나오는 것을 확인할 수 있었습니다.
카메라는 고정하여 43프레임을 확인한 결과입니다.
이런 다른 결과가 나오는 이유는 깊게 들어가면 너무 길고 나중에 설명해준다고 합니다.
joy of vex의 후반에 quaternion과 orient를 배웠습니다만, vector4 정보로 물체의 instancing을 도와준다고 합니다.
각 과정을 TWA씨가 설명해 주셨습니다.
팩되지 않은 소스도 프로세스로 팩을 해주고 언팩해서 우리에게 보여준다고 합니다.
이 때 포장되어 두 결과의 pivot가 다르기 때문에 다른 결과가 나온다고합니다.
이는 피벗이 orient의 결과에 영향을 미치기 때문입니다.
이번에는 initial 정보와 physical을 다루었습니다.
rubbertoy를 꺼내 불필요한 정보를 지워 팩 해 주었습니다.
그리고 rubbertoy의 위치를 y축으로 이동해 보았습니다만, 밖에서 transform을 해주지 않고 Initial State를 활용해 위치를 올릴 수 있습니다.
좀 더 간단하지만, 이 방법은 만사형이 아닙니다.
이번에는 복사하여 두 개의 packedobject를 만들었습니다.
각 노드에 개별적으로 Initial state를 변경해도 잘 적용된다는 것을 알 수 있습니다.
이번에는 세 번째 rubbertoy를 추가했습니다.
그리고 merge로 묶어 하나의 소스로 만들었습니다.
pack_multi의 결과를 확인해 보면, 다른 pack 과정에 의해 들어가, 각각 다른 결과를 얻는 것을 확인할 수 있습니다.
이번에는 merge 된 후에 pack을 해 주었습니다.
아래의 결과와 같이 하나로 모아서 움직이는 것을 볼 수 있습니다.
이렇게 pack이 어느 시점이 되었는지에 따라 완전히 다른 결과가 나올 수 있습니다.
이번에는 각 객체의 vel 값을 다루었습니다.
z축에 vel 값을 주면 전방으로 나오는 것을 확인할 수 있습니다.
이때 rotation 값이 부러진 친구에게 y축으로 vel 값을 주면 머리 방향으로 날아가는 것을 볼 수 있습니다.
이러한 직관적이지 않은 결과 때문에 vel의 값을 외부에서 결정하는 것을 선호한다고 가정합니다.
방향이 어긋나지만 위로 올라가는 것처럼 보입니다.
이와 같이 dopnet 내의 packedobject 로 값을 지정해 주면 rotation 치에 영향을 받지만
외부에서 미리 설정해두면 더 글로벌하게 직관적으로 영향을 주는지 확인할 수 있습니다.
외부에서 값을 지정하는 이유는 여러 소스를 만드는 상황이 아니라 pack_multi와 같이 여러 소스를 하나의 소스로 호출하여 사용하는 경우가 많기 때문입니다.
이번에는 Angular Velocity를 다루었습니다.
회전하는 정도입니다만, 이 부분도 밖에서 지정해 주는 일도 있어, 안에서 지정해 주실 수 있습니다.
이때 회전은 Angular Vel에 많은 영향을 미칩니다.
그 이유는 축이 바뀌기 때문입니다만, 쿼터니온과 오리엔트를 생각하면 됩니다.
이번에는 세팅을 바꾸어 보았습니다.
두 사람을 묶어서 pack_a 하나는 pack_b로 잡았습니다.
dopnet에서 객체의 이름을 적어두면 결과 만 나오는지 확인할 수 있습니다.
물론 dopnet에서 객체 이름을 지정합니다.
이번에는 physic을 다루었습니다.
무거운 정도, density, mass, 튀는 정도 bounce, 마찰력 friction가 있습니다.
오늘 설명한 예는 sphere가 box에 충돌하는 예입니다.
공의 회전을 보기 위해서 띠를 만들어 주어 위치를 세팅해 주었습니다.
dopnet 설정에서 Guide Geo를 보면 우리가 알고있는 sphere의 모습과 약간 다르다는 것을 알 수 있습니다.
collision padding 값을 0으로 낮추면 우리가 아는 형태로 변형됩니다.
더 가벼운 방법이 있지만, geometry representation 을 Sphere 로 바꾸면 다음과 같이 바뀝니다.
이번에는 copy to points에서 시뮬레이션에 필요한 Initial value 값을 만들었습니다.
@P 값에 벡터 값을 추가하여 위치를 결정했습니다.
그리고 @v의 값으로 비행하는 힘을 결정하십시오.
@w에서 회전에 관한 내용을 추가했습니다.
회전의 값이 바뀌면 충돌 후 결과에 영향을 줄 수 있습니다.
당구에 비해 설명해 주었는데, 곧 이해했습니다.
당구를 매우 좋아했습니다.
이번에는 박스 측에 density로 무게를 설정했습니다.
무겁게 설정하면 상자를 누르지 않고 공이 단지 튀어 나오는 것을 볼 수 있습니다.
다음은 공 마찰과 반송을 다루었습니다.
마찰력이 없으면 뒤로 이동하지만 전방으로 구르는 상황도 만들 수 있습니다.
여러 트윅을 해 보면서 결과를 보고 있기 때문에, Initial value를 밖에서 조정하는 것이, 확실히 보다 직관적이고 오가지 않아도 좋을 것 같습니다.
오늘은 과제가 있어 진행해 보았습니다.
색상도 바꿔야 하지만 시간이 너무 늦어서 시뮬레이션이 잘 작동하는지 확인하고 내일 색을 바르어야 ㅜㅜ
볼륨의 화려한 시각적 결과를 넘어서서 조금은 느슨해지지만, 새로운 개념을 배우는 것은 항상 즐거운 일이라고 생각합니다.
오늘의 핵심은 팩이 어디로 달리는지에 따라 달라지는 시뮬레이션 효과가 아닐까 생각합니다.
이 부분을 잘 이해하고 과제를 진행하는데 큰 어려움이 없었던 것 같습니다.
오늘도 좋다 강의와 아이디어를 제공해 주시는 TWA에 감사하고 내일의 공부 일기로 만나보세요
https://www.twahoudini.com/home-old