HoloLens에서 벽에 낙서하는 방법

9473 단어 HoloLens

개요



스프레이로 벽에 낙서할 수 있는 HoloLens 앱 스프레이는 기분 #HoloLens #HoloLensJP 피 c. 라고 r. 이 m / ykL3C t00


  • HoloLens로 벽에 낙서 할 수있는 앱을 만들어 보았습니다.
  • HoloToolkit과 InkPainter를 결합하여 쉽게 구현할 수 있습니다.
  • 에어 더스터와 AirTap을 결합하면 바르고있는 느낌이 나옵니다

  • 메커니즘



    개발 환경


  • Windows10
  • Unity5.6
  • VisualStudio2015
  • HoloToolkit-1.5.7.0( 2017년 7월 14일 )
  • InkPainter( htps : // 기주 b. 코 m / 미 c 로소 ft / 호와 t t u ty / ree ase s )
  • 에어 더스터( htps //w w. 어쨌든 ts. 글쎄, ty3d. 이 m/jp/#! /콘텐 t/86210 )

  • 메커니즘


  • HoloToolkit의 SpatialMapping의 기능 하나, SpatialProcessing을 이용하고 있습니다
  • SpatialProcessing은 SpatialMapping에서 얻은 데이터에서 평면 구성의 Mapping 데이터로 변환하는 모듈입니다.
  • 이번에는 SpatialProcessing에서 얻은 평면에 InkPainter를 사용하여 낙서를합니다.

    구현



  • 장면로드
  • HoloToolkit을 프로젝트로 가져 오기 (이 때 HoloToolkit-Tests도 가져옵니다)
  • InkPainter 가져 오기
  • HoloToolkit-Tests/SpatialMapping/Scenes/SpatialProcessing.unity 로드
    htps //w w. 아마존. 이. jp / gp / p 로즈 ct / B005TH1 후 6 / 레 f = 오 h_ 아우이 _ 큰 l 파게_ 오 01_s01? 아니 = U TF8 & psc = 1


  • 입력 모듈 추가
  • HoloToolkit/Input/Prefabs에서 InputManager와 Cursor/Cursor를 Hierarchy에 추가



  • SurfacePlane 변경
    HoloToolkit/SpatialMapping/Prefabs/SurfacePlane을 부분적으로 변경합니다.
  • 스크립트 추가
  • Inspector에서 InkCanvas 추가

  • Collider 변경
  • BoxCollider를 MeshCollider로 변경

  • 머티리얼 추가
  • SurfacePlane에 첨부 된 머티리얼 (HoloToolkit_Default)의 Shader를 Unlit/Transparent로 변경
  • Texture를 다음 이미지로 변경 (투명한 이미지입니다)



  • ↑투명 이미지
  • 코드 수정
  • SurfacePlane.cs의 126행 삭제 SetPlaneMaterialByType();

  • 페인트 입력 구현
  • 페인트 입력 코드 (Paint.cs)는 다음과 같습니다.
  • Paint.cs를 HoloLensCamera에 추가하고 BrushTexture 및 BrushColor를 설정합니다.
  • 메뉴 바의 HoloToolkit에서 Configure/ApplyHoloLensCapabilitySetting을 선택하여 SpatialPerception을 활성화합니다.
  • BuildWindow에서 프로젝트를 빌드하고 HoloLens에서 확인하십시오


  • Paint.cs
    using UnityEngine;
    using Es.InkPainter;
    using UnityEngine.VR.WSA.Input;
    
    public class Paint : MonoBehaviour {
    
        [SerializeField]
        private Brush brush;
    
        private bool pressflag = false;
    
        private void Start()
        {
            InteractionManager.SourceUpdated += InteractionManager_SourceUpdated;
            InteractionManager.SourcePressed += InteractionManager_SourcePressed;
            InteractionManager.SourceReleased += InteractionManager_SourceReleased;
        }
    
        private void Update()
        {
    
        }
    
        void InteractionManager_SourceUpdated(InteractionSourceState state)
        {
            if (pressflag == true)
            {
                Vector3 v;
                state.properties.location.TryGetPosition(out v);
                RaycastHit hitInfo;
                if (Physics.Raycast(v, Camera.main.transform.forward, out hitInfo))
                {
                    var paintObject = hitInfo.transform.GetComponent<InkCanvas>();
                    if (paintObject != null) paintObject.Paint(brush, hitInfo);
                }
            }
    
        }
    
        void InteractionManager_SourcePressed(InteractionSourceState state)
        {
            pressflag = true;
        }
    
        void InteractionManager_SourceReleased(InteractionSourceState state)
        {
            pressflag = false;
        }
    }
    



    HoloLens에서 앱을 시작한 후
    - SpatialMapping으로 와이어프레임 표시
    - SpatialProcessing 후에 투명색으로 변경
    - AirTap에 의해 시선상의 벽에 페인트됩니다.

    요약



  • 벽에 에어 더스터를 지향하면서 AirTap하여 놀아주세요.

    스프레이로 벽에 낙서할 수 있는 HoloLens 앱 스프레이는 기분 #HoloLens #HoloLensJP


  • 더 굉장하기 때문에 꼭 이쪽도 봐주세요
  • 피 c. 라고 r. 이 m / ykL3C t00

  • 좋은 웹페이지 즐겨찾기