teri_kim의 등록된 링크

 teri_kim로 등록된 네이버 블로그 포스트 수는 22건입니다.

VR Overlay UI 사용법 [내부링크]

HMD에 UI를 붙여 사용하는 것은 최대한 피하는 것이 좋지만 만약에 반드시 사용해야될 이유가 있다면 Steam VR에서 기본적으로 제공하는 SteamVR_Overlay 스크립트를 사용을 추천드립니다. 기본적으로 HMD에 붙은 UI를 사용자에게 멀미를 유발할 확률이 매우 큽니다. 또한 프레임에 따라 UI가 HMD를 부드럽게 따라오지 못하는 경우가 자주 생깁니다. 이는 착용자에게 멀미를 유발할 수 있습니다. 위 문제를 최소한 줄이기 위해서는 SteamVR_Overlay를 스크립트를 사용이 필요합니다. CameraRig 프리팹 하위의 Camera 오브젝트에 Steam VR_Camera 컴포넌트를 추가합니다. 위 스크립트를 추가하지 않을 시, Overlay에 할당한 텍스쳐가 Camera의 위.......

VR Hinge Joint 이용해서 문 열기 [내부링크]

VR에서 Unity 엔진 자체의 물리기능을 이용해서 Hinge 조인트를 조종하려면 해당 Joint가 달린 오브젝트를 움직여야합니다. 만약 단순히 Joint가 달린 오브젝트를 움직인다면 물리기능 오류로 인해 예상치 못한 움직임이 나오거나 Hinge Joint의 범위를 벗어나는 등의 오류가 생길 수 있습니다. 위 문제를 해결하려면 아래 방법을 따라해보시길 바랍니다. 첫번째로 두개의 스크립트를 작성합니다. 두번째로 해당 스크립트를 각각 다른 두개의 오브젝트에 붙여줍니다. 위 이미지와 같이 HingeGrabControll이 달린 오브젝트 하위에 HingeHandler가 달린 오브젝트를 넣어줍니다. Handler 오브젝트에는 Fixed Joint를 추가해 문에 해당하는 오브젝트.......

Unity Photon 오브젝트 동기화 [내부링크]

