AR 콘텐츠 기초

[AR Foundation] 얼굴 인식

다모아 2023. 11. 2. 13:35

Main Camera 지우고 AR Session, XR Origin 생성

 

XR Origin의 메인카메라의 Facing Direction을 User로 변경

 

https://github.com/araxrlab/xrlifeunity/blob/master/2%EC%9E%A5%20%EC%82%AC%EC%9A%A9%20%EC%97%90%EC%85%8B/Mask.png

Alpha Is Transparenc 체크

Material 생성 후 Rendering Mode Cutout > Albedo에 Mask.png 넣기

https://docs.unity3d.com/Manual/shader-TransparentCutoutFamily.html

 

Unity - Manual: Transparent Cutout Shader Family

Transparent Parallax Specular Transparent Cutout Vertex-Lit Transparent Cutout Shader Family Note. Unity 5 introduced the Standard Shader which replaces these shadersA program that runs on the GPU. More infoSee in Glossary. The Transparent Cutout shaders a

docs.unity3d.com

cutout 기능은 이미지의 뚫린 부분을 삭제시켜준다 > 이 마스크의 눈이나 배경등

 

쿼드로 생성 후 스케일 조정 및 마스크 머터리얼 넣기

 

AR Face 붙이고 Prefab으로 만들기

 

현재 문제점 : 눈에 붙지 않고 얼굴 중앙에 붙음

 

빈오브젝트를 Mask로 만들어서 위치 수정

 

>> Slider를 통해서 만들거라 Y축 위치 0으로 변경 후 프리팹 화

 

Mask.cs 만들고 Mask 프리팹 시킨 것에 넣기

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Mask : MonoBehaviour
{
    private Slider slider;
    [SerializeField] private Transform myMask;
    // Start is called before the first frame update
    void Start()
    {
        this.slider = GameObject.Find("Slider").GetComponent<Slider>();

        this.slider.minValue = -0.1f;
        this.slider.maxValue = +0.1f;

        Vector3 defaultPos = this.myMask.transform.localPosition;

        this.slider.onValueChanged.AddListener((val) => {
            float targetY = defaultPos.y + val;

            Debug.LogFormat("defaultPosY: {0}, val: {1}, targetY: {2}", defaultPos.y, val, targetY);
            Vector3 localPos = this.myMask.transform.localPosition;
            localPos.y = targetY;
            this.myMask.transform.localPosition = localPos;
        });
    }
}