[Unity] Projects & Study/HandiLab - AR 과학 실험
-
[Unity][HandiLab] 화면터치와 UI터치 구별하기[Unity] Projects & Study/HandiLab - AR 과학 실험 2022. 7. 7. 11:37
우리 앱에서 실험을 처음 시작할 때 평면 인식 후 화면을 한번 터치하여 책상을 배치한다. 그런데 책상을 배치하려고 터치한 것이 아니라, 일시 정지하고 싶어서 좌측 상단의 정지 버튼을 누른 경우라면? 책상 배치와 정지 패널 활성화가 같이 이루어진다. 정지버튼을 터치한 것 / 책상배치를 위해 화면을 터치한 것을 구별하고 싶은데, 그렇지 못해서 두 동작이 동시에 일어나버리는 것. 이를 막기 위해서 EventSystem.current.IsPointerOverGameObject() 를 사용하면 된다. 터치한 부분이 UI이면 True, 아니면 False를 반환한다고 한다. void Update() { if (spawnedObject == null && placementPoseIsValid && Input.touch..
-
[Unity][HandiLab] AR에서의 Z축 드래그 고정[Unity] Projects & Study/HandiLab - AR 과학 실험 2022. 7. 7. 11:10
우리 AR콘텐츠 특성상? 카메라 화면 터치로 사용자와의 상호작용을 한다. 이 때 사용자 컨트롤에 따라 z축 값이 틀어지면서 collider와의 충돌감지가 불가해지고 실험 진행이 원활하지 않아지는 문제가 있었다. 처음 생각은 z값을 스크립트에서 고정시키는 것. 멘토님께도 다른 방안에 관해 여쭤봤다. 기즈모를 띄워 포지션을 컨트롤 가능하게 하는 방법 등 여러 조언을 해주셨다. 내가 생각한 방향과 사뭇 다른 해결책을 많이 들으면서, 개발에는 정말 셀 수 없이 다양한 방법이 있다는 걸 새삼 느꼈다. 그렇기 때문에 이 일이 어렵기도하고 재밌기도 한 거 같다. -> 여러 얘기들 끝에 z값을 고정시키는 것이 낫겠다는 결론이 났다 z값을 컨트롤할 스크립트를 만들어 드래그가 적용되는 오브젝트에 컴포넌트로 추가했다. Un..
-
[Unity][HandiLab] 오브젝트가 깜빡깜빡하는 효과 주기[Unity] Projects & Study/HandiLab - AR 과학 실험 2022. 7. 6. 18:09
사용자가 배양기 문을 열지 않았는데 배지를 넣으려고 시도한다거나, 여기를 터치하세요~하는 느낌 등을 줄 때 오브젝트를 깜빡깜빡거리는 강조효과를 줬다. fadeIn/out효과를 줬던 것 처럼 material의 투명도를 조절해주는 방식으로 구현하고자 했다. 투명도를 조절하려면 material의 redering mode가 opaque가 아니어야 한다. 그런데 fade나 trasparent 등 투명도 조절이 가능한 렌더링 모드를 설정해주면 천장쪽이 그려지지 않는 문제가 발생했다. 반투명 오브젝트의 핵심: 뒤의 오브젝트와 섞여야 함.(블렌딩) 엔진에서는 블렌딩을 위해 "Alpha Sorting"을 제공하고 있다. Alpha Sorting: Z-buffer(카메라 기준 깊이버퍼)를 기준으로 뒤에서부터 출력함으로써,..
-
[Unity][HandiLab] UI카메라와 Fade 효과[Unity] Projects & Study/HandiLab - AR 과학 실험 2022. 7. 6. 17:09
항생제 내성 실험에서 배지를 세균배양기에 넣은 후 1일을 기다리는 장면을 연출해야 했다. 시계가 돌아가는 애니메이션과 함께 fade in/out 효과를 주기로 했다. 1. UI에 3D Object 올리기 시계와 '1일 후' 텍스트(블렌더로 제작함)는 3d오브젝트인데 UI캔버스에 올리기 위해서 Layer를 UI로 설정했다. 그리고 UI만 찍는 UI카메라를 하나 만들어 주고 Clear Flags를 Depth only, Culling Mask에서 UI만 남겨줬다. 그런 다음 Depth를 ARSessionOrigin의 ARCamera의 Depth보다 크게 설정해서 위로 올라오도록 해줬다. fadeOut에 쓰일 Image, 시계, 3d텍스트가 담긴 Canvas의 Render Mode를 Screen Space - ..
-
[Unity][HandiLab] 디자이너를 구했다![Unity] Projects & Study/HandiLab - AR 과학 실험 2022. 7. 6. 16:28
생각보다 개발 템포가 빨라서 7월로 예상했던 UI개발을 6월에 진행했었다. 마침 Unity AssetStore에서 세일 기간이었어서.. https://assetstore.unity.com/packages/2d/gui/icons/gui-pro-kit-simple-casual-203399 GUI PRO Kit - Simple Casual | 2D 아이콘 | Unity Asset Store Elevate your workflow with the GUI PRO Kit - Simple Casual asset from Layer Lab. Browse more 2D GUI on the Unity Asset Store. assetstore.unity.com 요거를 아주 저렴한 가격에 (8000원 정도 줬던 듯) 구매했..
-
[Unity][HandiLab] 실험 가이드 - Typing효과와 Audio Source[Unity] Projects & Study/HandiLab - AR 과학 실험 2022. 7. 6. 16:12
실험을 어떻게 진행하는지 사용자에게 가이드를 하는 것은 필수다. (물을 뿌리세요, 용액을 넣으세요 등) 작년에 개발할 때는 이러한 가이드로 그냥 텍스트를 작성, 1초마다 활성화-> 비활성화하며 깜빡이는 정도의 효과를 줬었다. 이번에는 Typing효과를 통해 실험 가이드를 강조하고, AI음성 Audio Source를 추가하여 청각적인 가이드도 제공하였다. 1. Typing 효과 먼저 텍스트가 바뀌는 부분(Scene(씬의 역할을 하는 프리팹)이 바뀌는 부분 등)은 그냥 gameobject.text를 불러와 바꿔주었다. oldText라는 변수는 기존 textUI에 적혀있던 Text를 의미하며, 이게 다른 text로 바뀌면(위 사진처럼 새로운 텍스트로 설정했을 때) Update에서 감지하고 코루틴을 호출하여 타..
-
[Unity][HandiLab] AR foundation 활용[Unity] Projects & Study/HandiLab - AR 과학 실험 2022. 7. 6. 13:07
이전까지의 프로젝트에서는 AR개발에 Vuforia를 활용했었다. 그런데 Vuforia로고가 화면에 뜨는 부분이 신경쓰이기도 하고, 여러가지 방법을 공부해보고 싶어서 이번에는 AR foundation을 사용했다. 각 실험은 Prefab이고 AR에서 인식한 평면에 실험 Prefab을 spawn해 실험을 진행할 수 있다. Window->Package Manager의 Unity Registry에서 ARfoundation와 ARCore XR Plugin을 import한다. 그 외 세팅들은 https://minquu.tistory.com/219 를 참고했다. (잘 정리해주셔서 감사합니다!) AR Foundation _ 파운데이션 Rnd 먼저 URP 씬을 하나 만들어준다. 필요없는 것들을 삭제해준다. 기존에 있는 스..
-
[Unity][HandiLab] 과학실험 콘텐츠 개발 메커니즘[Unity] Projects & Study/HandiLab - AR 과학 실험 2022. 7. 6. 11:43
1. 충돌 감지 과학실험은 용액에 다른 뭔갈 넣으면 반응한다거나 하는 등 충돌에 의해 특정 반응이 일어나는 경우가 많다. 그래서 Collision이나 Trigger의 Enter / Exit이 있으면 어떤 애니메이션이 작동하게 하는 메커니즘을 토대로 한다. 아래는 그 예시이다. 멸치해부실험에서 사용자의 드래그로 내장을 떼어냈을 때, 떼어져 나간 Object의 tag를 체크하고 코루틴을 사용해서 1초 후 사라지게 했다. + 예전에는 tag비교를 할 때 == operator를 사용했었다. 그런데 CompareTag()메소드는 동적 할당 없이 tag비교를 할 수 있어서 성능 향상에 효과가 있다고 하고, 해당 태그가 실제로 있는 태그인지도 체크해주기 때문에 웬만하면 이 메서드를 활용하려고 하고있다. + Invok..