photon은 에셋스토어에서 무료로 사용할 수 있는 에셋 중 하나로 간편하게 멀티플레이를 구현할 수 있게해줍니다. 일단 시작을 위해서 아래 에셋스토어에서 포톤을 다운받아 프로젝트에 임포트시켜줍니다. 일단 빠르게 시작하기 위해서 기본적으로 제공하는 예제 스크립트를 사용하겠습니다. 룸과 플레이어 생성은 다음에 자세히 알아보도록 하겠습니다. 빈 오브젝트를 하나 생성한 후, 아래와 같이 스크립트를 붙입니다. 이제 플레이 시키면 룸이 생성됩니다. photon에서 오브젝트를 동기화 하려면 오브젝트에 photon Trnasform View 스크립트를 붙여야합니다. Position과 Rotation을 해당요소들이 동기화됩니다. Scale은 loseey scale(스케일 뒤.......

Unity Photon RPC 사용 [내부링크]

RPC(Remote Procedure Call)은 Photon에서 중요한 기능입니다. RPC를 통해 모든 클라이언트들에게 동일한 함수를 실행시킬 수 있습니다. RPC를 사용하려면 버퍼에 등록시키고자 하는 함수 위에 [PunRPC]선언을 해야하며 RPC선언을 하기위해서는 Photon.Pun using 선언을 해줘야합니다. 다음으로 함수를 호출하는 부분인 Awake에서는 위와 같이 작성해야합니다. RPC에 등록한 함수 이름을 적고, 두번째 입력란에서 타겟을 설정한 후 함수에 들어갈 인자를 적어줘야합니다. 인자가 늘어나도 동일하게 작성하면 됩니다. pv는 photonView 스크립트로 다른 오브젝트에 붙어있는 pv를 사용할 수 없으며 RPC를 선언하는 스크립트가 붙은 오브젝트에 붙은.......

Android Gradle 지정사용 시, AndroidX 오류 해결 [내부링크]

안드로이드에서 Gradle을 지정해서 빌드 시, 위와 같이 AndroidX 가 enabled되지 않아 실행할 수 없다는 오류가 발생하는 경우가 있습니다. 해당 오류 발생 시, 위 링크에서 안드로이드 스튜디오 설치 후, 다운로드한 Gradle 폴더를 열어줍니다. Gradle은 위 링크에서 다운로드할 수 있습니다. 제 경우에는 Gradle 5.6.4 binary only 버전을 다운로드 받았습니다. 다운받은 Gradle의 경로를 찾아 아래와 같이 유니티에 적용해줍니다. 위 사진과 같이 다운로드한 Gradle을 안드로이드 스튜디오를 이용해 열어줍니다. 처음 파일을 오픈할 시, build.gradle, gradle.properties, settings.gradle파일은 존재하지않습니다. androidx 오류를 해결하기.......

DOTween DOvirtual.delayedCall 사용법 [내부링크]

Dotween의 DoVirtual 기능을 사용하면 일반적인 함수도 코루틴 처럼 특정 구문실행에 딜레이를 줄 수 있다. 위 처럼 Dotween에서는 람다식을 사용할 수 있는 기능들이 많다. 하나 더 OnComplete 기능 적고 가겠다.

외부 URL을 통해 Unity 어플리케이션 실행하기 [내부링크]

첫번째로 AndroidManifest에서 Intent filter 설정을 통해 MainActivity를 실행시켜줍니다. 작성자가 사용한 유니티 버전은 (2019.4.17f1) 입니다. 매니페스트를 수정하여 사용하기 위해선 플레이어 세팅에서 Custom Main Manifest를 체크해줍니다. 하단의 매니페스트 경로에 들어가 xml 파일은 오픈한 뒤 위와 같은 매니페스트 파일의 activity 구문 하단에 아래와 같은 Intent-filter 하나를 만들어 추가해줍니다. 추가가 되었다면 아래와 같은 모습이 되겠죠 이제 하단의 QR코드 생성 사이트에 접속하여 testApp://action 이라는 URL을 넣어 QR코드를 생성합니다. 스킴의 이름은 원하는대로 변경할 수 있습니다. 해당 작업이 완료되었다면 어.......

URP 환경에서 ARfoundation 사용하기 [내부링크]

URP에서 AR을 사용하기 위해선 귀찮지만 설정이 조금 필요합니다. URP로 업그레이드 한 이후 빌드테스트를 하는데 갑자기 검은화면만 나와서 쥰내 당황했네요. 일단 URP에서 AR 세팅을 하기 위해서는 ARFoudation, ARKit, ARCore의 버전이 3.0 이상이여야합니다. 위와 같이 Window -> Package Manager 에서 버전을 올려주세요. 제 경우에는 버전을 올렸을 때, 레퍼런스 및 어셈블리 관련 오류들이 굉장히 많이 생겼습니다. 하지만 당황하지 마세요. 프로젝트 루트 -> Packages 폴더에서 manifest.json 파일을 찾아 해당 API들의 버전을 위와 같이 변경해줍니다. 그 다음! 프로젝트에서 URP Pipeline Asset을 생성해줍니다. 그 다음 생성된.......

aab 파일 apk 파일로 변환하는 법 [내부링크]

구글 플레이스토어 정책이 업데이트 되면서 더 이상 apk 파일로 프로덕션을 진행할 수 가 없습니다. abb파일은 모바일폰에 바로 설치하는 것이 불가능하기 때문에 테스트 하는데 여러모로 불편함이 있습니다. 그래서 찾아보았습니다. abb파일을 apk파일로 변환하는 방법 아래 링크로 접속하셔서 마카로 칠한 부분의 파일을 다운로드 합니다. 다운로드한 파일과 abb파일을 같은 폴더에 넣어줍니다. 폴더를 선택한 후 Alt + D를 클릭한 후, cmd를 입력해 커맨드 창을 열어줍니다. 위와 같이 입력해줍니다. 프로그레스가 끝나면 루트에 위와 같은 apks 파일이 생성됩니다. 해당파일의 확장자를 zip으로 변경합니다. 이제 압축을 풀면 . . . . . 짜잔.......

ARFoundation 사용 시 이미지 인식점수 확인방법 [내부링크]

1. 위 링크에 접속 후 2. 밑줄 친 하이퍼 링크를 선택한 다음 3. ARCore 공식 Git-hub에 접속한다. 4. 밑줄 친 SDK를 다운로드 받고 5. 압축파일 내부에 arcoreimg.exe 파일을 찾아 압축을 해제한다. 혹시 모르니 파일 첨부 6. 이제 arcoreimg.exe가 위치한 폴더에서 커맨드 창을 연다. 7. 위와 같은 형식으로 명령문을 작성하면 이미지의 인식점수가 출력된다. 이미지 인식점수는 75점 이상인 경우에 사용하는 것이 좋으며 인식률이 과하게 낮을 시 'Failed to get enough keypoints from target image'라고 출력된다.

유니티 인터넷 연결 확인법 [내부링크]

유니티에서 간단하게 인터넷 연결을 확인하는 방법을 알아보겠습니다. 위 스크립트와 같이 작성한다면 위와 같은 방식으로 인터넷 연결 상태를 확인할 수 있습니다 인터넷 연결상태를 업데이트 루프에 넣어서 확인할 시 리소스 사용이 증가하기 때문에 가능한 범위 내에서 인터넷 연결이 필요한 부분에서만 체크 해주는게 중요합니다. 위와 같이 패킷을 전송하는 부분 직전에 해당 코드를 넣어 필요한 부분에서만 인터넷 연결을 확인해주면 큰 리소스 사용 없이 인터넷 연결을 체크할 수 있습니다. 그럼 20,000

안드로이드 11 업데이트 후 ARCORE 사용 시 필수 업데이트 사항 [내부링크]

안드로이드 11 이 후부터 보안정책이 업데이트되면서 ARCORE 기능을 사용하려면 custom gradle을 사용하여 빌드해야합니다. 안드로이드 11 이전 버전에서 잘 작동하던 어플리케이션이 11 업데이트 후 ARCORE가 작동하지 않는 경우 아래 방법을 시도해보시길 바랍니다. 첫번째로 커스텀 Gradle을 설치해야합니다. https://gradle.org/releases/ 버전은 최소 5.6.4 이상으로 다운로드 해야합니다. Preference > External Tool > Android > Gradle에서 설치한 Gradle의 패스를 지정해야합니다. ProjectSetting > Player > Android > Publish Setting > Build 로 이동한 후 Custom Main Gradle Template 과 Custom Launcher Gra.......

World Space UI 모든 오브젝트 최 상단에 렌더 하는 법 [내부링크]

VR 환경에서는 Canvas Overlay UI가 작동하지 않습니다. 만약 VR 환경에서 유니티의 UI를 이용하려면 Cavas의 설정을 World Space로 변경해 주어야만 사용 가능합니다. 하지만 World Space UI를 이용해 HMD에 UI를 붙이는 경우, UI가 오브젝트를 뚫고 지나가 UI가 오브젝트에 겹쳐버리는 문제가 발생할 수 있습니다. 이를 해결하기 위해서는 위 코드를 사용해 스크립트를 하나 만들어줍니다. 작성한 스크립트를 신 내부에 있는 오브젝트에 붙여준 다음, 인스펙터에서 항상 최상단에 렌더 시키고 싶은 UI들을 할당해 줍니다. HMD에 스크립트를 붙이는 방법이 좋은 해결책이라고 볼 수 없지만 만약 필요하다면 위 스크립트를 이용해 조금 더 깔끔한.......

유니티 이미션 인텐시티값 제어 [내부링크]

유니티에서 이미션 효과를 줄 때 HDR Color의 인텐시티에 접근하는 방법에 대해서 알려드리곘습니다. 원하는 Material을 선택하면 인스펙터창에서 Emission 부분을 확인하실 수 있습니다. Material 인스펙터의 HDR Color 탭을 클릭하면 아래와 같은 팝업이 뜹니다. 하단의 인텐시티 슬라이드를 이용하여 인텐시티 값을 늘리거나 줄일 수 있습니다. 하지만 이 부분은 스크립트에서 바로 접근이 불가능합니다. 인텐시티 값에 접근하려면 먼저 색을 지정하고 원하는 만큼의 숫자를 색상값에 곱해주면 intensity값을 지정해줄 수 있습니다. 즉 color * 5f 로 색을 지정해주면 지정해준 Material의 Intensity 값은 5가 됩니다. 위 코드를 이용하여 Mat.......

유니티 에디터 모드에서 스크립트 실행 [내부링크]

위와 같이 클래스 위에 [ExecuteInEditMode]를 써넣어주면 에디터 모드에서도 스크립트 실행이 가능합니다. 해당 스크립트 내부 업데이트문에 로그를 찍어봤습니다. 잘 찍힙니다. 위 방법을 사용하면 에디터 모드에서도 간단하게 스크립트를 테스트하실 수 있습니다.

유니티 Dissolve 효과 쉐이더 [내부링크]

유니티 쉐이더 그래프로 Dissolve 쉐이더를 만들었습니다. 사용된 프로퍼티 Dissolve Mask 그룹입니다. 노이즈 효과를 주어 불규칙적으로 사라지게 해줍니다. PBR Master의 AlphaClipThreshold(1)에 할당해줍니다. Emissive Border Mask 그룹입니다. 사라지는 영역 테두리에 Emissive효과를 주는 역할입니다. 시작부분 Clamp노드의 In 부분에 Dissovle Mask의 Out을 할당해줍니다. Emissive Border Mask는 PBR Master의 Emission부분에 할당해줍니다. 마지막으로 Albedo부분에는 프로퍼티에서 생성한 Color를 연결해줍니다. 완성 인스펙터에서 프로퍼티 값을 변경해 shader를 조작할 수 있습니다.

유니티 Dissolve Distance Shader [내부링크]

유니티에서 Dissolve 효과를 오브젝트의 위치에 대응하여 줄 수 있는 쉐이더를 만들었습니다. 사용된 프로퍼티 목록입니다. Distance Mask 부분입니다. 거리에 따라 Dissolve 시켜주는 핵심 기능을 가지고있습니다. Distance Mask의 최중 Out을 Dissolve Mask의 Add에 연결해줍니다. Dissolve Mask 부분입니다. 노이즈를 이용해 불규칙하게 사라지는 모습을 연출하기 위해 사용합니다. PBR Master의 AlphaClipThreshold(1)에 연결해줍니다. Emissive Border Mask부분입니다. 사라지는 부분의 테두리에 이미션 효과를 주는 역할입니다. 시작부분 Clamp의 In은 Dissolve Mask에서 가져옵니다. Emission 부분에 연결해줍니다. Albedo에는 프로퍼티의.......

유니티 Hinge Joint 사용법 및 문 만들기 [내부링크]

Hinge Joint를 사용하면 유니티에서 간단하게 문을 구현할 수 있습니다. Spring: Target Position으로 돌아오려는 힘, 높으면 더욱 쎈 힘으로 돌아옵니다. Damper: 높이면 객체를 움직이는데 더 큰 힘이 필요합니다. Target Position: 문이 힘을 받았을 때, 설정해준 위치(각도)로 돌아옵니다. Target Velocity: 객체가 달성하려는 속도 Force: 오브젝트가 위 속도를 달성하는데 적용되는 힘 Free Spin: 설정 시, 객체의 회전에 브레이크를 걸지 않고 가속에만 사용됩니다. Min: 최소 각도 Max: 최대 각도 Bounciness: 최대 각도에 도달했을 때 튕겨나오는 정도입니다. Bounce Min Velocity: 최소 튕김값입니다. Contact Distance: 한계치와의 접.......

유니티에서 PhotonVoice2로 음성채팅하기 [내부링크]

유니티에서 PhotonVoice2 에셋을 사용하여 간편하게 음성채팅을 구현할 수 있습니다. 에셋은 무료이며 다운로드 후, 임포트하여 이용하실 수 있습니다. Photon Voice 2의 사용을 위해서 먼저 PhotonServerSettings의 설정을 완료해야합니다. 만약 Photon에 가입되어 있으시면 생성한 어플리케이션의 ID를 App Id PUN 과 APP Id Voice에 입력해주세요. 기존에 가입하지 않으신 분들은 위 사이트에서 회원가입 후 어플리케이션을 생성해 ID를 발급받아주세요. 사용방법 포톤보이스를 사용하려면 씬에 Recorder와 Photon Voice Network 컴포넌트를 가지고있는 오브젝트를 추가해주셔야 합니다. Microphone Device에서 원하는 음성입력장치를 선택해.......

유니티 STEAM VR HTC VIVE 컨트롤러 키 맵핑 [내부링크]

유니티에서 VIVE를 컨트롤러를 이용해 키 입력을 받으려면 키 맵핑이 필요합니다. 상단 메뉴바에서 Window -> SteamVR Input을 눌러 위 창을 열어주세요. Actions 부분에서 원하는 이름의 변수명을 지정해주거나 제거해줄 수 있습니다. 변수명 설정이 끝나면 Save and Generate를 버튼을 클릭해 설정을 저장해줍니다. 변수명 지정 후, Open Binding UI 버튼을 클릭해 다음화면으로 넘어갈 수 있습니다. 이곳에서 Edit을 버튼을 클릭해 기존 키 맵핑을 변경하거나 Create New Binding을 클릭해 새로운 키바인딩을 만들 수 있습니다. Grip Trigger 등등 다양한 컨트롤러 버튼에 이 전에 설정한 버튼의 변수들을 세팅할 수 있습니다. Mirror Mode.......

유니티 URP 프로젝트 빌드 Cloth 컴포넌트 오류 [내부링크]

URP에서 Cloth컴포넌트가 붙은 오브젝트를 빌드하면 Cloth 컴포넌트가 붙은 오브젝트가 보이지않는 오류가 있습니다. 이를 해결하려면 Cloth 컴포넌트가 붙은 FBX파일의 Import setting에서 Read/Write Enabled 설정을 체크해줘야합니다. Read/Write Enabled를 허용한 뒤 빌드를 실행해보면 정상적으로 오브젝트가 보이는 것을 확인하실 수 있습니다.

Unity VR 화면전송 [내부링크]

어쩌다보면 게임화면을 다른 기기로 전송해야될 일이 생길 수 있습니다. 이 때 Klak NDI 플러그인을 사...