https://www.youtube.com/watch?v=yLH9Gj1cO6U&list=PLATff1khpIscTMN2KXxagrTkBCwdzOeol&index=3

 

일단 유니티 사이트에서 유니티 허브를 설치

아이디 생성후 로그인후 유니티 에디터를 설치해야함

Archive탭에서 Download archive를 클릭해

21.3.39f1을 설치한다. 강의하시는 선생님이 이버전을 사용해서인데 최신버전을 사용해도 된다.

허브가 자동으로 열린다.

Anidroid Build Support를 체크후 Continue한다 2022가 있는데 2019를 꼭 갈아야하는지는 모르겠다.

비주얼스튜디오도 설치하고

유니티게임개발을 체크해준다.

 

유니티 허브를 열고 프로젝트를 만들자

3D를 선택하고 경로는 한글로만 되어야 한다.

 발드를 위한 설정을 위해 Fie>Buid Settings로 들어간다. windows에서 Android로 바꾸고 Switch Platform

 

windows 메뉴에서 Package Mannage를 열고 AR은 올인원 패키지라 용량이 크므로 개별로 설치하자

밑으로 내려가면  AR Foundation을 선택후 오른쪽 아래 install을 누른다

다음은 구 플래폼을 위해 AR Core를 설치한다. ios라면 ARKit같이 다른걸 해야한다.

Edit>ProjectSettings>왼쪽아래 PlayerSettings를 클릭하고

Quality카테고리에서 안드로이드를 Mediaum으로 체크한다. 

Player카테고리의 OtherSetting Color Space를 Gamma에서 Linear로 변

앱의 이름및 버전을 설정할 수도 있다.

밑의 Auto Graphic API를 해제후 Graphics API창이 나타나는데

모바일에서 지원안하는 vulkan을 -를 눌러 지워준다.

조금더 아래 Multithreaded Rendering을 체크해주자

아래 Minimum API Level을 Android 7.0으로 바꾼다. Nuga 

Scripting Backend를 IL2CPP, API Compatibility Level을 .NET Framework로 변경한다.

ARM64 채크

XR Plug-In Management 카테고리로 이동후  ARCore를 체크해주면 된다.

게임를 Simulator로 변경후 자신의 안드로이드 기종으로 변경한다.

적성에 맞게 윈도우  패널들을 재 배치한다 모바일 개발은 수직방향이라 다음과 같이 배치했다.

설치가 잘되었다면 빌드가 잘되어야 하는데 스마트폰 드라이브를 깔고 스마트폰을 연결해야 하는것 같다.

스마트폰 드라이버는 당연히 자신의 핸드폰 메이커에 맞는걸 메이커 사이트에가서 다운 받아야 한다.

스마트폰 설정 버전에가서 열심히 두들겨 개발자 모드로 진입하고 디버깅허용한후 케이블 연결하면 다른건 할필요 없고 기다리면 디버깅 허용할꺼냐고 물어보면 승인한다.

나중에 빌드하면 인증안된 앱을 깔꺼냐고 물어보는데 이것도 눌러야한다. 이것 안하고 빌드앤런 누르면 마지막에 멈쳐있다. 니 연결을 체크하는 에러 메세지가 난다. 

 

https://blog.naver.com/kal9107/223003398900

 

유니티 엔진 모바일 디버깅하는 방법

#유니티 #모바일 #디버깅 디버깅 환경이 갖춰져야 원활한 개발이 가능하다! 모바일 게임을 만들던 도중 유...

blog.naver.com

 

설정이 잘되어 있다면 하이라키에서 우클릭하면 XR 관련 팝업리스트가 보여야 한다.

이중 AR Session, AR Session Origin은 무조건 추가해야하고 AR Session Origin에 AR Camera가 있기 때문에 하이라키 맨위 Main Camera는 지워준다.

 

'AR > AR Foundation' 카테고리의 다른 글

