Udemy의 「【UE4】Unreal Engine 4 + VR로 건축 비주얼라이제이션」으로 도어 노브의 처리를 개선해 보았다

소개



Udemy 에서 @shop_0761 씨의 【UE4】Unreal Engine 4 + VR로 건축 비주얼라이제이션 을 해보고 신경이 쓰이는 거동이 있었으므로 개선해 보았습니다.

신경이 쓰이는 부분



이 강좌에서는 VR 내에 도어를 설치하고 컨트롤러로 도어 노브를 돌리면 도어를 열 수 있습니다.



문 손잡이를 잡으면 Pickup 이벤트가 호출되어 손 개체가 되는 Contoller를 숨깁니다.
그리고 문 손잡이를 놓으면 Drop 이벤트가 불려 Controller 를 다시 표시하고 있습니다.

이때 양손으로 문 손잡이를 잡으면 다음과 같이 먼저 잡은 손이 사라진 채로 됩니다.
  • 오른손으로 문 손잡이를 잡다
  • 오른손이 사라진다 → OK

  • 왼손으로 문 손잡이를 잡다
  • 왼손으로 다시 잡고 사라진다 → OK
  • 오른손도 사라진 채 → 잡지 않은 손은 다시 표시하고 싶다


  • 또한 어느 손에서 먼저 놓아도 이상한 일이됩니다.
  • 먼저 오른손을 놓다
  • 왼손도 놓고 다시 표시된다 → 왼손은 잡은 채로 하고 싶다
  • 오른손은 사라진 채 → 놓은 손은 다시 표시하고 싶다

  • 먼저 왼손을 놓다
  • 왼손은 다시 표시됩니다 → OK
  • 오른손은 사라진 상태 → 잡지 않은 손은 다시 표시하고 싶다


  • 이것을 나중에 잡은 손이 문 손잡이를 잡고 먼저 잡고 있던 손을 다시 표시한다.
    또 먼저 잡고 있던 손을 떼어도 아무것도 하지 않는 개선을 해봅니다.

    문 손잡이를 잡는 처리 개선



    개선에 있어서 우선은 사양을 결정합니다.
  • 나중에 잡은 손이 문 손잡이를 잡는다
  • 먼저 잡았던 손을 다시 표시
  • 먼저 잡고 있던 손을 떼어도 아무것도 하지 않는다

  • 첫 번째 항목은 실현되어 있기 때문에 나머지 2개를 개선한 것이 핑크 선으로 둘러싸인 부분입니다.


    먼저 잡은 손을 다시 표시


    Pickup 이벤트가 불려 갔을 때에 이미 잡고 있는지 판정할 수 있으면 좋기 때문에 Controller 가 유효한지 어떤지로 분기합니다.
  • Drop 이벤트에서 Set Visibility 다음에 Controller 를 파기
  • Pickup 이벤트에 Attach ToController에 대입하기 전에 IsValid 함수의 결과가 Is Valid이면 Set Visibility
    어느 쪽의 손으로 도어 노브를 잡고 있으면 Controller 를 유효, 양손을 놓고 있으면 Controller

    먼저 잡고 있던 손을 떼어도 아무것도


    Drop 이벤트가 불렸을 때 어느 손을 놓았는지 모르기 때문에 조금 막혔습니다만, VR Template로부터 가져온 BP를 개조해 실현할 수 있었습니다.



    우선은 VirtualRealityBP/Blueprints/PickupActorInterfaceDrop 의 Inputs 에 변수를 추가합니다.
    다음으로 VirtualRealityBP/Blueprints/BP_MotionControllerReleaseActor 그래프로 Drop 의 인수 DettachFromMotionController 를 연결합니다.

    이제 문 Drop 이벤트가 불렸을 때 놓은 손을 잡을 수 있게 되었기 때문에 변수 Contoller 손이므로 아무것도 하지 않는다고 판정할 수 있게 되었습니다.

    사이고에게



    VR Template를 사용하면 간단하게 잡기 처리를 실장할 수 있고, 개조도 비교적 간단하게 할 수 있으므로 도입에 추천입니다.
    여기에서 한층 더 양손으로 잡았을 때에 확대 축소하거나 여러가지 발전할 수 있을 것 같습니다.
  • 좋은 웹페이지 즐겨찾기