Unity/Unity Study

[Unity Mars] Simulation enviroments 생성하기

pnltoen 2023. 6. 20.
반응형


Unity Mars

Unity Technologies


서론

 

Unity Mars 튜토리얼을 제작하고 있습니다. 생각보다 내용이 많아져서 하나하나 분할해서 작성하고자 합니다. Mars의 경우 Unity Learn에 내용 리뷰를 진행했었는데 누락된 내용 중 꼭 필요한 내용을 분할해서 작성하고자 합니다.

 

Simulation View

 

Mars는 직접 빌드하지 않고도 실제 어떻게 AR 오브젝트가 배치되는지 확인할 수 있는 기능을 갖고 있습니다.

출처 : Untiy Learn

 

위의 사진처럼 크리스탈을 배치할 때 각 크리스탈의 distance 거리를 설정하면 어느 위치에 배치가 될 수 있는지 나타납니다. 오늘 쓸 글에서는 이 Simulation View를 어떻게 제작하는지에 관한 튜토리얼을 작성하고자 합니다.

 

인테리어 모델 선택

 

기존 유니티 코리아에서 Unity로 구현한 유니티 코리아 서울 오피스 영상이 있습니다. 내부 자료를 확인해보니 해당 파일이 있어서 해당 모델을 사용하기로 했습니다.

 

환경이 꽤나 넓기 때문에 외부인이 출입가능한 영역만 나누어서 진행하였습니다. 

 

환경 수정

본인의 환경이 이미 구현이 된 분들이라면 이 챕터는 넘어가는 것이 좋습니다. 그렇지 않을 경우 참고용으로 봐주시길 바랍니다.

 

HDRP -> URP 변환

 

AR 프로젝트를 진행하는 것에 있어서 몇가지 주의해야 할 점이 있습니다. 그 점 중 첫번째가 Graphics Pipeline 부분입니다. Mars 문서 중 Graphics 파트를 보면 다음과 같이 표를 확인할 수 있습니다.

 

 

아쉽게도 HDRP를 지원하지 않으니 URP로 변환해야 합니다. 사실 대부분의 사람들이 SRP -> URP (SRP 업그레이드) -> HDRP (SRP의 업업그레이드, URP의 업그레이드) 버전인 줄 아시는 분들이 계신데... 실상은 아예 다른 파이프이기 때문에 다운그레이드 개념이 아닌 변환을 해줘야 합니다.

 

이와 관련해서 전체를 수정할 생각을 하니 머리가 아파왔는데... 다행스럽게도 에셋스토어에 관련한 에셋이 있어서 사용하였습니다.

 

HDRP to URP Downgrader라는 에셋인데 사용 방법은 매우 간단하고 유튜브에 사용 영상도 찾아볼 수 있습니다.

 

HDRP to URP Downgrader | 유틸리티 도구 | Unity Asset Store

Use the HDRP to URP Downgrader from Queen Developer 95 on your next project. Find this utility tool & more on the Unity Asset Store.

assetstore.unity.com

내돈내산 인증...

 

튜토리얼 영상에서 확인해볼 수 있지만 HDRP와 URP의 라이트 시스템은 전혀 다르기 때문엥 Light 관련해서는 수작업으로 변경을 해줘야 합니다... 이 부분은 아쉽지만 에셋의 문제는 아니기 때문에 에셋 구매를 진행 후 프로젝트를 진행하였습니다.

 

불필요한 에셋 정리 Cleaner

 

외부인 출입 가능한 영역만 제외하고 모두 삭제하다 보니, 내부 미팅룸과 같이 불필요한 파일이 많이 존재하였습니다. 이거 어떻게 정리하지... 하다가 이전에 보았던 에셋을 사용하여 정리하기로 하였습니다.

Asset Cleaner PRO - Clean | Find References라는 에셋인데 실행 후 프로젝트 뷰에 있는 파일 중 씬에서 사용되지 않는 리소스를 찾아주고 삭제할 수 있는 기능을 제공하고 있습니다. 물론 필터 기능을 통해서 사용하지는 않지만 삭제를 방지하는 기능도 같이 제공합니다.

 

Asset Cleaner PRO - Clean | Find References | 유틸리티 도구 | Unity Asset Store

Use the Asset Cleaner PRO - Clean | Find References from GameDev Tools on your next project. Find this utility tool & more on the Unity Asset Store.

assetstore.unity.com

 

이 에셋의 경우 가격이 조금 나가지만 범용성이 높아서 구매하기로 결정하였다.

 

 

결과

 

결과물의 수준은 아직 많이 부족하지만 다음과 같이 작업하였습니다.

아트 부분은 추후에 업데이트 할 예정 본문의 주제는 얼마나 예쁘게 보이냐가 아니니까 우선은 넘어가자...

 

 

Simualtion Environment 생성

 

