목록[Unity] Projects & Study/HandiLab - AR 과학 실험 (10)
예지의 테크 로그포스 (Yeji's Tech Log Force)
우리 앱에서 실험을 처음 시작할 때 평면 인식 후 화면을 한번 터치하여 책상을 배치한다. 그런데 책상을 배치하려고 터치한 것이 아니라, 일시 정지하고 싶어서 좌측 상단의 정지 버튼을 누른 경우라면? 책상 배치와 정지 패널 활성화가 같이 이루어진다. 정지버튼을 터치한 것 / 책상배치를 위해 화면을 터치한 것을 구별하고 싶은데, 그렇지 못해서 두 동작이 동시에 일어나버리는 것. 이를 막기 위해서 EventSystem.current.IsPointerOverGameObject() 를 사용하면 된다. 터치한 부분이 UI이면 True, 아니면 False를 반환한다고 한다. void Update() { if (spawnedObject == null && placementPoseIsValid && Input.touch..
우리 AR콘텐츠 특성상? 카메라 화면 터치로 사용자와의 상호작용을 한다. 이 때 사용자 컨트롤에 따라 z축 값이 틀어지면서 collider와의 충돌감지가 불가해지고 실험 진행이 원활하지 않아지는 문제가 있었다. 처음 생각은 z값을 스크립트에서 고정시키는 것. 멘토님께도 다른 방안에 관해 여쭤봤다. 기즈모를 띄워 포지션을 컨트롤 가능하게 하는 방법 등 여러 조언을 해주셨다. 내가 생각한 방향과 사뭇 다른 해결책을 많이 들으면서, 개발에는 정말 셀 수 없이 다양한 방법이 있다는 걸 새삼 느꼈다. 그렇기 때문에 이 일이 어렵기도하고 재밌기도 한 거 같다. -> 여러 얘기들 끝에 z값을 고정시키는 것이 낫겠다는 결론이 났다 z값을 컨트롤할 스크립트를 만들어 드래그가 적용되는 오브젝트에 컴포넌트로 추가했다. Un..
사용자가 배양기 문을 열지 않았는데 배지를 넣으려고 시도한다거나, 여기를 터치하세요~하는 느낌 등을 줄 때 오브젝트를 깜빡깜빡거리는 강조효과를 줬다. fadeIn/out효과를 줬던 것 처럼 material의 투명도를 조절해주는 방식으로 구현하고자 했다. 투명도를 조절하려면 material의 redering mode가 opaque가 아니어야 한다. 그런데 fade나 trasparent 등 투명도 조절이 가능한 렌더링 모드를 설정해주면 천장쪽이 그려지지 않는 문제가 발생했다. 반투명 오브젝트의 핵심: 뒤의 오브젝트와 섞여야 함.(블렌딩) 엔진에서는 블렌딩을 위해 "Alpha Sorting"을 제공하고 있다. Alpha Sorting: Z-buffer(카메라 기준 깊이버퍼)를 기준으로 뒤에서부터 출력함으로써,..
항생제 내성 실험에서 배지를 세균배양기에 넣은 후 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 - ..