Unity/AR

09. AR Foundation - Occlusion culling

๐Ÿ”ท Occlusion culling

- ์ฑ…์ƒ ๋ฐ‘์— ์ƒ์„ฑํ•œ ์บ๋ฆญํ„ฐ๊ฐ€ ์•ˆ๋ณด์ด๋„๋ก ์ฒ˜๋ฆฌ

 

 

 

๐Ÿ”ถ Face Detecting ์„ค์ • ์ดˆ๊ธฐํ™”

- ์œ„ ์ปดํฌ๋„ŒํŠธ 2๊ฐœ ํ™œ์„ฑํ™”

- ์•„๋ž˜ ์ปดํฌ๋„ŒํŠธ 2๊ฐœ ๋น„ํ™œ์„ฑํ™”

 

 

 

- Facing Direction : World

 

 

 

๐Ÿ”ถ ์บ๋ฆญํ„ฐ ์ƒ์„ฑ ๋ฐ culling ์ฒ˜๋ฆฌ

- ์›ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ

    - Scale ์กฐ์ ˆ

- ํ”„๋ฆฌํŒนํ™” ํ›„ ํ•˜์ด์–ด๋ผํ‚ค์ฐฝ์—์„œ ์‚ญ์ œ

 

 

 

- ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

    - AR Raycast Manager

 

 

 

- ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ : PlacerMgr

- AR Session Origin ์˜ค๋ธŒ์ ํŠธ์— ์Šคํฌ๋ฆฝํŠธ ์ถ”๊ฐ€

 

 

 

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

public class PlacerMgr : MonoBehaviour
{
    public GameObject monsterPrefab;
    private List<ARRaycastHit> hits = new List<ARRaycastHit>();
    private ARRaycastManager raycastManager;

    void Start()
    {
        raycastManager = GetComponent<ARRaycastManager>();
    }

    void Update()
    {
        if (Input.touchCount == 0) return;

        Touch touch = Input.GetTouch(0);
        if (touch.phase == TouchPhase.Began)
        {
            if (raycastManager.Raycast(touch.position, hits, TrackableType.All))
            {
                GameObject obj = Instantiate(monsterPrefab, hits[0].pose.position, hits[0].pose.rotation);
            }
        }

    }
}

 

 

 

- ์—ฐ๊ฒฐ

 

 

 

- ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€

    - AR Occulusion Manager

 

 

 

- Build & Run

'Unity > AR' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

11. AR Foundation - Cloud Anchor (2) Local Anchor  (0) 2021.09.21
10. AR Foundation - Cloud Anchor (1) Setting  (0) 2021.09.20
08. AR Foundation - ์–ผ๊ตด ์ธ์‹  (0) 2021.09.17
07. AR Foundation - ์„ค์น˜  (2) 2021.09.16
06. ARCore - ์ž ๋งŒ๋“ค๊ธฐ  (0) 2021.09.15