증강현실 엔진 : Mixare (for Android) + 한글 주석 및 분석
raspy.egloos.com/5567654mixare.zip
/////////////////////////////////////////////////
증강현실(AR) 엔진 Mixare 한글 주석 및 분석
* v0.6.6(2011. 1. 25) 기반
공식 사이트(원본 배포처) : http://www.mixare.org
/////////////////////////////////////////////////
생각보다 작업이 오래 걸려버렸다.
본래는 프로그램 구조도 따로 문서로 작성하려고 했는데
작업이 지체되고 이것저것 건드는게 많다보니(사실 빈둥거리다보니)
일단 약간의 부가설명, 분석을 주석으로 달아두는걸로 만족하기로 했다.
생각보다 소스가 좀 꼬여 있어서 구조를 이해하는데 애를 먹었기에
분석하는데 조금이나 도움이 되겠다 싶은 부분엔 전부 주석을 달아두었다.
행여나 mixare를 분석하거나, 증강현실을 공부하려는 분이 있으시다면,
조금이나마 도움이 되었으면 좋겠다.
어짜피 오픈소스, 좋은것은 나누어야 하지 않겠는가. 그래도 여전히 골치아프만...
-------------------------------------------
문의나 수정 사항이 있으시면 댓글로 달아주시면 감사하겠습니다.
문제가 될 경우 삭제하겠습니다(__)
// 참고
1. 안드로이드 2.3.3 버전용 프로젝트로 생성되었고, 프로젝트 자체로 추가하셔야 합니다
(코드 자체는 수정된 부분이 없어, 공식 사이트(원 배포처)에서 받으셔도 프로그램 자체는 동일합니다)
2. 소스 코드 내의 마커(marker)는 마커형 AR의 인식에 쓰이는 그 마커가 아닌,
정보와 데이터를 담고있는 식별가능한 하나의 개념이라 생각하시면 됩니다.
3. 소스를 분석 하실때는
org.mixare.render, org.mixare.reality, org.mixare.gui, org.mixare.data, org.mixare
패키지 순으로 보시면 프로그램 전체 구조를 이해하시기가 한층 수월하실 겁니다.
증강현실(AR) 엔진 Mixare 한글 주석 및 분석
* v0.6.6(2011. 1. 25) 기반
공식 사이트(원본 배포처) : http://www.mixare.org
/////////////////////////////////////////////////
생각보다 작업이 오래 걸려버렸다.
본래는 프로그램 구조도 따로 문서로 작성하려고 했는데
작업이 지체되고 이것저것 건드는게 많다보니(사실 빈둥거리다보니)
일단 약간의 부가설명, 분석을 주석으로 달아두는걸로 만족하기로 했다.
생각보다 소스가 좀 꼬여 있어서 구조를 이해하는데 애를 먹었기에
분석하는데 조금이나 도움이 되겠다 싶은 부분엔 전부 주석을 달아두었다.
행여나 mixare를 분석하거나, 증강현실을 공부하려는 분이 있으시다면,
조금이나마 도움이 되었으면 좋겠다.
어짜피 오픈소스, 좋은것은 나누어야 하지 않겠는가. 그래도 여전히 골치아프만...
-------------------------------------------
문의나 수정 사항이 있으시면 댓글로 달아주시면 감사하겠습니다.
문제가 될 경우 삭제하겠습니다(__)
// 참고
1. 안드로이드 2.3.3 버전용 프로젝트로 생성되었고, 프로젝트 자체로 추가하셔야 합니다
(코드 자체는 수정된 부분이 없어, 공식 사이트(원 배포처)에서 받으셔도 프로그램 자체는 동일합니다)
2. 소스 코드 내의 마커(marker)는 마커형 AR의 인식에 쓰이는 그 마커가 아닌,
정보와 데이터를 담고있는 식별가능한 하나의 개념이라 생각하시면 됩니다.
3. 소스를 분석 하실때는
org.mixare.render, org.mixare.reality, org.mixare.gui, org.mixare.data, org.mixare
패키지 순으로 보시면 프로그램 전체 구조를 이해하시기가 한층 수월하실 겁니다.
덧글
bergi10 2011/08/19 10:42 답글
그리고 import에 사용할 라이브러리도 없어서 에러가 나긴 하는데,
간단하게 구현 방법에 대한 글을 어디서 참고해 볼 수 있을까요?
엥 그럴리가... 인코딩 문제가 아닐까요?
텍스트 인코딩을 UTF-8 으로 바꿔보시면 아마 깨지지 않을겁니다
라이브러리는 별도 추가 필요없이, 그냥 프로젝트 자체를 import 하셔서 쓰시면 되요~
(압축을 푸신후 워크스페이스에서 import, General-Existing projects into workspace 선택)
Raspy 2011/08/19 13:27
섭풍 2011/08/24 10:39 답글
무궁한 발전이 있으실꺼에요!!
공부 하다 이것저것 궁금할때 찾아 올께요!!
넵 감사합니다
부족한 자료지만 도움이 되시길 바랍니다 ㅎ
Raspy 2011/08/24 20:59
타임 2011/09/17 14:04 삭제 | 답글
궁금한게 있는데 로딩화면을 구연할려고 해요~
그런데 기존의 로딩화면(ex.http://blog.naver.com/PostView.nhn?blogId=man8408&logNo=110104525158)
처럼 시도 하니 꿈적도 안하네요..어떤 방식으로 접근을 하면 될까요>
사실 지금 돌아보면 거의 그냥 해석 수준이라... 대단할것도 없어요 ㅎㅎ;
저도 방금 테스트해보니 이 소스의 onCreate() 부분에서 스플래쉬 액티비티를 띄우는 경우엔
대책없이 에러가 나네요-_-a 시간이 없어서 제대로 테스트해보진 못했지만,
아마도 데이터 로드 부분만 따로 잘 골라내서 묶으면 해결될거라 생각합니다 ^^;
다만, 로딩화면 자체를 띄우는 것이 목적이라면 간단한 편법(?)이 있습니다.
시작 액티비티를 따로 설정하고(시험용으로 소스내의 MixareActivity를 사용하셔도 무방합니다)
그 시작액티비티에서 로딩화면 생성->간단한 데이터 처리후 MixVew를 호출
이 방법이라면 정상 동작함을 확인했습니다 ㅎ Raspy 2011/09/18 14:15
엑티비티를 하나 추가 시켜 로딩화면을 불러들였는데 여기서
MixView 로 보내는 것에서 헤매고 있네요... 조언좀 부탁드릴께요~
public class SplashView extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Splash(로딩화면) 띄우기
startActivity(new Intent(this, SplashActivity.class));
// do_something();
}
} 타임, 2011/09/18 20:33 삭제
일단 SplashView를 메인 액티비티로 지정하셨죠?
SplashActivity를 호출하셨으면 SplashActivity 내부의 onCreate() 부분에서
핸들러 처리를 하셨을테고.. 그곳의 handleMessage() 내부에서 또다시 startActivity()를 이용해서
MixView를 호출하시면 됩니다~ 이전의 액티비티들은 finish()로 끝내주시구요 Raspy 2011/09/18 22:45
//헉 안보시고도 어떻게 아셨어요? 위에소스 메인으로했고 아래소스가 불러들이는 소스에요 ;;;
//그런데 로고는 나오는데 로고 후 바로 죽어버리네요 ;;;;ㅜㅜ 어디가 잘못된걸까요./
public class SplashActivity extends Activity {
protected static final Intent MixView = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Handler handler = new Handler () {
@Override
public void handleMessage(Message msg) {
finish();
startActivity(MixView);
}
};
handler.sendEmptyMessageDelayed(0, 3000);
}
}
타임, 2011/09/18 23:15 삭제
당연히 메인 액티비티에서 불러와야 하니까요 ㅋㅋ
public void handleMessage(Message msg) {
finish();
startActivity(MixView);
}
이 부분이 잘못되었네요-_-a
스플래쉬 액티비티를 불러올 때처럼 인텐트를 인자로 넣어주셔야 합니다
startActivity(new Intent(this, MixView.class)); 이런식으로...
위에 MixView를 인텐트 상수로 선언하시고 null로 지정하셨는데
그래서 죽는것일거라 생각합니다^^; 문법적으론 에러가 아니니 이클립스에서는 잡지 못하죠
MixView는 이미 mixare 소스내에 있는, 카메라 화면을 보여주는 클래스이기 때문에
따로 설정할 필요 없이 그냥 불러주시면 됩니다-
Raspy 2011/09/18 23:59
타임 2011/09/19 00:34 삭제 | 답글
public class SplashActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Handler handler = new Handler () {
@Override
public void handleMessage(Message msg) {
finish();
startActivity(new Intent(SplashActivity.this, MixView.class));
}};
handler.sendEmptyMessageDelayed(0, 3000);
}}
코드는 똑같은데... 아마 xml 파일을 잘못 수정하셨거나,
매니페스트에 추가 액티비티를 등록하지 않았다거나 하신것 같습니다^^;
일단 수정버전 드립니다. 밑의 주소로 다운로드 해주세요
http://aroneed.tistory.com/attachment/cfile28.uf@156279374E7614D6128199.zip
스플래쉬 이미지는 일단 믹사리 로고 사용했습니다~Raspy 2011/09/19 00:59
타임 2011/09/19 01:35 삭제 | 답글
airport04 2011/09/21 02:31 삭제 | 답글
염치 불구하고 여러가지 질문을 드렸네요.... 부탁드리겠습니다. 꾸벅~
많이 바쁘신가 보네요..^^ 이미지 뛰우는 건 성공했습니다. 좌표를 코드에 직접 입력하는 건 아직인데 도움이 부탁드릴께요. airport04, 2011/09/25 02:47 삭제
학기중이라 조모임이 몰려 블로그 관리를 못했네요.. 죄송합니다^^;
이미지를 띄우는건 자체URL로부터 값을 받아 읽어 뿌려주는 부분을 참고하셔서
해결하실 수 있으셨을거라 생각합니다~ 원 그리는 것 대신 이미지로...
좌표를 직접 입력하신다는건 원하는 좌표를 따로 추가하시기 위함이지요?
소스에 직접 코딩하시기보다는 내부의 파일에서 읽는 방법을 추천드립니다 ㅋ
사실 어떤 방법으로 하시던간에 입력되는 구조가 중요한데요
따로 체계를 만드셔도 좋지만 org.mixare.data 패키지의 내용을 참고하셔서
JSON형태로 만드시는게 편해요 ㅎㅎ 로드하는 부분도 이미 준비되어 있구요.
그렇게 만들어진 JSON형태의 파일을 데이터소스로 추가하시거나
그냥 시작할때 무조건 읽어들이게(데이터소스 읽는 부분 참고하세요~) 하시면 될겁니다^^
정리하자면, org.mixare.data 패키지의 소스들을 참고하여 json형의 파일, 혹은 리소스를 만드시고
org.mixare 패키지의 몇 부분을 수정하여 그것을 읽는 부분을 추가하시면 되겠습니다.
차후에 시간이 나면 차근차근 따라갈만한 예제를 만들어 보겠습니다ㅜ 성공하시길 빕니다! Raspy 2011/09/25 22:12
배가빵빵 2011/09/26 09:39 삭제 | 답글
근데 제가 mixare소스에 추가하여서 마커(?) 오브젝트를 터치하면 제가 만들 화면으로 넘어가게 하고싶은데
새로운 클래스를 만들어서 일단 화면 터치만하면 intent를 사용해서 화면을 넘기려고하는데
Manfest문제로 화면이 넘어가지 않고 앱이 먹통이되어버립니다 . manifest에는 클래스를 등록했는데
왜그런지 알고싶습니다. menifest에 클래스 등록하는형식에 대해서도 답변 부탁드려요;;
쓰다보니 제 질문을 이해하실지가 걱정되네요;;
매니페스트 문제로 화면이 안넘어가는게 확실하시다면,
등록시에 절차가 하나 빠지셨을거예요 아마^^;
매니페스트에 액티비티 등록시에는 일단 액티비티부터 등록하시고,
등록한 액티비티에 인텐트 필터를 추가하시고, 그 내부에서 카테고리-액션으로
런쳐를 설정해 주셔야 인텐트를 이용해 호출하실 수 있어요~
지금은 이클립스를 못쓰는 곳에 있어서 말로만 대충 설명드릴 수 밖에 없네요 ㄷㄷ;
그래도 잘 안되신다면 나중에 다시 또 답변 드리겠습니다(__) Raspy 2011/09/26 13:43
airport04 2011/09/26 13:28 삭제 | 답글
저도 사실 그 수식 계산부분은 잼병이라... 만족스런 답은 못드릴것 같습니다;
일단, 위치를 계산하고 실공간 내에 뿌려주는 부분은
org.mixare.render, org.mixare.reality 두 패키지의 소스들이 핵심입니다.
실제로 출력하는 부분은 org.mixare 패키지의 마커와 뷰 부분이고...
각도(혹은 고도?)가 문제라면, 아마 위의 부분들을 수정하면 답을 찾으실 수 있을겁니다 ㅎ
p.s : 혹시 다른 기존의 마커들도 45도씩 위로 올려야 하나요? Raspy 2011/09/26 13:53
기존 마커들은 모두 없애고 제가 원하는 마커만 띄우게 했습니다. airport04, 2011/09/27 08:42 삭제
아.. 기존 마커들과 같이 띄우셨었으면 좀 더 비교해보기 수월하셨을것 같은데.. Raspy 2011/09/28 22:32
airport04님 궁금한 점이 있습니다.
오브젝트가 나타나는게 45도를 기울여야 나온다고 하셨는데..
현재 저 같은경우에도... json을 활용해서 좌표를 찍고 오브젝트를 확인하는데..
기울여야만 나오더라구요...
혹... 수정하셨는지요...?
하셨다면 어느부분인지 말씀해주실수 있으신가요? 대롱 2011/11/11 16:00
배가빵빵 2011/09/26 14:58 삭제 | 답글
인텐트 필터에 대한 설명은 아주 잘 해주신 분들이 계셔서 링크합니다~
http://underclub.tistory.com/361 , http://androidhuman.tistory.com/262
위 포스팅들을 참고하셔서 직접 매니페스트 파일에 추가해주셔도 되고,
아니면 이클립스에서 AndroidMenifest.xml 파일을 클릭하셔서 Application 탭 누르시고
하단의 Application Nodes 부분에서 Add 버튼 누르셔서 추가해주셔도 됩니다.
이 경우의 추가 순서는 액티비티 추가, 네임(파일) 선택->추가한 액티비티 클릭 후 인텐트 필터 추가
->추가한 인텐트필터 클릭 후 카테고리 추가, 네임을 android.intent.category.LAUNCHER로 선택
이 되겠습니다(__)
Raspy 2011/09/28 22:32
airport04 2011/10/04 02:30 삭제 | 답글
N101 터치했을 때 일정한 형식의 화면(엑티비티)이 보여지고 N102를 터치했을 때도 동일한 형식이지만 내용은 다르게 나타나도록 하고 싶은데 어떻게 하는게 좋겠습니까?
리스트의 아이템을 터치시에, 액티비티는 전환하되 인텐트를 이용하여 특정 변수를 넘기는건 어떤가요?
받아온 변수에 따라 호출되는 액티비티에서 내용은 다르게 표시하구요~ Raspy 2011/10/05 12:23
airport04 2011/10/08 19:08 삭제 | 답글
xml파일에서 스크린 오리엔테이션이 landscape로 고정되었는지 확인해보세요.
landscape로 설정되어 있으면 수평, portrai로 되어있으면 수직으로 고정됩니다~
오리엔테이션 문제가 아니라면 리스트뷰 자체에 어떠한 제약이 걸려있을지도...
더욱 확실히 알고 싶으시다면, 기약없는 저를 기다리시기보단
안드로이드사이드(www.androidside.com), 안드로이드펍(www.androidpub.com) 등의
개발자 커뮤니티들을 찾아보시면 생각보다 훨씬 빠르고 간단하게 답을 얻으실 수 있을겁니다^^;
Raspy 2011/10/09 23:50
loves434 2011/10/13 19:55 삭제 | 답글
잘봤습니다. 감사합니다
질문이생겨서요
제가 아파치와 php를 이용해서 페이지를 구현했습니다
그걸 증강현실에 적용할려면 어떻게 해야하는지 했갈려서 적용을 못하겠습니다.
죄송하지만 설명좀 해주시면 안되겠습니까? ..^^
죄송합니다만 질문을 잘 이해하지 못하겠습니다..ㅜㅜ;
웹페이지를 만드셨는데, 그걸 증강현실에서 쓰이게 하고싶으시다는건가요?
어떤 방법으로 쓰게 되실지는 잘 모르겠지만, MIXARE포스팅이니 MIXARE 기준으로 설명하자면-
위치기반 증강현실에서 핵심이 되는 것은 외부의 정보를 긁어 증강된 뷰에 뿌려주는 것입니다.
MIXARE의 기본 프로그램에서는 위키의 정보와 SNS를 이용한 소셜 마커를 생성해 뿌려줍니다.
만약 이와 같은 방식으로 자체 구축하신 서버의 페이지를 호출하고 싶으신거라면
소스코드 내의 자체 URL을 사용한 부분을 참고해주시면 되시겠습니다~ Raspy 2011/10/14 01:06
대롱 2011/11/11 15:59 답글
Raspy 님 감사합니다 ^^
부족한 번역 봐주셔서 감사합니다(__)
정신없어서 요새 안드로이드는 손대지 못하고 있는데,
시간 날때 튜토리얼이라도 만들어 둬야 겠어요^^; Raspy 2011/11/13 13:58
바위깨는계란 2011/11/19 19:58 삭제 | 답글
카메라 뷰에서는 정상적으로 동작하는데 까지는 성공했습니다.
그런데 맵뷰에서 구글맵을 받아오지 못하고 모눈종이만 출력이 되더군여...
개발자용 디버그 키스토어값을 새로 등록해서 릴리즈 키스토어 받아서 MixMap
에서 MapView호출할때 집어넣어줬거든요... 그런데도 모눈종이 여전한 이유가 먼지 모르겠네여.
답변이 늦어져서 죄송합니다; 정신이 없어서... 매우 부족한 분석이 부끄럽습니다^^;
키스토어 값을 재발급 받으셨다고 하셨는데, 그럼 키스토어를 값을 받으신 후에
구글맵 API 키도 다시 받으셨나요? API키도 함께 받으셔서 xml파일 내부의 키를
재설정 해주셔야 맵이 제대로 동작합니다~
확인해 보시고, 혹시 다른문제라면 또 연락주세요(__) Raspy 2011/11/21 13:19
maejae 2011/12/11 14:22 삭제 | 답글
전 별로 한게 없는걸요 ㅋㅋ 졸업 축하드립니다! Raspy 2011/12/31 23:51
Kaus 2011/12/24 20:58 삭제 | 답글
어떻게 방법이없나요..ㅠㅠ
ㄷㄷ 정확히 어떤 에러가 나는건가요? 늦은 답변 죄송합니다; Raspy 2011/12/31 23:51
유혈 2012/02/04 22:29 삭제 | 답글
저는 혼자 공부하고있는 학생입니다..ㅠ
혹시 여러자료있으시면은 공유좀 부탁드립니다..ㅠ
혼자 하다보니..자료가많이부족해서요..ㅎㅎ;;
기본적인 자료도 가지고계시면은 공유부탁드립니다 ㅜ
deathquin@nate.com으로 부탁드리겠습니다..
저도 공부하고 있는 입장이라...^^;
어떤 종류의 자료를 원하시는지 구체적으로 말씀해 주시면
도움이 되겠다 싶은것을 공유해드리겠습니다. 늦은답변 죄송합니다! Raspy 2012/03/04 21:22
ㅠㅠ 2012/02/06 14:40 삭제 | 답글
분석해주신 소스는 잘 보고 있습니다.
다름이 아니라 OWNURL의 마커들을 원이나 삼각형이 아닌 제가 원하는 이미지로 띄우고 싶습니다
이부분에 대해서 여러가지로 시도해봤는데 그냥 어플오류만 발생하더군요
이미지를 띄우는건 자체URL로부터 값을 받아 읽어 뿌려주는 부분을 참고하셔서
해결하실 수 있으셨을거라 생각합니다~ 원 그리는 것 대신 이미지로...
라고 설명해 주셨는데 구체적인 힌트 없을까요?
OWNURL 부분을 search해 봐도 미리 구현된 부분 빼곤 이미지를 불러오는 부분이라던지 그런부분은 없던데요 ㅠㅠ 도움이 절실합니다
우선, 늦은 답변 죄송합니다 ㅜ
멤버십 일로 바빠서 한달간 블로그를 보지를 못했네요;
안드로이드는 요즘 거의 손을 못대고 있어서, 기억나는대로 설명드리자면
자체URL을 받아 뿌리는 부분은 잘 기억나질 않지만..(혹시 잘못 설명드린건가 싶기도 하네요 ㄷㄷ)
현재 이미지로 뿌려지는 마커들(소셜마커, 맵뷰의 마커 등)을 보시면 감이 잡히실 것 같습니다.
좀 더 확실하고 구체적인 설명은 제가 다시 소스를 직접 보고 말씀드려야 할 것 같네요 ㅜㅜ
혹시 아직 해결 못하셨다면, 나중에 좀 더 자세히 답변 드리겠습니다! Raspy 2012/03/04 21:50
은빛 2012/04/05 16:43 삭제 | 답글
제지도라는 것이 어떤것을 말씀하시는건지 잘 모르겠습니다 ㄷㄷ;
Mixare는 위치기반의 증강현실 엔진으로
증강현실이란 실세계에 가상의, 혹은 유용한 정보들을 '증강'하여 보여주는 것이며,
위치기반이란건 현재 실세계의 위치(보통 좌표값을 이용하지요) 정보들을 이용하는걸 뜻합니다.
지도를 추가하신다면 어떤식으로 이용하신다는 건지 모르겠지만
만약 임의의 좌표값을 이용한 정보의 지도라면, OWNURL 부분을 참고해 주세요~
Raspy 2012/04/23 12:41
ash 2012/05/16 18:08 삭제 | 답글
질문 드릴꼐 있는되요. OpenSteetMap 에서 인자로 위도 경도를 주어서 데이터를 가져오면은 못 가지고 오더라구요, 그래서 http://wiki.openstreetmap.org/wiki/Ko:Nominatim 여기서 들어 가서 찾아 보니깐 소스랑 데이터를 가져오는 부분이 다르던데 .... 저만 OSM 에서는 데이터를 못가져 오는 건가요??? 아니면 소스가 잘못 된 건가요???
ash 2012/05/16 18:11 삭제 | 답글
ash 2012/05/17 10:45 삭제 | 답글
감사하긴요.. 부족한 자료가 부끄러울 따름입니다(__);; 제대로 수정본을 다시 업해야 하는데, 안드로이드는 요새 통 건들지를 못해서 지원을 못해드리고 있네요 ㅜㅜ
버즈, OSM 등등.. Mixare는 타 서비스에 의존이 강한 엔진이기 때문에 변경사항에 대해서는 별도로 확인하고 적용해주어야 합니다 ㅎㅎ; 그 주소 값이나 형식, 인자등은 각자의 서비스에서 제공하는 API를 참고하셔야 하구요~ 보통 (서비스명) API로 검색해보시면 원하는 결과를 얻으실 수 있을겁니다!
이제는 꽤 된 버전의 Mixare라 변경사항들이 적용이 안되어 있어요... 최근의 버전에서는 수정되었는지는 확인 못해봤지만, 공홈을 가보면 꾸준히 업데이트는 되고있는 것 같습니다. Raspy 2012/05/18 01:32
ash 2012/05/21 18:24 삭제 | 답글
1. 위도, 경도를 갱신을 하는 부분이
locationMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000,10, this); 이 부분 이잖아요.. 10 초마다, 아니면 10m 이동마다 갱신한다..
2.위도 경도를 가져 오는 것은
Location gps = locationMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
이 부분이구요.
1, 2 이 맞다는걸 전제로 질문 드리겠습니다.(1,2 번이 틀렸다면 말씀해 주시면 감사합니다.)
1. 위,경 도를 갱신하는게 GPS 의 값에 대해서만 갱신한다구 되어 있는데요. 그러면은 NETWORK 에 대해서는 갱신을 안하는건가요?
2. 그리구 값을 갱신하는 부분이 onCreate(){} 로 둘러 쌓여져 있는데 그럼 위,경도를 갱신하는 부분에 대해서는 onCreate(){} 를 콜할때에만 되는 거 잖아요. 그럼 10초마다 값이 갱신이 안되지 않아요...?
답변 기다리구 있겠습니당.ㅎ 물론 그 전에 해결이 난다면 다행이겠지만요..ㅎ 그럼 다시한번 감사드려요 ㅎ
onCreate(){} 가 호출될때에만
에구.. 늦은 답변 죄송합니다;
1, 2가 전부 위치값을 얻어오는 것인데, 1의 경우에는 실제로 얻어오는 것이고, 2의 경우에는 (최후에)얻어왔던 값을 다시 가져오는 것입니다. requestLocationUpdates의 경우에는 지속적으로 갱신을 하는데.. onCreate() 내부에 있다고 생성시 1회만 호출되는 것이 아니고, 인자값을 넣어 요청을 생성하면 주기마다 호출되어 값을 얻어오게 되는 것입니다. GPS든 NETWORK든요~
좀더 자세한 사항은 안드로펍, 안드로사이드등 안드로이드 관련 커뮤니티나, 안드로이드 프로그래밍 정복 저자 김상형님의 사이트인 http://winapi.co.kr/android 에서 추가강좌 부분을 참고하시면 도움이 될거라 생각합니다^^;Raspy 2012/05/28 15:31
^^ 그래두 꾸준한 답변에 감사드립니다 ㅎ
다시한번 감사드려요 ^^
ash, 2012/05/30 11:01 삭제
줄리앙 2012/05/30 09:35 삭제 | 답글
혼자서 독학할려니 모르는부분이 많아 도움을 조금 얻고자 글을 남깁니다.
현재 카메라만 때와서 구동된 상태에서 텍스트박스? 를 카메라 화면에 띄워볼려고 하나 잘 되지않습니다.
장소와 거리를 띄우는 텍스트박스를 띄우기 위해선 어느부분을 봐야할지 잘 모르겠습니다.
(장소와 거리를 표시해주는 부분은 아직 하지 않았고 텍스트박스만 띄우는 부분을 찾고있습니다.)
자바 안드로이드를 첨해보는거라 툴사용이라던지 언어에 조금 혼돈이 와서 코드의 흐름을 잘 이해를
못하겠네요.
Marker와 PaintScreen, TextObject 이 3개가 텍스트박스를 구현하기 위한 클래스로 제가 짐작하고
있어서 나름대로 때와서 구동하려 했으나 텍스트박스를 띄울려고 paintObj 라던가 paintText 코드를 넣으면
카메라도 작동이 안되 강제종료 되네요. 여기까지가 제가 시도해본 부분입니다.
이해를 잘 못해서 잘못된 코드를 만들었을거라 생각을 합니다. 코드를 보면 onCreate 에서 이 것을
처리하지 않더군요.
혹시 초보자가 좀 이해하기 쉽고 따라할만한 증강현실 소스가 있으시면 부탁드리겠습니다.
음 몇일 공부한 끝에 완성을 했네요. mixare가 너무 초보자에겐 큰 소스덩어리라 이해하기 너무 어려워
기능을 하나하나 잘라 따로 공부하니 구현이 쉽네요.
전체를 이해하기 보단 기능 하나를 재대로 알고 구현 원리를 알면 증강현실 만드실 수 있을거 같습니다. 줄리앙, 2012/07/23 09:35 삭제
스스로 해결하실 수 있었다니 다행입니다 ㅎㅎ
그렇게 참고하면서 조금씩 부분적으로 구현하다보면,
원리 이해도 쉬워지고 실력도 차곡차곡 쌓이셨을거라 생각됩니다.
꽤 되었지만 지금도 좋은 성과를 얻고 계실거라 믿습니다! Raspy 2012/09/30 21:47
ash 2012/05/30 17:22 삭제 | 답글
org.mixare.render 이 부분의 계산 하는 부분이 잘 이해가 안가더라구요.
좀 더 정확히 찍자면 org.mixare.reality 의 PhysicalPlace.java 의 convLocToVec() 이 부분 도 그렇구 render() 부분에서는 거의다 이해가 안가더라구요.. 위에 쓰신 글중에 계산 부분은 잘 모르신다구 하신 부분이 기억 나지만 혹시나 해서 이렇게 글 남깁니다.
일단 기본사항으로 벡터를 사용하는 이유에 대해서도 묻고 싶네요..
쓰다보니 너무 두서없이 쓴것 같네요 ^^;;
1. PhysicalPlace.java 의 convLocToVec() 이부분에서 보면 변화된 위치에 대한 위도 경도를 구해서 POI
위치 까지의 관계 지점의 벡터를 계산하는데 distanceBetween() 의 인자를 배치하는 부분이 헷갈리네요,.
2. 두번째는 벡터를 사용하는 이유에 대해서 직관적으로는 알수 있을것 같으나 먼가 설명을 하려고 하니
머라고 해야 할지를 모르겠더라구요.. 이 부분에 대해서는 어떻게 생각 할수 있을까요???
벡터를 사용하는것은, 거리와 위치의 계산을 직관적으로 쉽게 하기 위함이라 생각됩니다.
벡터의 기본 정의를 생각해보시면, 쓰임새가 이해 되실거예요 ㅎㅎ
인자를 넣는 것도 같은 맥락에서 생각해보시면 이해하기 수월하실겁니다~ Raspy 2012/09/30 21:44
그림쟁이 2012/07/23 16:58 삭제 | 답글
저도 저 사이트에서 저 자료를 구했는데 import 부분에서 i
mport org.mixare.lib.MixUtils;
import org.mixare.lib.gui.PaintScreen;
import org.mixare.lib.gui.ScreenLine;
import org.mixare.lib.marker.Marker;
import org.mixare.lib.render.Camera;
이 부분들이 에러가 나더군요.
근데 여기서 받은 것은 몇몇 부분은 없고 에러도 없던데
어떻게 하셔서 해결하셨는지 궁금합니다...
아마 최신 버전과 파일 구성이나 내용등에 차이가 좀 생겼을겁니다 ㅎㅎ 이젠 좀 된 자료라...
최신 버전 사용을 위해서는 이 자료를 참고만 해주시고, 변경사항이나 추가 부분은
공부하시면서 분석해나가시면 여러모로 도움이 되실거예요~ Raspy 2012/09/30 21:45
마봉식 2012/08/01 10:10 삭제 | 답글
카메라도뜨고 레이더도 뜨고 하는데 중요한 장소가 안뜨네요
아무값도 안넣으신건가요 아니면 주소를 가져오는 사이트가 망한건가요??
소스에는 철도역 보이기로 해놓은거 같은데 아무것도 안떠서 질문드립니다.
제가 자료를 업로드 한 시점에서부터 기존의 주소는 사용이 불가능한 상태였습니다 ㅎㅎ
아무래도 기존의 사이트가 망했거나, 문제가 생겨 데이터를 얻어오기 힘든것 같습니다.
요새는 구글 버즈도 영 시원찮고...
테스트를 위해서는 임의의 값을 넣어보시거나, 트위터등 SNS 자료를 띄워보시길 바랍니다 Raspy 2012/09/30 21:41
DHDUSER 2012/09/09 18:18 답글
여쭈어 보고 싶은 부분이 있는데 여쭈어 봐도 되나요 ?? ;;
상당히 장기간 블로그를 방치해두고 있어서 답변이 늦었습니다;
이미 다른 곳에서 많은 지식을 얻으셨겠지만, 궁금하신 것은 물어보셔도 됩니다~ Raspy 2012/09/30 21:40
초보 2012/10/29 21:30 삭제 | 답글
자바 프로젝트를 임포트 하는 방법을 찾아보시면 될 듯 합니다~
하나하나 상세히 설명해 드리고 싶지만 여유가 없어서 결국 튜토리얼도 못만들었네요 ㅜㅜ Raspy 2012/11/13 23:36
asd 2012/12/07 16:03 삭제 | 답글
찾아보려고 했는데 잘 모르겠어요 부탁드립니다!!
답변이 늦어서 죄송합니다^^;
제가 요즘 블로그도 관리 못하고 안드로이드는 건들지 않는 터라
쉽사리 답변을 드리지 못했는데, 훌륭히 정리된 곳이 있어 링크드립니다
http://blog.secmem.org/119
제가 요즘 활동하는 삼성소프트웨어멤버십의 엘리트회원 분께서 정리해놓으신 글입니다.
튜토리얼 형식으로 말끔히 정리가 되어있으니 참고하시면 수월히 진행하실 수 있으실 거예요!Raspy 2013/01/26 10:42
후후 2013/01/23 18:36 삭제 | 답글
mixare로 증강현실에서 지금은 station밖에 볼 수가 없는데요
그래서 URL을 건드려서 건물명을 넣고싶은데 어떤 api를 이용해야 할지 모르겠네요
우리나라 지도는 자세하지가 않더군요... 코드안에 있는 url들은...
일단은 openstreetmap을 이용해서 여기에 있는 병원을 추가해봤는데
속도가 너무 느려서 제대로 실행조차 안되는데
어떻게 해야할까요ㅠㅠ 혹시 도움을 주실 수 있다면 답변 부탁드립니다
늦은 답변 죄송합니다 ㅜ
역시 윗 답변에서 드렸던 블로그 ( http://blog.secmem.org/119 )를 참고해 주시면 감사하겠습니다~
각 건물들의 좌표는 구글이나 각종 포털 사이트의 맵에서 제공하는 API로 얻으시면 되구요,
약간의 오차는 어쩔 수 없는 것 같습니다ㅜ 하지만 제가 테스트 해봤던 결과로는
GPS를 제대로 활용하기 힘든 건물이 조밀한 지역이나 건물 내부를 제외하고서는
어느정도 만족스러웠던 기억이네요~
최후의 방책으로 발로 뛰어서(?) 기기로 직접 좌표를 얻어보시면 더욱 정확합니다 -_-ㅋ
속도 문제는 기기 문제가 아니라면 소스를 잘못 건드셨을 확률이 큽니다. 확인해 보세요!Raspy 2013/01/26 10:49
cocojin 2013/03/03 14:13 삭제 | 답글
위키나 트위트 그러한 기능 없애고 불필요한 메뉴를 없애고 싶은데 워낙 처음이라 그런지
하나 지우면 많이 오류가 생겨서 겉잡을수가 없습니다. ㅠㅠ
불필요한 기능을 지우고 싶으시면, 필요 없다 생각하는 기능의 작은 부분부터 일단 주석처리를 하면서 테스트 해보시는 방법을 추천드립니다~ 그렇게 점점 넓혀가면서 한계 범위를 정하는 것이죠. Mixare의 구조를 완벽히 이해하고 계시다면 수정은 금방이지만, 잘 모를때 무턱대고 지우는 것은 무리가 있으실 겁니다. 윗 댓글에 링크해놓은 블로그 참고하면서 조금씩 구조를 파악해 보시기 바랍니다! Raspy 2013/03/11 22:52
Friya 2013/03/25 01:28 삭제 | 답글
아무리 해도 안되네요...
제 개발환경은
Eclipse java EE development
JDK 1.6 1.7
ADT 4.2.2 , 2.3.3 깔려있습니다...
대체 뭐가문제일까요;
인코딩 문제로 주석 등이 깨져서 소스에도 영향이 갔을 수도 있습니다.
UTF-8로 바꿔보세요! Raspy 2013/03/26 03:30
Friyia 2013/03/25 01:29 삭제 | 답글
toyou04net@naver.com 로 꼭좀 부탁드립니다...........
새로운 소스는 공식 배포처인 www.mixare.org 에서 구하실 수 있어요~
이 버전과는 구조가 달라졌는지는 모르겠습니다만...^^; Raspy 2013/03/26 03:30
sangu 2013/03/29 15:01 삭제 | 답글
여러여러 물어물어 아파치서버와 mysql php 다 다운받아 놓았습니다.
그런데 php에 위도경도를 박아서 mixare코드상에 경로를 제가 만들려는 php 로 바꿔주기만 하면되는건가요??ㅜㅜㅜ php에 위도경도는 어떤 식으로 작성해야하는지... 공부중인데 이곳 말고는
정보를 구하기가 너무 힘드네요 ㅜㅜ 방향좀 잡아주세요 ㅜㅜ
http://blog.secmem.org/119
이 곳을 참고하시면 좀 더 디테일한 정보를 얻으실 수 있습니다~
단순 원하는 위치를 띄우고만 싶으시다면 아파치, php, mysql 등등을 이용하시는 것 보다는
자체 파일 포맷이나 JSON 같은 축약형 포맷을 활용하시면 더욱 쉽고 간단히 활용하실 수 있습니다.
차근차근 따라해보세요!Raspy 2013/04/04 12:53
너무어려워용 2013/03/29 15:07 삭제 | 답글
이거 레이아웃에서 바꾸는게아닌가요>? 이소스는 소스상에서 메뉴바를 만든건가요?
그부분을 현재가 가로로 메뉴가 되있다면 >>> 세로로 메뉴를 바꾸고 싶은데요 ㅠ 소스부분이 어느부분인가요 ㅠ
메뉴의 방향과 위치 등등은 코드 수정을 통해 변경 가능하십니다.
패키지를 잘 뒤져보시고, 주석을 참고하여 소스를 읽다보면 실력도 늘고 감도 잡히실 겁니다 ㅎㅎ
당황하지 말고 차근차근 읽어나가다 보면 원하는 정보는 의외로 쉽게 얻으실 수 있을거예요~ Raspy 2013/04/04 12:55
sangu 2013/04/15 13:54 삭제 | 답글
Raspy님도 자체지정 마커를 띄우실 줄 아시지 않습니까? 사용자 지정으로 수정된
소스코드좀 보내주실수 있으신가요? ㅜ 꼭한번 보고싶습니다 ㅠ 나머지 sql같은건 제가 다시 적용시켜보겠습니다.!! ahn6518@naver.com
늦은 답변 죄송합니다 ㅜ
하지만 제가 직접 소스코드를 보내드리는 것은 의미가 없다고 생각합니다.
포스팅 하고 초반에는 제가 코드도 직접 수정해드리고 그랬지만, 그러기 위해서 이 자료를 공유한 것은 아닙니다. 다른 활동을 하느라 바빠서 애초 계획대로 튜토리얼을 만들어 드리지 못한것은 아쉽지만... 이 자료를 찾아오신 분들이라면, 결국엔 충분히 해내실거라 믿습니다! 위에도 말씀드렸듯 소규모라면 굳이 sql로 DB에서 긁어오실 필요는 없을거예요~ Raspy 2013/05/07 00:12
Raspy님!! 2013/04/20 05:24 삭제 | 답글
제가.. 임의의 GPS값들을 받아와서 증강현실로 보여주게하고 핸드폰의 시야에 따라 보여지도록 하고싶은데요...
아주 간단하게는 안될까요? 데이터를 다운받아오지않고 제가 db에서 긁어온 애들로 해주고싶은데 ㅠㅠ
상당히 어렵네요 ㅠ
답변이 늦어서 죄송합니다 ㅠ 데이터를 다운받지 않고 그냥 자체 DB나 파일에서 긁어온 자료도 사용 가능하십니다! 한 번 해내신 이후부터는 어렵다는 생각이 전혀 들지 않으실 겁니다 ^^; 이곳의 댓글들도 참고하시면서, 차근차근 따라해보세요~ Raspy 2013/05/07 00:14
지나가는대학생 2013/05/22 19:01 삭제 | 답글
물론입니다! 조금만 더 소스를 뜯어보세요 ㅎㅎ
어짜피 DB, JSON 등을 이용하는 것 또한 데이터를 넘겨 받은 이후에는 변수에 넣으니까요~ Raspy 2013/05/31 12:45
sfboy3 2013/05/23 00:32 삭제 | 답글
이 오픈소스를 이용하여 특정 이미지를 인식하면 레이블을 띄우는 형식의 어플리케이션이 제작가능할까요?
음.. 가능하지만 이 소스를 그대로 사용하는 것은 힘드실것 같습니다ㅜ 하지만 MIXARE 기반으로 마커기반 AR을 혼합하여 사용한 사례는 많으니, 조금만 더 고생하시면 가능하시리라 믿습니다! ARToolKit 등의 오픈소스 마커기반 AR도 있고, 영상처리에 대한 지식이 있으시다면 마커 기반, 혹은 학습된 이미지 기반으로 AR을 만드는 것도 가능하실 겁니다. 이미지 인식에 관해서는 영상처리 및 컴퓨터 비전 커뮤니티(http://opencv.co.kr 등)을 참고하시고, 마커 기반이라면 ARToolkit 등을 참고해 보시는 것을 추천드립니다Raspy 2013/05/31 12:49
SDG 2013/06/09 01:16 삭제 | 답글
근데 위키처럼 정면이아니라 트위터처럼 45도정도 위쪽에 뜨는데요 문제점을 못찾고 있습니다;
sdg 2013/06/09 23:26 삭제 | 답글
GENGI 2013/06/13 11:19 삭제 | 답글
양경식 2013/07/11 01:39 삭제 | 답글
조용한 둘리 2013/09/23 20:07 답글
김상균 2013/11/07 10:03 삭제 | 답글
hun 2014/01/24 21:37 삭제 | 답글
가란 2014/05/23 15:21 삭제 | 답글
현재 링크걸어주신 이 사이트가 삭제되었거나 비공개 상태인데 어떤 내용인지 알려주실수 있으신가요?