본 시리즈는 유튜브 Lusiogenic 채널의 콘텐츠를 원작자의 동의하에 재가공 한 것입니다.
본 포스팅은 아래 영상을 참고하였습니다.
# 오늘의 주제
이번 시간의 주제는 투석기의 한 종류인 트레뷰셋(Trebuchet)입니다. 언제나 그렇듯 테스트 영상은 맨 아래에 있습니다.
아래 영상에서 실제 트레뷰셋의 위력을 확인해보세요.
자, 이제 제작을 시작해보겠습니다.
# 준비물
1. 블렌더로 모델링한 트레뷰셋을 준비합니다.
다운로드 아래 버튼을 클릭하세요.
2. 언리얼 엔진에 임포트 합니다.
※ Pocket 메시를 처음에는 스켈레탈 메시로 만들었는데 자꾸 찢어지는 현상이 발생해서 스태틱 메시로 교체했습니다. 흐물거리는 재질은 아직 다루기가 어렵네요. ㅠㅠ
3. 각 메시의 콜리젼을 잡아줍니다.
정교한 물리 연산을 위해 최대한 물체의 모양과 비슷하게 잡아주는 게 좋습니다. (CPU야 미안해)
Body는 물리 시뮬레이션을 꺼줄 것이기 때문에 위 설정을 합니다. (위 옵션은 연산 비용 문제로 인해 물리 시뮬레이션이 불가능 합니다.)
위 세개 메시는 엔진에서 직접 단순 콜리젼을 생성합니다.
무게추 메시는 최고로 정교한 상호작용을 위해 미리 콜리젼을 만들었습니다. (추가 작업이 필요없음)
#구현
1. 액터 컴포넌트 구성
컴포넌트 구조는 위와 같습니다. 트레뷰셋의 몸통, 팔, 주머니, 무게추 메시 컴포넌트와 각 부위들을 연결해주는 피직스 컨스트레인트 3개, 그리고 팔과 주머니를 연결해 주는 케이블 컴포넌트 2개입니다.
2. 스태틱 메시 컴포넌트 설정
1) 몸체(Body)
Body는 Collision Presets에서 BlockAll 설정을 해줍니다.
2) 팔(Arm)
팔(Arm)의 위치를 잡고 Simulate Physics를 켜줍니다.
3) 무게추(CW, CounterWeight)
무게추의 위치입니다.
Simulate Physics을 켜주었고, MassInKg(킬로그램으로 표시한 무게)값을 임의로 5000 줬습니다. (5톤 입니다.)
4) 주머니(Pocket)
돌을 담을 포켓의 위치입니다. 여러번의 실험을 통해 그나마 돌이 발사는 되는 위치와 각도를 잡았습니다.
Simulate Physics 설정과 무게값 설정도 했습니다.
3. 피직스 컨스트레인트 설정
1) 몸체와 팔 연결(ArmConstraint)
ArmConstraint의 위치입니다.
Body와 Arm을 연결합니다. Disable Collision 설정을 켜줍니다.
올바른 회전방향만 Free로 만들어줍니다. 나머지는 Locked 입니다.
2) 팔과 무게추 연결(CWConstraint)
CWConstraint의 위치입니다.
Arm와 CW를 연결합니다.
올바른 회전 방향만 Free로 두고, 나머지는 잠급니다.
3) 주머니와 팔 연결(PocketConstraint)
PocketConstraint의 위치입니다.
Arm과 Pocket을 연결합니다.
Linear Limits를 설정합니다. 모두 제한된 범위 내에서 움직이게 만들고, Limit값을 675로 설정합니다. Limit 675는 제한 범위가 6.75미터라는 뜻 입니다.
Angluar Limits도 (ArmConstraint의 옵션과 같은) Twist만 Limited로 허용하고 나머지는 잠급니다. Twist 허용 각도는 65도입니다.
4. 주머니에 줄 연결(Cable Component)
줄이 두 개인데 위치가 동일합니다.
각 줄의 설정값입니다.
5. 테스트
사거리 지못미;
# 코멘트
장치를 조작하는 코드를 구현하지 않고 순수 물리 시뮬레이션으로만 만드는게 쉽지 않습니다. 만족스럽진 않지만 이쯤 마무리하고, 다음부터는 오기 부리지 말고 코드를 넣어야 겠다는 생각을 해봅니다..ㅠ
댓글, 피드백, 공감은 블로그 운영에 큰 힘이 됩니다.
'비현실 연구소 > [1층]물리학 실험실' 카테고리의 다른 글
Lusiogenic: 그네 (0) | 2020.10.29 |
---|---|
Lusiogenic: 피스톤 휠 (0) | 2020.10.29 |
Lusiogenic: 투석기 (0) | 2020.10.29 |
Lusiogenic: 스프링 박스 (0) | 2020.10.29 |
Lusiogenic: 여닫이 문 (0) | 2020.10.29 |