728x90
이번 포스팅에선 AR core 앱 안에 생성되는 3D 객체의 크기를 늘리고 줄이는 법에 대해 설명하겠습니다.
이전 글에 이어서 진행되는 포스팅이니 아직 AR core 포스팅을 보지 않으셨다면 먼저 보고 오시는 걸 추천드립니다.
https://stickode.tistory.com/203
이 포스팅에서 사용된 코드는 아래의 스틱코드 포스팅에서도 확인할 수 있습니다.
https://stickode.com/detail.html?no=2418
onCreate()를 보면 프래그먼트 설정 후, ModelRenderable로 3D 모델을 만든 다음 프래그먼트를 터치했을 때 3D 모델을 띄우는 걸 알 수 있습니다.
이제 화면에 띄운 3D 객체를 삭제하는 방법을 알아보겠습니다. 먼저 아래의 코드를 봐 주세요.
// 화면을 탭해서 3D 객체 생성
arFragment.setOnTapArPlaneListener(
(HitResult hitResult, Plane plane, MotionEvent motionEvent) ->
{
if (andyRenderable == null)
{
return;
}
// Anchor 생성
Anchor anchor = hitResult.createAnchor();
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(arFragment.getArSceneView().getScene());
// andy를 만들고 Anchor에 추가
TransformableNode andy = new TransformableNode(arFragment.getTransformationSystem());
andy.setParent(anchorNode);
andy.setRenderable(andyRenderable);
// 3D 객체를 탭할 시 해당 객체를 화면에서 지운다
andy.setOnTapListener((HitTestResult result, MotionEvent event) -> {
Node nodeToRemove = result.getNode();
if (nodeToRemove != null)
{
anchorNode.removeChild(nodeToRemove);
}
});
});
프래그먼트를 탭해서 3D 객체를 만들고, 그 객체에 다시 setOnTapListener()를 호출하는 걸 볼 수 있습니다.
그 안에서 HitTestResult에 담긴 3D 객체를 가져와 Node 객체에 매핑한 다음, null 체크 후 removeChild()의 매개변수로 Node 객체를 넘기는 걸 볼 수 있습니다.
결국 andy.setOnTapListener((HitTestResult result, MotionEvent event) 안의 코드를 통해서 화면의 3D 객체를 삭제하는 겁니다.
이렇게 onCreate()를 수정한 후 앱을 빌드하면 아래와 같은 화면을 볼 수 있습니다.
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] WebView 만들기 (0) | 2021.09.15 |
---|---|
[JAVA][Android] DatePickerDialog 만들기 (0) | 2021.09.10 |
[JAVA][Android]안드로이드 스튜디오 QR코드 만들기 (0) | 2021.09.06 |
[JAVA][Android] 인터넷에 있는 이미지 앱에 띄우기 (0) | 2021.09.04 |
[JAVA][Android] URI to STRING , STRING to URI 변환하기 (0) | 2021.08.31 |