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로 설정합니다.
![](https://s1.md5.ltd/image/7765183d78a3b65b0172332a64c29365.png)
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.)