Nreal Light에서 역할 표현
14245 단어 AndroidSmartGlassUnity
2020년 12월 1일 출시된 스마트 글라스, NrealLight
이번에는 여기에 유니티를 사용해 캐릭터를 표현할 때까지의 일을 적는다.
↓ NrealLight를 넘어 직접 포착하는 방법을 몰라 외관이 좀 다른데...
NrealLight이란?
자세한 건 이쪽을 보시고...
https://news.kddi.com/kddi/corporate/newsrelease/2020/11/10/4778.html
대략적으로 스마트폰에 연결해 XR 기술을 즐길 수 있는 스마트 글라스다.
미러 모드를 사용하면 공간에서 유튜브 등 영상을 볼 수 있어 전차에서도 주변 사람들을 신경 쓰지 않고 마음껏 영상을 즐길 수 있다.
케이블이 있어서 수상해 보이는데... (웃음)
※ 해당 스마트폰에 유의해야 합니다.
개발 환경
・Windows 10
・Unity 2019.4.16f1
· 안드로이드 SDK8.0(API 클래스 26)
・NRSDKForUnity1.4.8
/NrealLight (Developer Kit 아님)
• Xperia 5 II SOG02(Nreal Light를 사용하려면 빌드 번호 58.0.C.11.142 이후여야 함)
물줄기
NrealLight DeveloperKit와 Unity의 개발 프로그램이 공식 사이트에 쓰여 있습니다.
그거 참고하면서 할게요.
https://developer.nreal.ai/develop/unity/android-quickstart
기본적 준비
안드로이드를 처음 개발한 사람을 위한 간단한 설명이다.(Unity는 어느 정도 사용 가능한 전제 조건)
Unity의 설치, 안드로이드 SDK의 설치, Unity의 안드로이드 SDK 경로 설정, 안드로이드 Debug Bridge(adb) 명령의 경로 설정, 안드로이드와 관련된 개발 모델 설정.
그런 거 필요 없는 사람들이 많을 것 같아서 다른 기사에서 설명할게요.
https://qiita.com/yambowcto/private/918f6eefd103d09f5e1b
Unity 프로젝트 설정
・ 템플릿을 3D로 설정하고 새 프로젝트를 만듭니다.
• 메뉴 File] Build Settings에서 Build Settings 창을 엽니다.
・Plaatform에서 안드로이드를 선택하여 Switch Plaatform을 통해 변경합니다.
• 같은 창의 Player Settings 버튼을 눌러 Project Settings 창을 엽니다.
• Project Settings 창의 Player 설정을 변경합니다.
※ Target API Level은 level 26~29에서 설정해야 하며, 안드로이드 11은 현재 지원되지 않습니다.
또한 안드로이드 10의 경우 안드로이드 매니페스트입니다.변경xml이 필요하다고 적혀 있습니다.
스냅 기능을 사용하지 않으면 변경하지 않아도 되나요?
• Project Settings 창의 Quality 설정을 변경합니다.
※ Skin Weights는 데이터에 따라 달라지지만, 일반적으로 4Bones를 주지 않으면 파산합니다.
NRSDKFornity 패키지 가져오기
공식 웹사이트의 NRSDKForUnity1.4.8을 다운로드하고 두 번 클릭하거나 가져옵니다.
https://developer.nreal.ai/download
유니클로 수입
Unity 공식 사이트에서 Unity 모델 데이터를 다운로드하여 가져옵니다.
https://unity-chan.com/contents/guideline
error CS0234: The type or namespace name'Policy'does not exist in the namespace'System.Security' (are you missing an assembly reference?)이런 오류가 발생하면 자동으로 생성됩니다.cs 삭제
using System.Security.Policy;
를 열거나 (사용하지 않았기 때문에) Project Settings&Player&Other Settings>Api Compotibility Level*를 .Net 4.x
로 변경하면 됩니다.장면 생성
메뉴 File>Newscene을 사용하여 새 장면을 만듭니다.
프로젝트 창의 Assets > NRSDK > Prefabs의
NRCameraRig
와 NRInput
를Hierarchy에 추가합니다.프리패스
unitychan
에서도 하이에라치(Hierarchy)에 추가됐다.Hierrarchy
Main Camera
에 있을 필요 없으니까 삭제해.unitychan의 좌표는
Position Y:-0.94 Z:2.56
Rotation Y:180
이다.이름을 지정한 후 장면을 저장합니다.
구축 준비
그렇다면 실제 제작된 앱을 스마트폰에 설치하는 간단한 방법은 스마트폰을 USB 케이블로 PC에 연결해 Build And Run을 실행하는 것이다이번에는 Nreal Light를 스마트폰에 연결하지 않으면 작동이 안 되는 앱이어서 작업할 때마다 케이블을 교체해야 한다.따라서 Wi-Fi를 통해 설치할 준비를 하십시오.
미리 준비된adb 명령의 경로 설정을 전제로 합니다.
우선 안드로이드 스마트폰을 USB선으로 PC에 연결한다.
※ 개발자를 위한 옵션 USB 디버깅을 잊지 마세요!
또 스마트폰에 대해 뭘 하고 싶으면
許可
확인이 많을 거예요.전송 작업에서 완료한 경우 내용을 확인하면서 기본적으로 OK.
명령 프롬프트를 시작하고
adb tcpip 5555
를 입력하고 Enter 키를 누릅니다.스마트폰의 IP 주소를 확인하면(자신의 경우 설정 > 장치 정보를 통해 볼 수 있음)
adb connect IPアドレス
를 입력하고 Enter 키를 누릅니다.스스로 Enter를 누르면 실패할 수 있지만, 스마트폰 측에서 허가를 확인한 만큼 허가를 받을 수 있다.
마지막으로 스마트폰과 PC의 연결을 해제
adb devices
해 걸고 인식이 되면 OK.스마트폰에 네블라를 설치하다
NrealLight 응용 프로그램을 시작하려면 Nebula를 설치해야 합니다.(다르면 미안해)
따라서 Google Play에서 Nebula를 설치합니다.(↓의 이거, 같은 이름의 프로그램에 주의)
네블라 nreal로 검색하고 싶으면 위로 올라올 거예요.
스마트폰의 소프트웨어 버전이 조건에 맞지 않으면 Nreal Light에 연결할 때 Nebula의 행동이 이상하게 변할 수 있으니 주의하세요.(나는 그곳에서 궁지에 몰렸다.)
설치를 위해 Nebula를 시작합니다.
말씀하신 대로 허락하면서 진행하겠습니다.그리고 마지막으로 유리잔을 끼울 때의 강좌에 들어간다.
구축
마침내 빌딩에 도착했다.
메뉴 File]BuildSettings에서 구성 설정을 엽니다.
Wi-Fi 연결이 잘 되면 Run Device에는 IP 이름의 장치가 있어야 합니다.없으면 Refresh로 정보를 업데이트합니다.
그런 다음 Build And Run 버튼을 눌러 빌드를 시작하고 설치합니다.
※ 네블라가 작동하지 않으면
Please connect your Nreal Light Glasses.
신호가 표시됩니다.설치된 응용 프로그램은 Nebula 메뉴에서 시작할 수 있습니다.
이렇게 하면 배역을 나타낼 수 있다.
운영 방법은 APP 버튼 길이에 따라 포인터를 재설정하고 홈 버튼 길이에 따라 끝냅니다.
이상 수고하셨습니다.
덤
여기서부터 나는 장면에 약간의 기능을 더하고 싶다.
우선 Create Empty로 게임 Object를 만들어 그 아이에게unitychan을 이동시킨다.
그러면 GameObject의 Transform 값이 재설정됩니다.
데모
TargetModelDisplayCtrl
에서 개량된 다음 스크립트를 AddComponent에 게임 Object에 추가합니다.TargetModelDisplayCtrlEx.cs
using NRKernal;
using UnityEngine;
namespace Test
{
public class TargetModelDisplayCtrlEx : MonoBehaviour
{
public Transform modelTarget;
private Vector3 m_AroundLocalAxis = Vector3.down;
private float m_TouchScrollSpeed = 10000f;
private float correctZ = 0.01f;
private Vector2 m_PreviousPos;
void Start()
{
ResetModel();
}
private void Update()
{
if (NRInput.GetButtonDown(ControllerButton.TRIGGER))
{
m_PreviousPos = NRInput.GetTouch();
}
else if (NRInput.GetButton(ControllerButton.TRIGGER))
{
UpdateScroll();
}
else if (NRInput.GetButtonUp(ControllerButton.TRIGGER))
{
m_PreviousPos = Vector2.zero;
}
}
private void UpdateScroll()
{
if (m_PreviousPos == Vector2.zero)
return;
Vector2 deltaMove = NRInput.GetTouch() - m_PreviousPos;
m_PreviousPos = NRInput.GetTouch();
float x = Mathf.Abs(deltaMove.x);
float y = Mathf.Abs(deltaMove.y);
if (x > y)
modelTarget.Rotate(m_AroundLocalAxis, deltaMove.x * m_TouchScrollSpeed * Time.deltaTime, Space.Self);
else
{
Vector3 v = modelTarget.localPosition;
v.z += deltaMove.y * m_TouchScrollSpeed * Time.deltaTime * correctZ;
modelTarget.localPosition = v;
}
}
public void ResetModel()
{
modelTarget.localRotation = Quaternion.Euler(0.0f, 180.0f, 0.0f);
}
}
}
Inspector에서 구성 요소의 Model Target에 unitychan을 설정합니다.이렇게 되면 애플리케이션에서의 작업에서 위아래로 미끄러지면 캐릭터가 앞뒤로 이동하고, 좌우로 미끄러지면 Y축이 회전한다.
끝말
설명이 잘 안 될 수도 있는데 어때요?
대략적으로 말하면 업무 환경을 만족시키고 네블라에 가입하며 적당한 프로젝트 설정, NRSDKForUnity를 사용하는 것에 주의하면 된다.
2021년이면 새로운 스마트 글라스에 대한 정보도 나온다.
가격이 더 싸고 거리에서 스마트 유리로도 위화감이 없을 시대가 왔으면 좋겠다.
유닛 소스에 대한 허가증
이 작품은 유엔 허가증 조항의 기초 위에서 제공된 것이다
유닛을 사용할 때 위의 허가증을 자세히 읽어 주십시오.
Reference
이 문제에 관하여(Nreal Light에서 역할 표현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yambowgc/items/a973252e25cb9e5d44d7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)