[유니티 AR] 디버깅을 위한 빌드 테스트  (1) 2024.07.02
소개  (0) 2024.07.02
iOS / Unity 2022.3.5f1 + AR FOUNDATION / ARKit  (0) 2024.06.30
유니티 Unity AR Foundation  (0) 2024.06.30

https://www.youtube.com/watch?v=C5taq2a3_rQ&list=PLATff1khpIscTMN2KXxagrTkBCwdzOeol&index=1

AR Foundation은 유니티에서 AR을 개발시 사용하는 통합워크플로이다.

 

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.1/manual/index.html

 

AR Foundation | AR Foundation | 5.1.5

AR Foundation AR Foundation enables you to create multi-platform augmented reality (AR) apps with Unity. In an AR Foundation project, you choose which AR features to enable by adding the corresponding manager components to your scene. When you build and ru

docs.unity3d.com

 

특징

AR Foundation은 다음 기능을 지원합니다.

특징설명
세션 대상 플랫폼에서 AR을 활성화, 비활성화하고 구성합니다.
장치 추적 실제 공간에서 장치의 위치와 회전을 추적합니다.
카메라 장치 카메라에서 이미지를 렌더링하고 조명 추정을 수행합니다.
비행기 감지 평평한 표면을 감지하고 추적합니다.
이미지 추적 2D 이미지를 감지하고 추적합니다.
객체 추적 3D 객체를 감지하고 추적합니다.
얼굴 추적 인간의 얼굴을 감지하고 추적합니다.
신체 추적 인체를 감지하고 추적합니다.
포인트 클라우드 특징점을 감지하고 추적합니다.
레이캐스트 추적된 항목에 광선을 비춥니다.
앵커 공간상의 임의의 지점을 추적합니다.
메싱 환경의 메시를 생성합니다.
환경 프로브 환경의 큐브맵을 생성합니다.
폐색 AR 콘텐츠를 물리적 객체로 가리고 인간 세분화를 수행합니다.
참가자들 공유된 AR 세션에서 다른 기기를 추적합니다.

 

AR을 개발하기 위해 플랫폼마다  개발킷이 존재하는데 이를 통합했다고 보면  되는데 지원하는 해당기능은 다음과 같다.

Feature ARCore ARKit OpenXR
Session Yes Yes Yes Yes Yes
Device tracking Yes Yes Yes Yes Yes
Camera Yes Yes     Yes
Plane detection Yes Yes Yes Yes Yes
Image tracking Yes Yes Yes    
Object tracking   Yes      
Face tracking Yes Yes      
Body tracking   Yes      
Point clouds Yes Yes      
Raycasts Yes Yes   Yes Yes
Anchors Yes Yes Yes Yes Yes
Meshing   Yes Yes Yes  
Environment probes Yes Yes      
Occlusion Yes Yes      
Participants   Yes    

 

UnityMars를 통해 시뮬레이션도 가능하다고 함. 뭘까?

UI만들기

UI를 추가하면 Canvas가 자동으로 추가되는데 Canvas Scaler가 있어 기기에 따라 UI의 크기가 자동으로 변경된다.

우리는 이번에 해상도를 다음과 같이 바군다.
Canvas에  +UI>Legasy>Button을 추가

위치는 앵커를 이용 리퍼런스를 잡아준다.

Ctrl-D로 이미지를 복사

버튼에 넣어줌

 

버튼에 적용할 함수는 public으로 만들어야함.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARCore;

public class UIManager : MonoBehaviour
{
    public ARFaceManager faceManager;

