HoloLens로 객체를 벽에 붙이기
소개
3월 초부터 인턴에서 주식회사 유메미( htps //w w. 유메미. 이. jp/그럼 ) 에서 HoloLens 의 연구 개발을 하고 있는 근대생의 요시입니다.
국내에서 지난 1월부터 제공을 개시한 MicroSoft제 MR 디바이스의 HoloLens에 대한 기사를 써 갑니다.
「HoloLens+타사제의 외부 입력」이나 「움직임을 3D 모델로 해 전달」등, 여러분들이 재미있는 시도를 많이 시험되고 있습니다만, HoloLens 개발의 기본적 부분의 기사가 그다지 없었기 때문에, 그것을 메인에 써 가려고 생각합니다.
하는 것
물체를 벽에 붙이기
Holographic academy Holograms230에서 나오는 Placement의 장소입니다.
물체를 만졌을 때 접착한 채로 움직이는 코드는 동영상으로 나왔습니다만, 생성시에 벽에 붙이는 곳의 설명은 없었기 때문에 해 갑니다.
전제 환경
물체를 벽에 붙이기
Holographic academy Holograms230에서 나오는 Placement의 장소입니다.
물체를 만졌을 때 접착한 채로 움직이는 코드는 동영상으로 나왔습니다만, 생성시에 벽에 붙이는 곳의 설명은 없었기 때문에 해 갑니다.
전제 환경
구현 예
adhereObjectOnTheWall.csRaycastHit hitInfo;
bool hit = Physics.Raycast(GazeManager.Instance.GazeOrigin,GazeManager.Instance.GazeNormal, out hitInfo, 20f, SpatialMappingManager.Instance.LayerMask);
if (hit) {
//ヒットした表面の取得
GameObject surface = hitInfo.transform.gameObject;
//表面からどれから浮かすかの値
float hoverDistance = 0.15f;
float offsetDistance = hoverDistance;
//設定したhoverDistanceよりGazeと衝突判定の発生した平面との距離が少ない場合0fにする。
if (hitInfo.distance <= hoverDistance) {
offsetDistance = 0f;
}
//衝突判定のあったポイントを少し浮かせる
Vector3 placementPosition = hitInfo.point + (offsetDistance * hitInfo.normal);
// ぶつかった壁の方向を向かせる
Quaternion rotation = Quaternion.LookRotation(surface.transform.forward, Vector3.up);
Instantiate(SomePrefab,placementPosition,rotation);
}
세로로 펠라펠라의 경우
Holograms230처럼 포스터이거나 세로로 흠뻑 빠진 객체는 위의 코드에서 문제가 되지 않을까 생각합니다. 그림에 걸리면 아래 그림과 같은 느낌.
옆으로 긴 경우
이것은이 상태에서 아래 그림과 같습니다.
대응책
Quaternion을 더해 봅시다. 위 그림과 같이 튀어 나오는 법은
AddQuaternion.csQuaternion rotation = Quaternion.LookRotation(surface.transform.forward, Vector3.up) * Quaternion.Euler(new Vector3(-90, 0, 0));
라는 식으로 다시 써 보세요. (위를 향하는 경우)
그러면 이렇게 될 것입니다.
참고・관련
Holographic academy Holograms230
htps : //에서 ゔぇぺぺr. 미 c 로소 ft. 코 m / 엔 우 s / 우 엔도 ws / 호 g 등 p 히 c / 호 g 등 ms_230
HoloLens에서 벽, 바닥, 책상, 천장 분류하기
ぃ tp // 이 m/구타 r_짱 r/있어 ms/b06에 f68777에 10c6482c5
Reference
이 문제에 관하여(HoloLens로 객체를 벽에 붙이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yosshi4486/items/da0328598e5e3df673ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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;
//表面からどれから浮かすかの値
float hoverDistance = 0.15f;
float offsetDistance = hoverDistance;
//設定したhoverDistanceよりGazeと衝突判定の発生した平面との距離が少ない場合0fにする。
if (hitInfo.distance <= hoverDistance) {
offsetDistance = 0f;
}
//衝突判定のあったポイントを少し浮かせる
Vector3 placementPosition = hitInfo.point + (offsetDistance * hitInfo.normal);
// ぶつかった壁の方向を向かせる
Quaternion rotation = Quaternion.LookRotation(surface.transform.forward, Vector3.up);
Instantiate(SomePrefab,placementPosition,rotation);
}
Holograms230처럼 포스터이거나 세로로 흠뻑 빠진 객체는 위의 코드에서 문제가 되지 않을까 생각합니다. 그림에 걸리면 아래 그림과 같은 느낌.
옆으로 긴 경우
이것은이 상태에서 아래 그림과 같습니다.
대응책
Quaternion을 더해 봅시다. 위 그림과 같이 튀어 나오는 법은
AddQuaternion.csQuaternion rotation = Quaternion.LookRotation(surface.transform.forward, Vector3.up) * Quaternion.Euler(new Vector3(-90, 0, 0));
라는 식으로 다시 써 보세요. (위를 향하는 경우)
그러면 이렇게 될 것입니다.
참고・관련
Holographic academy Holograms230
htps : //에서 ゔぇぺぺr. 미 c 로소 ft. 코 m / 엔 우 s / 우 엔도 ws / 호 g 등 p 히 c / 호 g 등 ms_230
HoloLens에서 벽, 바닥, 책상, 천장 분류하기
ぃ tp // 이 m/구타 r_짱 r/있어 ms/b06에 f68777에 10c6482c5
Reference
이 문제에 관하여(HoloLens로 객체를 벽에 붙이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yosshi4486/items/da0328598e5e3df673ae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Quaternion rotation = Quaternion.LookRotation(surface.transform.forward, Vector3.up) * Quaternion.Euler(new Vector3(-90, 0, 0));
Holographic academy Holograms230
htps : //에서 ゔぇぺぺr. 미 c 로소 ft. 코 m / 엔 우 s / 우 엔도 ws / 호 g 등 p 히 c / 호 g 등 ms_230
HoloLens에서 벽, 바닥, 책상, 천장 분류하기
ぃ tp // 이 m/구타 r_짱 r/있어 ms/b06에 f68777에 10c6482c5
Reference
이 문제에 관하여(HoloLens로 객체를 벽에 붙이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yosshi4486/items/da0328598e5e3df673ae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)