반응형

배경

가속도 데이터를 그래프화하여 실제 데이터 값들을 눈으로 확인할 수 있게 하고 싶었다. 하지만, 유니티에서 제공하는 Line Renderer 는 UI 용으로 사용할 수 없었다. 어떻게 하면 UI 에서 그래프를 구현할 수 있을지 구글링 해본 결과 우리 친절하신 외국인 형님들이 만들어 놓은 UI Linerenderer 를 이용하면 해결할 수 있을 것 같았다.

 

UI Linerenderer

https://github.com/Radishmouse22/UILineRenderer

 

GitHub - Radishmouse22/UILineRenderer: UILineRenderer for Unity

UILineRenderer for Unity. Contribute to Radishmouse22/UILineRenderer development by creating an account on GitHub.

github.com

 

깃헙에서 제공하는 UILineRenderer.cs 를 Canvas 의 오브젝트에 적용하면 UI에서도 LineRenderer를 사용할 수 있다.

 

 

Canvas 내의 오브젝트에 해당 스크립트를 아래와 같이 적용한다. 딱히 건드릴 것 없이 스크립트를 코드에 불러와 데이터를 적용하면 된다.

 

 

public UILineRenderer accXLine;
public UILineRenderer accYLine;
public UILineRenderer accZLine;
public UILineRenderer timestamp;

private List<Vector2> accXList;
private List<Vector2> accYList;
private List<Vector2> accZList;
private List<Vector2> timestampList;

 

Manager.cs 의 최상단에 UI Linerenderer를 선언한 변수를 만들어준다.

 

Vector2 accXVec = new Vector3(elapsedTime, accX);
Vector2 accYVec = new Vector3(elapsedTime, accY);
Vector2 accZVec = new Vector3(elapsedTime, accZ);
Vector2 timestamp = new Vector3(elapsedTime, 0f);

accXList.Add(accXVec);
accYList.Add(accYVec);
accZList.Add(accZVec);
timestampList.Add(timestamp);

 

가속도 데이터 값을 받을 때마다 Vector2 를 하나 생성해 List에 삽입한다.

 

//ScrollView 를 위해 width 늘리기
accXLine.rectTransform.sizeDelta = new Vector2(accXList.Count, 100);
accXLine.points = accXList.ToArray();

accYLine.rectTransform.sizeDelta = new Vector2(accYList.Count, 100);
accYLine.points = accYList.ToArray();

accZLine.rectTransform.sizeDelta = new Vector2(accZList.Count, 100);
accZLine.points = accZList.ToArray();

timestamp.rectTransform.sizeDelta = new Vector2(timestampList.Count, 100);
timestamp.points = timestampList.ToArray();

 

운동이 끝나게 되면 가속도 List를 Array 화 하여 points 에 할당한다.

 

 

조잡하지만 데이터를 그래프화하는 방법을 알아보았다.

반응형
반응형

배경


이제 스마트워치의 가속도 데이터를 가져왔고.. 3d 모델에 데이터를 전달해야한다. 3d 모델은 유니티로 만들어져 있어 유니티에 데이터를 전달하면 된다.

 

그렇기 때문에 안드로이드에 유니티를 임베딩 해야한다. 구글링을 해본 결과 잘 정리된 블로그를 발견해 그대로 따라해 보았다.

 

유니티 임베딩


[Android][Unity] 안드로이드와 유니티를 연동시켜보자(feat.Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0)

 

[Android][Unity] 안드로이드와 유니티를 연동시켜보자(feat.Caused by: android.content.res.Resources$NotFoundExcept

안드로이드 버튼을 눌렀을때 유니티로 접속이 될 수 있게 연동해보자!! https://www.youtube.com/watch?v=sf54tOAkmzU&t=301s 해당 영상을 참고해서 작성하였습니다. 🎈유니티 - Build Settings - 안드로이드 추가

minf.tistory.com

 

여기 그대로 따라하면 된다.

 

이 때 내가 임베딩을 하면서 유니티가 안떠 심히 고생을 했던 기억이 있다. 프로젝트가 다 끝나고 나서 정리하는지라 기억이 1도 안난다.

 

여튼 mainActivity 위에 unityHandlerAcitivity 를 불러오는 코드로 유니티를 띄울 수 있게 되었다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        startActivity(Intent(this, UnityHandlerActivity::class.java))
    }
}

 

이제 유니티를 수정하고 안드로이드에 띄울때마다 기나긴 빌드의 시간을 견뎌야 함을 깨달을 차례..

반응형

+ Recent posts