List
Instant Tracker 물체 생성
Posted Date: 2019-04-09 5:59     Edited Date: 2019-04-23 1:20     Writer: inactive

안녕하세요

현재 MAXST SDK InstantTracker를 이용하여 물체를 놓는 작업을하는데

처음에 사이트에 있는 튜토리얼을 따라서 큐브띄우는건 됐는데, 같은 방법으로 캡슐을 추가해서 띄우려고하니

버튼 클릭시 큐브랑 캡슐이 같이 띄워지고 같이 사라지는 현상이 생겨가지고 이럴때 어떻게 하면 좋을지 여쭤봅니다

제가 하고싶은건 큐브랑 캡슐 버튼이 있는데 큐브 눌렀을때는 큐브만 생성되고, 캡슐 버튼 눌렀을 때는 캡슐만 띄우는걸 하고 싶습니다 :) 

Posted Date: 2019-04-10 4:21     Edited Date: 2019-04-10 4:41     Writer: inactive

유니티로 InstantTrackable 자식에 새로운 캡슐을 하나 배치시켰나보네요. 

InstantTrackable 스크립트를 보면 InstantTrackableBehaviour.cs가 있구요.

GetComponentsInChildren가 해당 객체의 자식들을 모두 가져오는 객체고,

foreach문에서 모든 자식들을 enable = true 하면서 보여줬다 숨겨줬다 하고 있네요. 

InstantTrackable 자식으로 maxst_cube와 capsule가 있으니 둘 모두 보여졌다 숨겨졌다 하는거겠죠. 

 

해당 코드의 OnTrackSuccess 함수에서 foreach문을 돌때 아래와 같이 원하는 모델만 제어하도록

구분해주면 될 것 같네요. 

 

            GameObject gm = GameObject.Find("maxst_cube");
            
            // Enable renderers
            foreach (Renderer component in rendererComponents)
            {                
                if(component == gm.GetComponent())
                {
                    component.enabled = true;                    
                }
            }

            // Enable colliders
            foreach (Collider component in colliderComponents)
            {
                if (component == gm.GetComponent())
                {
                    component.enabled = true;
                }
            }

 

버튼을 따로 추가해서 각각의 모델을 보여졌다 숨겨졌다 할 수 있도록 수정하시면 될거에요. 

 

Leo

Maxst Support Team

Posted Date: 2019-04-10 5:55     Edited Date: 2019-04-10 5:56     Writer: inactive

public class InstantTrackableBehaviour : AbstractInstantTrackableBehaviour
    {
        public override void OnTrackSuccess(string id, string name, Matrix4x4 poseMatrix)
        {
            Renderer[] rendererComponents = GetComponentsInChildren(true);
            Collider[] colliderComponents = GetComponentsInChildren(true);

            GameObject a = GameObject.Find("Capsule");

            foreach (Renderer component in rendererComponents)
            {
                if (component == a.GetComponent("Capsule"))
                {
                    component.enabled = true;
                }
            }

            // Enable colliders
            foreach (Collider component in colliderComponents)
            {
                if (component == a.GetComponent("Capsule"))
                {
                    component.enabled = true;
                }
            }

            GameObject b = GameObject.Find("Cube");

            foreach (Renderer component in rendererComponents)
            {
                if (component == b.GetComponent("Cube"))
                {
                    component.enabled = true;
                }
            }

            // Enable colliders
            foreach (Collider component in colliderComponents)
            {
                if (component == b.GetComponent("Cube"))
                {
                    component.enabled = true;
                }
            }

            transform.position = MatrixUtils.PositionFromMatrix(poseMatrix);
            transform.rotation = MatrixUtils.QuaternionFromMatrix(poseMatrix);
            transform.localScale = MatrixUtils.ScaleFromMatrix(poseMatrix);
        }

 

이렇게 수정하라는 말씀이신가요? 글로만 봐서 이해가 좀 어렵네요..

OnTrackSuccess에서 수정했으면 OnTrackFail에서도 같이 바꿔줘야되나요?

Posted Date: 2019-04-10 6:08     Edited Date: 2019-04-10 6:08     Writer: inactive

구현하는건 본인의 스타일로 하시면 됩니다. 

동시에 뜨지 않았으면 좋겠다 하셔서 그 부분만 간략히 작성해서 알려드린거고, 

코드 구현에 대해 한줄한줄 읽어드릴수는 없습니다. 

유니티 기본 강좌를 보고 간단한 유니티 개념들을 숙지하시는걸 추천해드립니다. 

 

Leo

Maxst Support Team

Posted Date: 2019-04-13 4:47     Edited Date: 2019-04-13 4:47     Writer: inactive

답변감사합니다

 

maxst sdk를 이용해서 Maxst ar sdk 앱에 있는 Instant Tracker과 같은 기능을 구현할 수 있을까요?

저런식으로 만들어보고 싶은데..

Posted Date: 2019-04-15 2:06     Edited Date: 2019-04-15 2:06     Writer: inactive

네 가능합니다. 

저희가 제공하는 MAXST AR SDK앱이나 샘플 코드들이 모두 저희 SDK를 사용해

간단하게 구현한 예시입니다. 

 

Leo

Maxst Support Team

Posted Date: 2019-04-22 8:06     Edited Date: 2019-04-22 8:06     Writer: inactive

말씀해주신 답변을 통해 계속 코딩을 하고 있는데 쉽지가 않네요..

학교 프로젝트로 맥스트엔진을 사용하길 원하는데 시작을 못하고 있어서 괜찮으시다면 도움 가능할까요..?

Posted Date: 2019-04-23 1:20     Edited Date: 2019-04-23 1:20     Writer: inactive

저희는 SDK에 관련된 버그수정이나 문제사항에 대해 도움을 드릴 수 있습니다. 

코드 구현에 대한 도움은 드리지 않고 있습니다.

감사합니다.

 

Leo

Maxst Support Team