본문 바로가기
언리얼엔진 개발/VR

[UnrealEngine5] VR 나사 돌리기 만들기(2)

by yeni_0224 2023. 5. 12.
728x90
반응형

https://yeni-0224.tistory.com/entry/UnrealEngine5-%EB%82%98%EC%82%AC-%EB%8F%8C%EB%A6%AC%EA%B8%B01

 

[UnrealEngine5] VR 나사 돌리기 만들기(1)

VR 게임 나사 돌리기 유사 시뮬레이션? VR Screw Simulation https://yeni-0224.tistory.com/entry/UnrealEngine%EB%B2%84%ED%8A%BC%EC%9D%84-%EB%88%84%EB%A5%B4%EB%A9%B4-%EB%AC%B8-%EC%97%B4%EA%B3%A0-%EB%8B%AB%EA%B8%B0-C-1 [UnrealEngine5]버튼을 누

yeni-0224.tistory.com

 

VR 나사 돌리기 게시물 2번째
Unreal 5 Screw Simulation

 

나사가 드라이버의 움직임에 따라 실제 물리적으로 돌아가게 하려면 물리의 깊숙한 곳 까지 들어가야하기 때문에 나사가 실제 드라이버에 따라서 움직이도록 나사를 "연기" 시키는 것이다. 처음에는 정말 드라이버의 움직임까지 따라오도록 하려고 했지만 할 수 없었다.

 

일단 나사가 돌아가도록 시도하려고 했던 방법 중 한가지를 먼저 소개하고자 한다.

정말 많이 이것저것 해보았지만 정말 오~~랜만에 눈에 띄는 변화를 발생시켰던 방법이었다. 물론 이 방법을 사용할 수는 없었다. 이것은 이후에 다시 언급하겠지만, 이 방법은 현직에 계시는 분들도 정말 어려워하는 부분이라고 하셔서 다른방법을 찾아야만 했다. 아쉽지만, 내가 구현해낼 수 있는 영역이 아니었지만 그래도 이런 방법도 있다 라고 소개하고싶었다. 나사가 아닌 다른 곳에서 충분히 활용하기 좋은 내용이라고 생각하기 때문이다.

 

나사 돌리는 것을 어려워했던 이유 중 하나는

Attach to Actor을 사용하여 자석처럼 Screw Driver에 나사가 달라붙도록 했을 때 나사가 자유분방하게 움직였기 때문이다.

Driver에 완전히 붙어있기 때문에, 벽에 고정되어있는 나사를 돌리는 그 그림을 만들어낼 수 없었다. 나사의 회전축을 한쪽으로만 고정할 수 있는 작업이 필요했는데, 그 작업을 하려고 하면 항상 나사가 이상한 방향으로 튀었다. 그런 현상을 이해하고 수정하기까지 굉장한 고민과 시간이필요했다.

 

결국 Attach to Actor을 사용해서 작업하지 않는 대신에 나사의 회전, 위치를 고정시킬 수 있는 방법을 알아냈다.

나사의 Physics를 켜고

Screw BP . MeshComp Details.

BoxComp에도 있지만 BoxComp로 충돌감지만 하도록 하기 위해서 BoxComp에는 하지 않았다.

Simulate Physics를 켜고 Constraints에서 Lock Position, Lock Rotation에서 원하는 방향만 남겨두고 체크해주었다.

(나는 Lock Rotation의 Y만 제외하고 나머지를 체크했다)

 

Constraint는 생각보다 굉장히 유용하게 쓸 수있다. 줄을 특정 위치에 고정시키고 움직이게 한다거나, 한쪽 축을 기준으로 회전할 수 있도록 해준다거나 등등 이것 말고도 많은 곳에서 사용할 수 있으니 알아두면 좋을 기능인 것 같다

https://docs.unrealengine.com/5.0/en-US/constraints-user-guide-in-unreal-engine/

 

Constraints User Guide

Physical joints used to connect two simulated rigid body objects together.

docs.unrealengine.com

 

>> 결과

나사에 닿으면 돌아가지만 바들바들 떨리는 현상, 회전축을 고정시켰음에도 불구하고 다른 회전축으로 기울어지는 현상이 발생했다. 그런데 조금만 돌렸음에도 계속해서 나사가 회전하는 현상이 발생했다.

 

>> 수정

Linear Damping, Angular Damping의 값을 조정해주었다.

출처 : 네이버 지식백과

내가 이해한 바로는 물체의 마찰을 이야기하는 듯 하다. 그러니까 나사를 돌렸을 때 계속 회전하는 이유는 물체의 마찰력이 없기 때문에 조금만 힘을 줘도 끊임없이 계속 회전할 수 있었던 것이다.

https://docs.unrealengine.com/5.0/en-US/physics-damping-in-unreal-engine/ 

 

Physics Damping

Properties and methods used to cause physical objects to resist movement.

docs.unrealengine.com

Linear Damping, Angular Damping을 사용한 후 결과

>> 50, 100 이렇게 값을 줬더니 확실히 처음 회전시켰을 때보다는 덜 회전하고, 회전도 금방 멈추었다.

 

하지만 외면하고 싶은 사실

코드로 나사를 회전시킨 것이 아니라 Physics로 회전시킨 것이다.

코드로 회전시킨 방법은 다음 게시물에 계속..

728x90
반응형