    public void ToggleMask()
    {
        //faceManager컴포넌트에서 생성된 Face 오브젝트 순회
        foreach(ARFace face in faceManager.trackables)
        {
            // 생성된 face 오브젝트 순회 
            if(face.trackingState == UnityEngine.XR.ARSubsystems.TrackingState.Tracking)
            {
                //face 오브젝트 상탤글 반대로 변경
                face.gameObject.SetActive(!face.gameObject.activeSelf);
            }
        }
    }
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

마스크 버튼을 선택하고

Inspector의 OnClick() +를 눌러 Object에 Script가 들어있는 Canvas를 끌어다 놔준다. (주의:UIManager Script를 끌어다 놔도 들어는 가는데 그럼 원하는 함수가 안보인다. 꼭 스크립트가 들어있는 객체를 끌어다 놔줘야 한다.)

그런다음 RuntimeOnly옆을 눌러 List  UIManager>ToggleMask()를 선택한다. 

처음시작시 마스크가 안나오기 비활성화 한다.

하이라키에서 CreateEmpty만들고 이름을 MyFAce

Add component Mesh filter, Mesh Renderer, MeshCollider를 추가한다.

AR Face와 AR Face Mesh Visualizer도 추가한다.

 

 

M_Ghost 머터리얼을 만들

MyFaceModel  Materials에 방금만든 M_Ghost를 끌어다 Albedo 왼쪽에 놓는다.

 

 

MyFaceModel은 지워준다.

 

Create empty object

 

FaceVideoRT로 명명후 Target Text에 M_FaceVideo

 

Create Material M_FaceVideo만들고 Albedo왼쪽에 FaceVideoRT를 넣어준다.

My FaceMode 프리팹을 선택하고

Materials를 M_FaceVideo로 변경

MyFaceMode Frefab의 텍스처를 바궈 video image를 동적으로 바꿔보자.

배열을 만든다.

public Material[] faceMat;

 

버튼이 눌리면 머터리얼을 바꿀 퍼블릭함수를 만든다.

    public Material[] faceMats;
    public void SwitchMaterial(int num)
    {

    }

Inspector를 보면 FaceMats가 보인다 +를 2번 누른다. 방이 2개 생긴다.

 

Canvas Button Image를 선택하고 함수를 맞춰준다.  Inspector에서 OnClick() 함수를 SwitchMaterial로 변경하고  매개변수를 0 으로 놔둔다.

하이라키 Cavas Button Video를 선택하고 Inspector에서 OnClick() 함수를 SwitchMaterial로 변경하고  매개변수를 1로 선택한다.

 

FindDetection 스크립트를 만들자.

 

3,91f 버전 설치

우리집이 아니라 처음부터 다시해야한다. ㅠㅠ APK도 추가하고 핸드폰 드라이버도 깔아야한다. 기종마다 다르니 메이커에 가서 다운 받아야 한다.

하이라키에 +XR>AR Sesssion 추가

하이라키에 +XR>AR Sesssion Origin 추가  AR Camera를 선택하고 Facing Direction을 User로 한다. 전면카메라는 뜻한다. 참고로 World는 후면카메라

 

하이라키 +XR>AR Default Face 추가

하이라키의 AR Default Face를 끌어다 프리팹으로 만든다. 이름을 MyMask로 한다. 프리팹 폴더를 만들어 넣어도 된다. 프리팹을 만들었으면 하이라키의 AR Default Face는 지우자

히이라키 AR Session Origin에 AR Face Manager 컴포넌트를 추가하자

방금 만든 프리팹 MyMask를 끌어다 놓자

빌드andRun을 눌러보자 빌드하고 실행해보면 전면카메라를 보면 노란 마스크가 보여야한다. 

좀 멋있는 마스크를 적용하기 위해 구글에서 Mask PNG를 이미지로 검색해 투명한 배경이 있는 마스크를 골라 다운로드 한다. 

이걸 Asset폴더에 Material을 만들고 끌어다 놓는다.

Material Folder를 만들고

머터리얼을 하나 Create하고 M_Mask라고 한다.

Inspector Albedo왼쪽에 M_Mask를 끌어다 놓는다. Rendering Mode는 cutout으로 한다.

이제 머터리얼을 만들었으니 이 머터리얼을 오브젝트에 띄워줘야한다.

하이라키에서 3D Object에서 Quad를 추가하고 Mask로 이름 바꾸주고 사이즈를 변경한다.

머터리얼도 적용해준다.

이상태라면 마스크가 얼굴 중앙에 오므로 좀 올려주가 위해 다시 CreateEmpt를 Create하고 MyMask로 이름을 바구고 방금 만든 Mak를 자식으로 끌어다 놓고 위치를 0.025로 올린다.

이제 MyMask를 프리팹으로 만들고 AR Session Origne>AR Face Manager의 FacePrefab을 바꾼다.

빌드하면 얼굴에 가면이 보인다.

이제 UI를 만들어 가면을 껏다 켰다 해보겠다. 하이라키+ UI>Legacy>Button을 선택하면 Cavas의 자식으로 Button이 생긴다.

Cavas를 선택하고 UI Scale Mode를 1080x1920으로 바꾼다.

2D 모드로 바꾼다.

Button을 선택하고  앵커는 아래쪽 중앙 포지션 사이즈를 다음과 같이 바군다.

그럼 버튼이 화면 아래 생긴다.

버튼에 이미지를 입혀주기 위해 Mask PNG를 ctrl-D카피한다 이름을 Mask_Btn으로 바꾼다. Inspector 뷰에서 Text Type을 2D and UI로 바꾼다 Transparency도 체크한다. Apply

하이라키의 Button을 클릭하고 Image를 Mask_btn으로 끌어다 넣어준다. 그럼 UI가 Mask로 바뀐다.

오랜만에 스크립트를 하나 만들고 UI_Manager라고 하자

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARCore;

public class UI_Manager : MonoBehaviour
{
    public ARFaceManager faceManager;