작성한 오브젝트 (환경) 을 Hierarchy 뷰에서 Project로 이동시킴으로써 프리팹화 합니다.

 

 

Project 뷰에서 빈공간을 우클릭하고 Create -> Mars -> Simulated Environment Prefab을 생성합니다. 

 

 

Prefab 끼리는 복사 및 붙여넣기가 가능함으로 기존에 생성한 환경 프리팹을 복사 후 Simulated Prefab으로 옮겨줍니다. 

 

이 후 프리맵의 Layer를 Mars Simulation Environment로 수정합니다.

 

 

해당 버튼을 클릭하면 childern objects도 모두 변경할 것인지 창이 나타납니다. 모두 Yes를 눌러주면 됩니다.

 

 

이 후 업데이트를 개별로 진행해야 합니다. Windows - Mars - Developer - Update Simulation Environments를 눌러서 만들어 놓은 환경을 사용할 수있게 업데이트를 진행합니다.  

 

 

Simulation View에서 생성한 시뮬레이션을 클릭합니다.

 

 

화면을 보니 뷰가 엉망이네요... 제가 보고 싶었던 뷰는 이게 아닌데... 

 

 

Mars Environment Settings에 보시면 Save Simulation Starting Pose가 있습니다.

쉽게 비유하면 Camera 오브젝트에 Align with view와 비슷한 개념입니다. 해당 버튼을 클릭하면, Prefab 화면에서 보는 Position 및 View를 따라서 카메라를 설정할 수 있습니다.

 

 

위의 화면이 Prefab 씬 그리고밑에 화면이 Device View입니다.

 

Device View는 전반적으로 쉽고 사용이 잘 되었는데 문제는 Simulation View였습니다.

 

 

우선 Simulatio View에서 위처럼 아무것도 보이지 않는 상황이 지속되었고 Play 이 후에 WASD 및 우클릭으로 뷰를 움직여도 크게 달라지는 점이 없었습니다. 사실 여기서 몇일동안 시간을 뺏겼고... 흥미를 다 잃어 버렸는데 결국에 문제는 바로... 별거 아니였다.

 

 

해당 뷰를 클릭해서 ISO가 아닌 뷰로 바꾸면 정상적으로 출력된다. 중간중간 보이지 않는 부분이 있는데 해당 부분은... 천천히 알아보도록 하자.

 

 

완전 키포인트... 아니 1.5.0 최신 버전이 더 문서가 xx이다. 내용이 여기저기 다 흩어져 있고 많이 삭제가 되었음.

X-Ray를 사용하려면 결국 Mars Shader를 이용해야 한다. 해당 Mars Shader는 Assets\UnityXRContent\MARS\SimulationEnvironments\Common 경로에 있다 또는 직접 만들고자 할 경우 Shader에서 Mars X-Ray를 선택해야 한다.

 

개인적으로 이 부분이 너무 헷갈려서 이것저것 테스트 및 정리를 해보았다.

 

Clipping Region

 

쉽게 이야기 하면 culling과 관련된 내용이다. 예를 들어서 아파트 내부를 시뮬레이션할 것인데 아파트 자체의 모델링 파일을 사용할 경우, 아파트의 외관은 cullling을 진행해야 한다.

 

 

Pixyz의 Clip/Flip Normal 기능과 상당히 유사한데. 해당 기능은 외부면을 가시할 수 있도록 아예 삭제를 해주는 기능이라면 Mars 쉐이더를 통한 Clipping은 카메라에서 culling 하는 차이라고 할 수 있다.

 

출처 : Unity Mars Document

 

예시 사진이 좀 잘못된 것 같다...위에 사진이 이해하기 쉽지는 않지만... 개념자체는 가장 잘 표현한 사진으로 생각된다.

 

우선 Floor와 Ceiling에 대해서 먼저이야기 해보자. 두 영역은 모두 culled되는 영역이다. 위의 사진에서는 아무것도 안보이지만 실제는 벽면이 있어서 Culling이 되었다고 생각하자.

 

 

테스트 하기 위해만든 환경은 다음과 같다.

 

 

붉은색 오브젝트는 모두 카메라 이동에 따라 Culled가 될 오브젝트이다. 위의 Gif를 보면 카메라 각도에 따라 오브젝트의 렌저가 바뀌는 것을 알 수 있다. 

 

자세히 보면 안에 있는 나머지 2개의 붉은 공도 Culled 처리 되는데 이는 Floor, Ceiling, Interior가 아닌 View Bounds 영역 밖임으로 Culled가 되는 것을 확인할 수 있다.

 

진짜 간단한데 Shader 부분이 문서에 없고 View point 때문에 몇일을 날렸음... 하... 문서보실 분은 Mars 1.5.0 절대 보지 마시고 1.3.0과 1.4.1 다 읽어보시는 것을 추천드립니다.. 

반응형

댓글