Nreal light에서 많은 큐브 크기 확인 - Nreal light용 MR 튜토리얼



이 샘플은 공간에 많은 1x1x1 큐브를 배치하여 실제로 느낄 수 있는 크기를 확인하는 것입니다.

샘플 리포지토리


  • mr-tutorials-for-nreal-light/CubeSize at main · karad/mr-tutorials-for-nreal-light

  • 샘플 실행


  • 샘플 리포지토리 복제, 현재 디렉토리를 CubeSize 로 변경합니다. 그리고 Unity로 엽니다.
  • (NRSDK가 없는 경우) https://nreal-public.nreal.ai/download/NRSDKForUnityAndroid_1.7.0.unitypackage에서 NRSDK 1.7.0 다운로드
  • 열기Build Setting , 플랫폼을 Android로 변경
  • 열기 Project , Assets > import package > Custom Package를 선택하고 가져오기 NRSDKForUnityAndroid_1.7.0.unitypackage .
  • Configure Build Settings을 참조하여 Build Settings > Player Settings 확인
  • 프레스BuildBuild Settings 패널
  • Android 또는 DevKit에 *.apk를 설치합니다.

  • 지도 시간



    1. Nreal 개발을 위한 프로젝트 설정


  • Quickstart for Android - NRSDK Documentation을 참조하고 빌드 설정을 구성하십시오.
  • (NRSDK가 없는 경우) https://nreal-public.nreal.ai/download/NRSDKForUnityAndroid_1.7.0.unitypackage에서 NRSDK 1.7.0 다운로드
  • 열기 Project , Assets > import package > Custom Package를 선택하고 가져오기 NRSDKForUnityAndroid_1.7.0.unitypackage .

  • 2. 큐브를 장면에 넣고 프리팹으로 변환


  • 열기 Project , Resource > AssetsScenes 폴더 생성
  • 현재 장면에 Cube를 만들고 이름을 MyCube로 변경합니다.
  • MyCubeAssets > Scenes > Resource 폴더로 드래그하십시오.
  • MyCube에서 Hierarchy 삭제 .

  • 3. 빈 GameObject를 만들고 C# 스크립트를 첨부합니다.


  • 이름이 HierarchyBaseCubeSize 에 빈 게임 오브젝트를 만듭니다.
  • CubeSize라는 이름의 다음 C# 스크립트를 생성하고 방금 생성한 빈 GameObject에 연결합니다.

  • using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.EventSystems;
    
    public class CubeSize : MonoBehaviour
    {
        /// <summary>
        /// Cube PreFab
        /// </summary>
        GameObject spherePrefab;
    
        /// <summary>
        /// Initial Position for cube layout
        /// </summary>
        static readonly Vector3 INITIAL_POSITION = new Vector3(0.0f, -0.35f, 3f);
    
        /// <summary>
        /// Number of Cubes list per axis
        /// </summary>
        static readonly float DEPTH = 20f;
    
        /// <summary>
        /// Space for each Cubes
        /// </summary>
        static readonly float SPAN = 2f;
    
        // Start is called before the first frame update
        void Start()
        {
            spherePrefab = Resources.Load<GameObject>("MyCube");
            LayoutCubes(DEPTH, SPAN);
        }
    
        /// <summary>
        /// Layout Cubes
        /// </summary>
        /// <param name="depth"></param>
        /// <param name="span"></param>
        void LayoutCubes(float depth, float span)
        {
            for (float x = -depth; x <= depth; x = x += span)
            {
                for (float y = -depth; y <= depth; y += span)
                {
                    for (float z = -depth; z <= depth; z += span)
                    {
                        // Exclude own position
                        if (!(x == 0 && y == 0 && z == -2f))
                        {
                            CreateCube(x, y, z);
                        }
                    }
                }
            }
        }
    
        /// <summary>
        /// Put a cube  in the current scene
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        void CreateCube(float x, float y, float z)
        {
            GameObject sphere = Instantiate(spherePrefab);
            sphere.transform.position = new Vector3(INITIAL_POSITION.x + x, INITIAL_POSITION.y + y, INITIAL_POSITION.z + z);
        }
    }
    


    4. 빌드


  • 프레스BuildBuild Settings 패널
  • Android 또는 DevKit에 *.apk를 설치합니다.
  • 좋은 웹페이지 즐겨찾기