    public void ToggleMask()
    {
        foreach(ARFace face in faceManager.trackables)
        {
            if (face.trackingState == UnityEngine.XR.ARSubsystems.TrackingState.Tracking)
            {
                // face오브젝트 상태를 반대로 변경
                face.gameObject.SetActive(!face.gameObject.activeSelf);
            }
        }
    }
    // Start is called before the first frame update
    void Start(){}

    // Update is called once per frame
    void Update(){ }
}

이제 UI_Manager Script안의 ToggleMask()를 버튼과 연결해야한다.

 그런데 스크립트는 게임오브젝트와 연결이 안되기 때문에 스크립트를 일단 하라라키의 Cavnas아이콘위에 놓으면 자동으로 컴포넌트로 연결한다. 끌어다 놓으면 된다. 

연결후 AR SEssion Origne을 끌어다 FaceManger와 연결해준다.

다음 버튼을 선택하고 OnClick() +를 누르고 Canvas를 끌어다 놓는다. ToggleMask()함수를 선택한다.

마지막으로 가면이 처음에는 안보이게 

MyMask Prefab을 열고 체크박스를 해제하자.

이제 빌드런 해보면 처음에는 마스크가 안 나온지만 밑 버튼을 누르면 나온다.

https://smilejsu.tistory.com/3184#google_vignette

 

iOS / Unity 2022.3.5f1 + AR FOUNDATION / ARKit / 환경설정

What is augmented reality (AR)? 증강현실은 가상현실의 한 분야로 실제로 존재하는 환경에 가상의 사물이나 정보를 합성하여 마치 원래의 환경에 존재하는 사물처럼 보이도록 하는 컴퓨터 그래픽 기법

smilejsu.tistory.com

 

What is augmented reality (AR)?

