HoloLens에서 벽, 바닥, 책상, 천장 분류하기
소개
3월 초부터 인턴에서 주식회사 유메미(htps //w w. 유메미. 이. jp/그럼 )에서 HoloLens의 연구 개발을 하고 있는 근대생의 요시입니다.
국내에서 지난 1월부터 제공을 개시한 MicroSoft제 MR 디바이스의 HoloLens에 대한 기사를 써 갑니다.
「HoloLens+타사제의 외부 입력」이나 「움직임을 3D 모델로 해 전달」등, 여러분들이 재미있는 시도를 많이 시험되고 있습니다만, HoloLens 개발의 기본적 부분의 기사가 그다지 없었기 때문에, 그것을 메인에 써 가려고 생각합니다.
하는 것
평면을 벽, 바닥, 책상, 천장으로 분류
생성하는 객체를 Gaze가 맞는 평면의 종류에 따라 변경하고 싶습니다.
라고 할 때 등에 사용할 수 있다고 생각합니다.
전제 환경
평면을 벽, 바닥, 책상, 천장으로 분류
생성하는 객체를 Gaze가 맞는 평면의 종류에 따라 변경하고 싶습니다.
라고 할 때 등에 사용할 수 있다고 생각합니다.
전제 환경
Physics.Raycast() 사용
Raycast는 오브젝트의 충돌을 판정할 수 있는 것으로, 이번 사용하는 것은 이하의 인수를 취합니다.
- origin: 월드 좌표에서 레이의 시작 지점
- direction: 레이 방향
- maxdistance: 레이가 충돌을 감지하는 최대 거리
- layerMask: 레이캐스트 시 선택적으로 충돌을 무시하는 데 사용
구현 예
RecognizePlaneRaycastHit hitInfo;
bool hit = Physics.Raycast(GazeManager.Instance.GazeOrigin,
GazeManager.Instance.GazeNormal, out hitInfo, 20f, SpatialMappingManager.Instance.LayerMask);
if (hit) {
GameObject surface = hitInfo.transform.gameObject;
SurfacePlane plane = surface.GetComponent<SurfacePlane>();
if (plane != null) {
switch (plane.PlaneType) {
case PlaneTypes.Floor:
//Do somothing
break;
case PlaneTypes.Ceiling:
//Do somothing
break;
case PlaneTypes.Wall:
//Do somothing
break;
case PlaneTypes.Table:
//Do somothing
break;
case PlaneTypes.Unknown:
//Do somothing
break;
}
}
}
해설
RecognizePlane
RaycastHit hitInfo;
bool hit = Physics.Raycast(GazeManager.Instance.GazeOrigin,
GazeManager.Instance.GazeNormal, out hitInfo, 20f, SpatialMappingManager.Instance.LayerMask);
if (hit) {
GameObject surface = hitInfo.transform.gameObject;
SurfacePlane plane = surface.GetComponent<SurfacePlane>();
if (plane != null) {
switch (plane.PlaneType) {
case PlaneTypes.Floor:
//Do somothing
break;
case PlaneTypes.Ceiling:
//Do somothing
break;
case PlaneTypes.Wall:
//Do somothing
break;
case PlaneTypes.Table:
//Do somothing
break;
case PlaneTypes.Unknown:
//Do somothing
break;
}
}
}
해설
GazeManager.Instance.GazeOrigin: 시선의 좌표를 가져옵니다
GazeManager.Instance.GazeNormal: 시선의 forword 얻기
out hitInfo: 충돌 판정이 있었던 평면을 취득
layerMask: 특히 중요한 포인트! SpatialMappingManager.Instance.LayerMask의 값을 사용해 공간 매핑 오브젝트 이외가 반응하지 않게 설정하고 있다.
HolotoolKit의 기본값은 다음과 같이 레이어 마스크를 31로 설정합니다.
hitoInfo의 transform.gameobject를 surface로 얻고,
surface에 연결된 SurfacePlane 구성 요소를 plane으로 가져옵니다.
이렇게 하면 plane.PlaneType으로 평면 유형을 분류할 수 있습니다.
참고
RayCast 그 2, 충돌하는 오브젝트의 제한【Unity】
h tp // 칸-키쿠치. 하테나 bぉg. 코 m / 엔트리 / 라 y 또는 st2
Holographic academy Holograms230
htps : //에서 ゔぇぺぺr. 미 c 로소 ft. 코 m / 엔 우 s / 우 엔드 ws / 호 g 등 p 히 c / 호 g 등 ms_230
Reference
이 문제에 관하여(HoloLens에서 벽, 바닥, 책상, 천장 분류하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yosshi4486/items/b06ef68777e10c6482c5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(HoloLens에서 벽, 바닥, 책상, 천장 분류하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yosshi4486/items/b06ef68777e10c6482c5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)