V03. 원통형 대상(Cylinder Targets)
원기둥 대상(Cylinder Targets)를 사용하면 원통형 및 원추형 모양으로 래핑된 이미지를 감지하고 추적할 수 있습니다. Vuforia Engine은 실린더 타겟의 측면과 평평한 상단 및 하단을 추적할 수 있습니다. 소다 캔, 커피 컵, 머그잔, 드럼 용기 및 음료수 병은 모두 실린더 타겟에 적합합니다.
1. 원통형 타겟의 설계
1.1 권장 모양
1.2 실린더 타겟의 매개변수
- 상단 지름
- 측면 길이
- 하단 지름
원통형의 치수는 미터 단위로 정의합니다.
2. 장치 데이터베이스 작업하기
2.1 장치 데이터베이스에 원통형 대상 추가
① Target Manager 데이터베이스 목록에서 장치 데이터베이스의 이름( 여기서는 VuforiaMars_Images)을 클릭합니다.
② 세부 정보 창에서 Add Target을 클릭합니다 .Type을 Cylinder를 선택하고 Bottom Diameter, Top Diameter, Side Length(12.523, 12.523, 21.5)을 입력하고 Name은 RocketBooster을 입력하고 Add버튼을 클릭합니다.
③ Target Name 목록에서 RocketBooster을 클릭하여 나타나는 화면에서 옆면, 윗면, 아랫면의 이미지를 설정합니다.
2.2 장치 데이터베이스에서 대상을 다운로드하기
① Target Manager 탭바에 데이터베이스이름 VuforiaMars_Images을 선택하여 해당 웹페이지로 이동한 후 Download Database(All)버튼을 누릅니다.
② Download Database창에서 Unity Editor를 선택하고 Download 버튼을 클릭하여 VuforiaMars_Images.unitypackage 파일을 다운로드 받습니다.
2.2 데이터베이스를 Unity로 Import하기
① 메인 메뉴에서 Assets | Import Package | Custom Package…선택하여 다운받은 VuforiaMars_Images.unitypackage 파일을 임포트합니다.
3. 프로젝트에 장치 데이터베이스 작업 연동하기
3.1 원통형 대상 만들기
① GameObject 메뉴에서 Vuforia Engine | ARCamera 메뉴를 선택하여 Hierachy 창에 ARCamera 추가합니다.
② GameObject 메뉴에서 Vuforia Engine | CylinderTarget 메뉴를 선택하여 Hierachy 창에 CylinderTarget 추가합니다.
③ Hierachy 창에서 CylinderTarget 선택하고 Inspector에서 Cylinder Target Behaviour 컴포넌트의 Database 속성은 VuforiaMars_Images로, CylinderTarget 속성은 RocketBooster설정합니다.
④ Advanced 속성을 클릭하여 Slide Length 값을 0.11498로 변경합니다.
ⓢ Hierachy 창에서 CylinderTarget을 더블클릭하여 씬 창에서 이미지를 확인합니다.
3.2 오브젝트 만들기
① Project창에 Assets/SamplesResources/AugmentationAssets/Models/ 폴더에서 Drone.fbx 모델링을 Hierachy 창에서 CylinderTarget 하위에 추가합니다.
Position(-0.0011498, 0.0206964,-0.1108407), Scale(0.11498, 0.11498,0.11498)
② Project창에 Assets/SamplesResources/AugmentationAssets/Materials/Drone/ 폴더에서 Drone 머티리얼을 Hierachy 창에서 DroneTarget 하위의 Drone 모델링에 설정합니다.
③ Project창에 Assets/SamplesResources/AugmentationAssets/Animation/Drone/ 폴더에서 Drone 애니메이션 컨트롤러를 Hierachy 창에서 CylinderTarget 하위의 Drone 모델링을 선택한 후 Inspector 창에서 Animator의 Controller에 설정합니다.
④ Hierachy 창에서 Drone 모델 하위의 drone_eye01 하위에 빈오브젝트 추가하고 이름을 Scanner로 변경하고 Transfrom은 초기화하고, Scanner하위에 Cube 오브젝트 추가하고 이름을 ScannerPlane로 변경하고
Position(-0.36, 0,0), Rotation(0,180,0), Scale(1,0,1)을 설정하고,
Mesh Renderer->Materials는 DroneScan 설정,
Box Collider는 해제합니다.
실행하기
3.4 원통형 탐색하며 회전하기
① Hierachy 창에서 CylinderTarget 선택한후 Inspector 창에서 Cylinder Target Behaviour 속성에서 Add Occulusion Object 버튼을 선택하면 Hierachy 창에 CylinderTarget 이름(여기서는 RocketBooster Occlusion Object)으로 오브젝트가 자동으로 추가됩니다.
② Hierachy 창의 Drone오브젝트한후 Inspector 창의 Add Component 버튼을 클릭하여 새 스크립트 RotateAroundCylinder.cs를 추가합니다.
RotateAroundCylinder.cs
using UnityEngine;
public class RotateAroundCylinder : MonoBehaviour
{
Animator mDroneAnimator;
const float ROTATION_SPEED = -60;
void Start()
{
mDroneAnimator = GetComponent<Animator>();
if (mDroneAnimator)
{
mDroneAnimator.SetBool("IsFacingObject", true);
mDroneAnimator.SetBool("IsShowingLaser", true);
mDroneAnimator.SetBool("IsScanning", true);
}
}
void Update()
{
var parentTransform = transform.parent;
transform.RotateAround(parentTransform.position, parentTransform.up, ROTATION_SPEED * Time.deltaTime);
}
}
실행하기 => 드론이 원통형을 회전합니다.