  • 증강현실은 가상현실의 한 분야로 실제로 존재하는 환경에 가상의 사물이나 정보를 합성하여 마치 원래의 환경에 존재하는 사물처럼 보이도록 하는 컴퓨터 그래픽 기법
  • 디지털 정보를 사용자 환경과 실시간으로 통합
  • 완전히 인공적인 환경을 만들어내는 가상현실(VR)과 달리, AR 사용자는 생성된 지각 정보가 그 위에 덧씌워진 실제 환경을 경험하게 됨 

 

안드로이드 :  ARCore

IOS : ARKit

ARCore/ARKit 멀티 플랫폼 개발 :   AR Foundation

 

 

 

 

플랫폼별 기능 지원 이 표를 참조하여 AR Foundation의 어떤 부분이 특정 플랫폼과 관련되어 있는지 이해할 수 있습니다.

 

 

 

Which version should I use?

 

이 저장소의 메인 브랜치는 AR Foundation 6.0을 사용하며 Unity 2023.2 이상과 호환됩니다. 이전 버전의 AR 파운데이션에 대한 샘플 장면에 액세스하려면 아래 표에서 다른 브랜치에 대한 링크를 참조하세요.

 

https://github.com/Unity-Technologies/arfoundation-samples#which-version-should-i-use

 

How to use these samples?

 

Build and run on device

AR 파운데이션 샘플 프로젝트를 장치에 직접 구축할 수 있으며, 이는 처음으로 AR 파운데이션 기능을 사용하는 데 도움이 될 수 있습니다.

 

프로젝트를 만들고 플랫폼을 변경 한다 

 

 

Package Manager를 열고 ar검색

 

 

 

 

먼저 AR Foundation을 설치 해준다 

 

 

 

AR feature set

Unity는 강력한 AR을 제공합니다 풍부하고 매력적인 증강 현실을 만드는 도구 현실 세계와 지능적으로 상호 작용하는 경험. Unity의 AR 기능 세트 헤드마운트 디스플레이부터 모바일까지 증강현실 개발의 출발점을 제공합니다.

https://docs.unity3d.com/2022.3/Documentation/Manual/ARFeature.html

 

Unity - Manual: AR feature set

AR feature set Unity provides powerful ARAugmented Reality More infoSee in Glossary tools to create rich, deeply engaging augmented realityAugmented Reality (AR) uses computer graphics or video composited on top of a live video feed to augment the view and

docs.unity3d.com

 

 

통합 패키지를 설치해주자 

 

 

Project Settings를 열어 알맞는 Provider를 선택 한다 

 

 


하이어라키에 우클릭하고 AR Session과 AR Origin을 생성한다 

 

 

 XROrigin도 생성해주자 

 

 

 

AR Session

AR을 사용하기 위해 필수적으로 필요한 컴포넌트

라이프사이클관리, 구성옵션제어, 세션 실행 등을 관리

씬에서 1개만 생성해야 하며 여러 개 일경우 다른세션과 충돌 할 수 있음

 

XR Origin

XR Origin 구성 요소는 일반적으로 XR Origin의 기본 개체에 연결되며 이동을 통해 조작될 GameObject를 저장합니다.

카메라 오프셋에도 사용됩니다.

자식으로 카메라가 있으며 사용자 입장에서 Origin의 위치가 실제 모바일 카메라의 위치 입니다.

 

더보기
더보기

AR Session은 AR 앱에서의 생명주기를 담당, 앱이 시작하면서부터 끝날 때까지의 라이프사이클을 관리
AR Session Origin은 AR 상에서 중심이 되는 역할

AR 세상에서의 원점으로 AR Session Origin의 자식 오브젝트인 AR Camera로 비춰지고 있는 화면이 사용자가 가지고 있는 AR 디바이스에서 비추는 화면이랑 똑같다고 보시면 됨 
AR Default Point Cloud는 카메라를 통해 받아지는 영상에서 특징점들을 노란색 포인트로 표시
AR Default Plane은 Point Cloud에서 얻은 특징점들을 기반으로 평면을 찾는 컴포넌트 
AR Default Face는 얼굴 인식에서 사용되는 컴포넌트

 

 

MainCamera 오브젝트를 제거

이미 XR Origin/Camera Offset/MainCamera의 태그가 MainCamera입니다.

 

 

 

AR Camera Manager

XRCameraSubsystem의 수명 주기를 관리 

카메라 텍스처 및 조명 추정 정보를 사용할 수 있도록 하려면 장면의 카메라에 이들 중 하나를 추가 해야 합니다.

 

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.1/api/UnityEngine.XR.ARFoundation.ARCameraManager.html

 

 

ARCameraBackground

카메라에 이 구성 요소를 추가하여 컬러 카메라의 텍스처를 배경에 복사합니다.

If you are using the Universal Render Pipeline (version 7.0.0 or later), you must also add the ARBackgroundRendererFeature to the list of render features for the scriptable renderer.

 

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.1/api/UnityEngine.XR.ARFoundation.ARCameraBackground.html

 

 

 

TrackedPoseDriver

TrackedPoseDriver 구성 요소는 추적된 장치의 현재 포즈 값을 에 적용합니다.

TrackedPoseDriverXR HMD, 컨트롤러 및 리모컨을 포함한 여러 유형의 장치를 추적할 수 있습니다.

 

https://docs.unity3d.com/Packages/com.unity.inputsystem@1.6/api/UnityEngine.InputSystem.XR.TrackedPoseDriver.html

 

 

 

 

그냥 빌드 시도 하면 이렇게 됨

 

 

BuildFailedException: ARKit requires a Camera Usage Description (Player Settings > iOS > Other Settings > Camera Usage Description)

 

 

 

빌드후 실행해보기 

 

 

 

 

AR 기기가 감지한 평면(즉, 평평한 표면)을 나타냅니다.

 

 

 

 

 

카메라를 통해 얻어지는 정보를 분석해 특징점을 추려 평면으로 인식합니다. 감지된 포인트 클라우드를 나타냅니다. 이들은 특징점이라고도 합니다.

 

 

 

 

 

AR 기기에서 감지한 얼굴을 나타냅니다 카메라를 통해 얻어지는 여상 정보를 분석해 얼굴 정보를 바탕으로 Face Mesh 데이터를 생성해 얼굴 위치에 다양한 오브젝트를 출력 하거나 눈동자 인식등의 콘텐츠 제작에 활용할수 있습니다. 이때 Face Mesh 정보를 가시화 해서 확인 하는것인 ARFace입니다.

 

 

 

 

 

 

AR Default Point Cloud

영상정보를 분석해 특징점을 노란색 파티클로 화면에 출력 해주는 오브젝트

 

 

 

 

 

 

AR Point Cloud Manager

 

 

XR Origin 오브젝트에 AR Point Cloud Manager컴포넌트를 추가 합니다.

ARTrackedObjects의 관리자입니다. XRPointCloudSubsystem을 사용하여 물리적 환경에서 포인트 클라우드 데이터를 인식하고 추적합니다.

 

 

 

 

AR Default Point Cloud 를 프리팹으로 만들고 할당 

 

 

 

 

빌드후 실행 해본다 

 

 

 

AR Default Plane

영상정보를 분석해 평면 정보를 노란색 면과 검은색 선의 Mesh로 화면에 출력 하는 오브젝트 입니다.

 

 

프리팹으로 만들기 

 

 

 

XROrigin 게임 오브젝트를 선택 하고 AR Plane Manager컴포넌트를 부착후 Plane Prefab에 할당 하고 Detect Mode를 Horizontal로 변경 한다 

 

 

빌드후 결과를 확인 하자 

출처: https://smilejsu.tistory.com/3184 [{ 일등하이 :Unity3D }:티스토리]

'AR > AR Foundation' 카테고리의 다른 글

[유니티 AR] 디버깅을 위한 빌드 테스트  (1) 2024.07.02
AR 개발환경구축하기  (1) 2024.07.02
소개  (0) 2024.07.02
유니티 Unity AR Foundation  (0) 2024.06.30

+ Recent posts