- Äɲ䵤줿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
- ºï½ü¤µ¤ì¤¿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
[[¼¹É®/»¨»ï/SD/2009/03]]
*¤Þ¤º¡¢Æ°¤«¤¹¤Ë¤Ï¡£ [#m9555aef]
+JMF¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë
++[[JMF 2.1.1e Software>http://java.sun.com/javase/technologies/desktop/media/jmf/2.1.1/download.html]]¤è¤ê¡¢Æþ¼ê¤·¤Æ¤¯¤À¤µ¤¤¡£
+Web¥«¥á¥é¤òÀܳ¤¹¤ë
++JMF¤ËÂбþ¤·¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢¤¿¤¤¤Æ¤¤¤Î¾ì¹ç¤Ï¡¢Âç¾æÉפǤ¹¡£
+¥«¥á¥é¥µ¡¼¥Ð¤òµ¯Æ°¤¹¤ë
++¥½¡¼¥¹¥³¡¼¥É¤ÎWebcamBroadcaster¥Ç¥£¥ì¥¯¥È¥ê¤ÎWebcamBroadcaster¤ò¼Â¹Ô¤·¤Þ¤¹¡£
++¥³¥ó¥Ñ¥¤¥ëºÑ¤ß¤Î¥Ð¥¤¥Ê¥ê¤¬¤ª¤¤¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢²¼µ¤Î¤è¤¦¤Ë¼Â¹Ô¤Ç¤¤Þ¤¹¡£
+++java WebcamBroadcaster
+Êì´ÏPC¤ÎIP¤òÄ´¤Ù¤ë
++Android¥¨¥ß¥å¥ì¡¼¥¿¤Ï¡¢qemu¾å¤ÇÆ°¤¤¤Æ¤¤¤ë¤¿¤á¡¢¡Ölocalhost¡×¤Ë¤è¤ë¥¢¥¯¥»¥¹¤Ï½ÐÍè¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¡¢Êì´ÏPC¤Ë²¿¤«¤·¤é¤ÎIP¥¢¥É¥ì¥¹¤¬É¬Íפˤʤê¤Þ¤¹¡£
+++¥×¥é¥¤¥Ù¡¼¥ÈIP¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£
++Ä´ººË¡¤Ï¡¢Windows·Ï¤Ç¤¢¤ì¤Ð¡Öipconfig¡×¡¢Mac/Linux·Ï¤Ç¤¢¤ì¤Ð¡Öifconfig¡×¤ÇÄ´¤Ù¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
+¥½¡¼¥¹¥³¡¼¥É°ì¼°¤òEclipse¤ËÆɤ߹þ¤à
++µ»½ÑɾÏÀ¼Ò¤µ¤ó¤Î[[ÆÃÀߥڡ¼¥¸>http://gihyo.jp/magazine/SD/archive/2009/200903/support]]¤«¤é¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£
++File¢ÍImport¢ÍExisting Projects into Workspace ¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£
++¡ÖSelect root directory¡×¤Ë¡¢²òÅàÀè¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
++¡ÖProjects¡×Íó¤Ë¡ÖNyARtoolkitAndroid¡×¤¬É½¼¨¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢ÁªÂò¤·¤Æ ¡ÖFinish¡×¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£
+¥½¡¼¥¹¥³¡¼¥É¤ÎIP¥¢¥É¥ì¥¹¤ÎÀßÄê¤òÊѹ¹¤¹¤ë
++res/values/strings.xml
<string name="server_addr">192.168.86.1</string>
¤Î Éôʬ¤ò¾åµ¤ÇÄ´¤Ù¤¿¤â¤Î¤ËÊѹ¹¤·¤Þ¤¹¡£
+¥Þ¡¼¥«¡¼¤ò°õºþ¤¹¤ë
++res/raw/marker.jpg
+++¤ò¡¢°õºþ¤·¤Æ¤¯¤À¤µ¤¤¡£
+¼Â¹Ô¤¹¤ë
++Eclipse¤«¤é¡¢¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£¥¨¥ß¥å¥ì¡¼¥¿¤¬µ¯Æ°¤·¤Æ¡¢¥«¥á¥é²èÁü¤¬É½¼¨¤µ¤ì¤ë¤Ï¤º¤Ç¤¹¡£
++¾åµ¤Ç°õºþ¤·¤¿¥Þ¡¼¥«¡¼¤ò¡¢¥«¥á¥é¤Ç¼Ì¤¹¤È¡¢3D¥ª¥Ö¥¸¥§¥¯¥È(¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢°Ø»Ò)¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
**ɽ¼¨¤µ¤»¤ë3D¥ª¥Ö¥¸¥§¥¯¥È¤òÊѹ¹¤¹¤ë [#c61cefeb]
+assets¥Ç¥£¥ì¥¯¥È¥ê¤Ë¡¢Æɤ߹þ¤Þ¤»¤¿¤¤3D¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤ò¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£
++¥á¥¿¥»¥³¥¤¥ä·Á¼°¥Õ¥¡¥¤¥ë¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£
++Android¤ÎÀ©¸Â¤Ë¤è¤ê¡¢1MB¤Þ¤Ç¤Î¥Õ¥¡¥¤¥ë¤·¤«Æɤ߽Ф»¤Þ¤»¤ó¡£
+¥½¡¼¥¹¥³¡¼¥É¡ÖNyARToolkitAndroidActivity#onCreate()¡×
mRenderer = new ModelRenderer(false, getAssets(), "chair01.mqo", 0.04f);
++¤Î¹Ô¤ò¥³¥Ô¡¼¤·¤¿¥Õ¥¡¥¤¥ë̾¤ËÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£
+++ºÇ¸å¤ÎfloatÃͤϡ¢ÇÜΨ¤Ç¤¹¡£
**G1¤äDev Phone 1¤ÇÆ°¤«¤¹ [#sa497b75]
+res/values/strings.xml
<string name="camera_name">jp.android_group.artoolkit.hardware.SocketCamera</string>
¤ò¡¢
<string name="camera_name">jp.android_group.artoolkit.hardware.Dev1Camera</string>
¤ËÊѹ¹¤¹¤ë¡£
*¥½¡¼¥¹¥³¡¼¥É¤òÄɤ¤¤«¤±¤ë(¾ÜºÙÊÔ) [#l85f87e9]
ºÙ¤«¤¤ÅÀ¤Ë¤Ä¤¤¤Æ¡¢¥³¡¼¥É¤ò½çÈÖ¤ËÄɤäƤ¤¤¤Þ¤¹¡£~
**NyARToolkitAndroidActivity#onCreate(Bundle)¤ò¸«¤Æ¤ß¤ë [#d44027ae]
¤³¤ì¤¬¡¢main()¥á¥½¥Ã¥É¤ËÅö¤¿¤ëÉôʬ¤Ç¤¹¡£¤³¤³¤òÆɤà¤È¡¢²¿¤ò¤¹¤ë¤Î¤«¡©¤¬¡¢¤À¤¤¤¿¤¤ÇÄ°®¤Ç¤¤Þ¤¹¡£
**Dev Phone 1¥â¡¼¥É¤Ç¤Î²èÁü¤Î¸þ¤¤Ë¤Ä¤¤¤Æ [#va655ac7]
***ModelRenderer¤Î¥¤¥ó¥¹¥¿¥ó¥¹²½ [#s1caab84]
ModelRenderer¥¯¥é¥¹¤Ï¡¢³Æ¼ï3D¥â¥Ç¥ë¤òÆɤ߽Ф·¤Æ¡¢ÉÁ²è¤¹¤ë¤¿¤á¤Î¥¯¥é¥¹¤Ç¤¹¡£´ðËÜŪ¤Ë¤Ï¡¢AndroidÅëºÜ¤Î3D¥Á¥Ã¥×¸þ¤±¤ÎÄ´À°¤äÀßÄê¤òÆþ¤ì¹þ¤ó¤Ç¤¤¤Þ¤¹¡£¤Ç¤¹¤Î¤Ç¡¢º£¸å¡¢Androidµ¡¤¬Áý¤¨¤Æ¤¯¤ì¤Ð¡¢¤³¤ì¤ò³ÈÄ¥¤·¤¿¤ê¡¢°ã¤¦¤â¤Î¤òÍÑ°Õ¤·¤¿¤ê¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£~
// Renderer
mRenderer = new ModelRenderer(false, getAssets(), "chair01.mqo", 0.04f);
ºÇ½é¤Î°ú¿ô¤Ï¡¢¤³¤¦¤¤¤¦¤â¤Î¤À¤È»×¤Ã¤Æ¤¯¤À¤µ¤¤¡£¥¨¥ß¥å¥ì¡¼¥¿¤ÈDev Phone 1¤Î3D¥¢¥¯¥»¥é¥ì¡¼¥¿¥Á¥Ã¥×¤Î½é´ü²½¥Ñ¥é¥á¡¼¥¿¤ò¤¤¤í¤¤¤í¤ÈÄ´À°¤·¤¿·ë²Ì¡¢Éղ䵤줿¤â¤Î¤Ç¤¹¡£~
~
2¤ÄÌܤΥѥé¥á¡¼¥¿¡ÖgetAssets()¡×¤Ï¡¢¡Öassets¡×¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î¥Ç¡¼¥¿¤òÆɤ߹þ¤à¤¿¤á¤Ë¡¢Android¤ËÍÑ°Õ¤µ¤ì¤¿¥æ¡¼¥Æ¥£¥ê¥Æ¥£¡¼¤Ç¤¹¡£zip¥Õ¥¡¥¤¥ë¤Ê¤É¡¢³°Éô¤Î¥Õ¥¡¥¤¥ë¤«¤éÆɤ߹þ¤à¥Ç¡¼¥¿¤Ï¡¢¤³¤³¤Ë¤ª¤¤¤Æ¤ª¤¯¤Î¤¬¡¢Android»ÅÍͤΤ褦¤Ç¤¹¡£~
~
3¤ÄÌܰʹߤϡ¢[[ɽ¼¨¤µ¤»¤ë3D¥ª¥Ö¥¸¥§¥¯¥È¤òÊѹ¹¤¹¤ë>#c61cefeb]]¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£~
***¥á¥Ã¥»¡¼¥¸¥Ï¥ó¥É¥é [#x71b23d6]
³¤¤¤Æ¡¢¼¡¤Î¹Ô¤Ë
mRenderer.setMainHandler(mHandler);
¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤¾¡¢Android¥Õ¥ì¡¼¥à¥ï¡¼¥¯¡ª¤È¤¤¤¦¤Ù¤¤â¤Î¤Î°ì¤Ä¤Ç¤¹¡£~
set¤¹¤ë¤È¤³¤í¤ÏÎɤ¤¤È¤·¤Æ¡¢¤³¤Î¥Ï¥ó¥É¥é¤òÍøÍѤ·¤Æ¤¤¤ë²Õ½ê¤ò¸«¤Æ¤ß¤ë¤È¡¢ModelRenderer#initModel(GL11)Æâ¤Ë¤¢¤ê¤Þ¤¹¡£
if (mainHandler != null) {
mainHandler.sendMessage
(mainHandler.obtainMessage
(NyARToolkitAndroidActivity.SHOW_LOADING));
}
¥Ï¥ó¥É¥é¤ÎHandler#sendMessage()¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¡¢¡ÖNyARToolkitAndroidActivity.SHOW_LOADING¡×¤òÁ÷¤Ã¤Æ¤¤¤Þ¤¹¡£~
¤³¤ì¤¬¡¢¤É¤³¤ËÆϤ¯¤Î¤«¤È¤¤¤¦¤È¡¢NyARToolkitAndroidActivityÆâ¤Ë¤¢¤ê¤Þ¤¹¡£
private class MainHandler extends Handler {
@Override
public void handleMessage(Message msg) {
(ά)
case SHOW_LOADING: {¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡
showDialog(DIALOG_LOADING);
break;
}
case HIDE_LOADING: {
try {
dismissDialog(DIALOG_LOADING);
removeDialog(DIALOG_LOADING);
} catch (IllegalArgumentException e) {
}
break;
}
}
}
}
¤³¤ÎÃæ¤Ç¡¢¡¤Îcase¤Ë¤è¤ê¡¢¡ÖshowDialog(DIALOG_LOADING)¡×¤¬¸Æ¤Ð¤ì¤Æ¡¢Android¾å¤Ë¤ÏLoading¥À¥¤¥¢¥í¥°¤¬É½¼¨¤µ¤ì¤ë¤È¤¤¤¦Æ°ºî¤Ë¤Ê¤ê¤Þ¤¹¡£~
~
~
¤Ê¤¼¡¢¤³¤ó¤Ê¤á¤ó¤É¤¯¤µ¤¤¤³¤È¤ò¤¹¤ë¤Î¤«¤È¤¤¤¦¤Î¤Ï¡¢[[Android¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î¥é¥¤¥Õ¥µ¥¤¥¯¥ë>#n04b1725]]¤Ç¡ª
***Camera¥¯¥é¥¹¤Î¼èÆÀ [#w6e40241]
³¤¤¤Æ¡¢ifʸ¤¬Ê¤ó¤Ç¤¤¤Þ¤¹¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦~
¤¹¤ß¤Þ¤»¤ó¡¢ËÜÅö¤Ï¡¢¥ê¥Õ¥ì¥¯¥·¥ç¥ó¤Ë¤è¤ê¼èÆÀ¤¹¤ë¤è¤¦¤Ë¤·¤è¤¦¤«¤È»×¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢if¤Çʤ٤Á¤ã¤¤¤Þ¤·¤¿¡£~
Android¤Ë¤ª¤±¤ë¥ê¥Õ¥ì¥¯¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢[[¤³¤Á¤é>http://www.noritsuna.com/archives/2008/03/android_2.html]]¤Ë¥µ¥ó¥×¥ë¥³¡¼¥É¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢»²¾È¤·¤Æ¤¤¤¿¤À¤±¤ì¤Ð¤È»×¤¤¤Þ¤¹¡£ÉáÄ̤ÎJava¤ÈÁ´¤¯°ì½ï¤Ê¤Î¤Ç¡¢ÌäÂê¤Ï¤Ê¤¤¤È»×¤¤¤Þ¤¹¤¬¡£
***Android¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î¥é¥¤¥Õ¥µ¥¤¥¯¥ë [#n04b1725]
Dev1Camera¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹²½»þ¤Ë¡¢NyARToolkitAndroidActivity¼«¿È¤òÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£¤Ê¤¼¡¢¤³¤ó¤Ê¤³¤È¤ò¤ä¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©
mCameraDevice = new Dev1Camera(this, mSurfaceView);
¤³¤ì¤³¤½¤¬¡¢Android¥Õ¥ì¡¼¥à¥ï¡¼¥¯¡ª¤Ê¤Î¤Ç¤¹¡£Android¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ç¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥é¥¤¥Õ¥µ¥¤¥¯¥ë¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢Android¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î¥é¥¤¥Õ¥µ¥¤¥¯¥ë³°¤Çºî¤é¤ì¤¿¥¤¥ó¥¹¥¿¥ó¥¹¤«¤é¤Ï¡¢View¤Ê¤É¤Ø¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£~
¤³¤ì¤Ë¤è¤ê¡¢ÅÅÃÓ¼÷Ì¿¤¬½ÅÍפʥե¡¥¯¥¿¡¼¤Ç¤¢¤ë¥â¥Ð¥¤¥ëµ¡´ï¤Ë¤ª¤¤¤Æ¤â¡¢¸·Ì©¤ÊÅŸ»´ÉÍý¤ò¤¹¤ë¤³¤È¤¬½ÐÍè¤ëÈ¿ÌÌ¡¢¾åµ¤ä²¼µ¤Î¤è¤¦¤Ë¡¢onCreate()Æâ¤äNyARToolkitAndroidActivity¤Î¥¤¥ó¥¹¥¿¥ó¥¹²½»þ¤Ë°ú¤ÅϤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¤Î¤Ç¤¹¡£(getter¤äsetter¤Ë¤è¤ëÊýË¡¤ä[[¥á¥Ã¥»¡¼¥¸¥Ï¥ó¥É¥é>#x71b23d6]]¤Ë¤è¤ëÊýË¡¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¤½¤ì¤ò»È¤ï¤Ê¤¤Íýͳ¤Ï¡¢[[ºÇĹÉÔÅÝ´Ø¿ô>#uece7766]]¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£)~
¤Þ¤¿¡¢Android¤Î¥µ¥ó¥×¥ë¤Ë¤è¤¯½Ð¤Æ¤¯¤ë¡¢²¼µ¤Î¤è¤¦¤Ê¥½¡¼¥¹¥³¡¼¥É¤Ï¡¢¾åµ¤ÎÍýͳ¤ËͳÍ褷¤Æ¤¤¤ë¤È»×¤ï¤ì¤Þ¤¹¡£
mOrientationListener = new OrientationListener(this) {
public void onOrientationChanged(int orientation) {
mLastOrientation = orientation;
}
};
¤½¤·¤Æ¡¢Àµ¹¶Ë¡¤ÊÊýË¡¤È¤·¤Æ[[¥á¥Ã¥»¡¼¥¸¥Ï¥ó¥É¥é>#x71b23d6]]¤¬¡¢¤³¤ÎAndroid¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î¥é¥¤¥Õ¥µ¥¤¥¯¥ë³°¤Çºî¤é¤ì¤¿¥¤¥ó¥¹¥¿¥ó¥¹¤«¤é¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤ËÍÑ°Õ¤µ¤ì¤¿ÊýË¡¤Ê¤Î¤Ç¤¹¡£
***VoicePlayer¥¯¥é¥¹¡£ [#hf623c6d]
²»À¼¥Õ¥¡¥¤¥ë¤òÍ¿¤¨¤ë¤È¡¢¡Ø3D¥ª¥Ö¥¸¥§¥¯¥È¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë¤È¤¤Ë¤½¤Î²»À¼¥Õ¥¡¥¤¥ë¤òή¤¹¡Ù¤³¤È¤¬¤Ç¤¤ë¡¢¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£~
»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï¡¢²¼µ¤ÎÉôʬ¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤·¡¢¡Öres/raw/¡×¥Ç¥£¥ì¥¯¥È¥ê¤ËºÆÀ¸¤·¤¿¤¤²»À¼¥Õ¥¡¥¤¥ë¤òÆþ¤ì¤Æ¤¯¤À¤µ¤¤¡£~
¤Á¤Ê¤ß¤Ë¡¢»È¤¤¤É¤³¤í¤Ï¡¢¡¢¡¢Æâ½ï¤Ç¤¹¡£(;^_^A ¥¢¥»¥¢¥»¡¦¡¦¡¦
//TODO init VoicePlayer for ARToolkit.
// VoicePlayer mVoiceSound = new VoicePlayer();
// mVoiceSound.initVoice(getResources().openRawResourceFd(R.raw.xxx_voice));
// arToolkit.setVoicePlayer(mVoiceSound);
***Dev Phone 1¥â¡¼¥É¤Ç¤Î²èÁü¤Î¸þ¤¤Ë¤Ä¤¤¤Æ [#va655ac7]
¤â¤·¤«¤¹¤ë¤È¡¢²èÌ̤¬·¹¤¤¤Æ¤¤¤Þ¤»¤ó¤«¡©~
ËÜÍè¤Ï¡¢¤½¤ì¤òÀ©¸æ¤¹¤ë¤¿¤á¤Ë¤Ï¡¢OrientationListener¥¯¥é¥¹¤òÍøÍѤ·¤Þ¤¹¡£~
NyARToolkitAndroidActivity#onCreate(Bundle)Æâ¤Ç¡¢
mOrientationListener = new OrientationListener(this) {
public void onOrientationChanged(int orientation) {
mLastOrientation = orientation;
}
};
¤È¡¢¥¤¥ó¥¹¥¿¥ó¥¹²½¤·¤Æ¤¤¤Þ¤¹¡£~
¤¬¡¢¤³¤ì¡¢»×¤Ã¤¿¤è¤¦¤ËÆ°¤¤¤Æ¤¯¤ì¤Þ¤»¤ó¡£Dev Phone 1¤ò¡¢Î©¤Æ¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢¡Ø²£¡Ù¤ÎȽÄê¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤ê¡¢Æ°¤«¤·¤Æ¤¤¤Ê¤¤¤Î¤Ë¡¢½Ä¤«¤é²£¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¤ê¤È¡¢¤¤¤Þ¤¤¤Á¡¢°ÂÄꤷ¤Þ¤»¤ó¡£~
¤½¤Î¤¿¤á¡¢º£²ó¤Ï¡¢Æþ¤ì¤Æ¤Ï¤ª¤¤Þ¤·¤¿¤¬¡¢»È¤Ã¤Æ¤¤¤Þ¤»¤ó¡£~
͸ú¤Ë¤¹¤ë¤Ë¤Ï¡¢Dev1Camera¥¯¥é¥¹¤Î¥¤¥ó¥Ê¡¼¥¯¥é¥¹¤Ç¤¢¤ëImageCapture#capture()Æâ¤Î
//final int latchedOrientation = NyARToolkitAndroidActivity.roundOrientation(arActivity.getLastOrientation() + 90 );
¡Êά¡Ë
parameters.set("rotation", 90);
//parameters.set("rotation", latchedOrientation);
¤Î¥³¥á¥ó¥È¥¢¥¦¥È¤ò¤Ï¤º¤·¤Æ¤â¤é¤¨¤ì¤Ð¡¢OK¤Ç¤¹¡£~
°ÂÄꤵ¤»¤é¤ì¤¿Êý¡¢À§È󡢤´Ï¢Íí¤ò¤ª´ê¤¤¤·¤Þ¤¹¡£~
***¥¥ã¥ê¥Ö¥ì¡¼¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ [#fc051feb]
¾åµ¤ÎOrientationListener¤Ë¤è¤ë»ÑÀªÀ©¸æ¤Ë¤è¤ê¡¢½Ä²£¤¬ÀÚ¤êÂؤï¤Ã¤¿¥¿¥¤¥ß¥ó¥°¤Ç²èÌ̤Υµ¥¤¥º¤¬(½Ä²£Èæ)¤¬ÊѤï¤ê¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢¤³¤Î²£¥µ¥¤¥º¤Ë¤¢¤Ã¤¿ARToolkitÍѤΥ¥ã¥ê¥Ö¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¡Êres/raw/camera_para.dat¡Ë¤¬É¬Íפˤʤê¤Þ¤¹¡£~
º£²ó¤Ï¡¢ÍÑ°Õ¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢¤´¼«Ê¬¤ÇÍÑ°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
**ARToolkitDrawer#draw(byte[])¤ò¸«¤Æ¤ß¤ë [#b5cd23e0]
¤³¤³¤¬¡¢¤¹¤Ù¤Æ¤ÎÆ°ºî¤ò°ì¤Ä¤Ë«¤Í¤ëÉôʬ¤Ç¤¹¡£¤³¤³¤òÆɤà¤È¡¢²¿¤ò¤·¤Æ¤¤¤ë¤Î¤«¡©¤¬¤À¤¤¤¿¤¤ÇÄ°®¤Ç¤¤Þ¤¹¡£
***OutOfMemoryError¤Ï¡¢Å¨ [#n3039f19]
¼Â¤Ï¡¢¥«¥á¥é¤«¤é»£¤ì¤ë²èÁü¤Î¥µ¥¤¥º¤¬¡¢Â礤¹¤®¤Æ¡¢¡ÖOutOfMemoryError¡×¤¬È¯À¸¤·¡¢¥¢¥×¥ê¤¬Íî¤Á¤Æ¤·¤Þ¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤â¡¢¡ÖOutOfMemoryError¡×¤Ï¡¢¤É¤¦¤ä¤éAndroid¤Ç¤Ï¥Ï¥ó¥É¥ê¥ó¥°¤¬ÉÔ²Äǽ¤Ê¤è¤¦¤Ç¡¢¥¢¥×¥ê¤¬¶¯À©½ªÎ»¤µ¤»¤é¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£~
¤½¤³¤Ç¡¢¥µ¥¤¥ºÄ´À°¤Î¤¿¤á¤ËÆþ¤Ã¤Æ¤¤¤ë¥³¡¼¥É¤¬¡¢²¼µ¤ÎÉôʬ¤Ç¤¹¡£~
¡¤Ç¡¢1/4¥µ¥¤¥º¤ËÄ´À°¤¹¤ë¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡£~
¤·¤«¤·¡¢¤³¤ì¤À¤È¡¢¾®¤µ¤¯¤Ê¤ê¤¹¤®¤Æ¤·¤Þ¤¦¾ì¹ç¤¬¤¢¤ë¤Î¤Ç¡¢¢¤Ç¡¢Height¤¬¡¢240¤è¤ê¾®¤µ¤¤¾ì¹ç¤Ï¡¢¸µ¤Î¥µ¥¤¥º¤Î²èÁü¤ò»È¤¦¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;¡¦¡¦¡¦¡
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
if(bitmap.getHeight() < 240) {¡¦¡¦¡¦¢
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
}
º£²ó¤Ï¡¢¤³¤Î¤è¤¦¤ÊÊýË¡¤Çƨ¤²¤é¤ì¤Þ¤·¤¿¤¬¡¢¼ÂºÝ¤Ë¤Ï¡¢¥á¥â¥êÀ©¸Â¤Ï¤«¤Ê¤ê¸·¤·¤¤¤â¤Î¤Ë¤Ê¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ºÇ°¡¢¥á¥â¥ê¥¢¥í¥±¡¼¥¿¤ò¼«ºî¤¹¤ë¤Ê¤É¡¢¥á¥â¥ê¤Î»ÈÍÑÎ̤ϡ¢¸·Ì©¤Ë´ÉÍý¤¹¤ëɬÍפ¬¤¢¤ë¤è¤¦¤Ç¤¹¡£
***Thread¤Î¶²ÉÝ [#i16a0ac7]
´ðËÜŪ¤Ë¤³¤Î¥á¥½¥Ã¥É¤Ï¡¢¥«¥á¥é¥Ç¡¼¥¿¤Î²Ã¹©¤äARToolkit¤Î½èÍý¡¢3DÉÁ²è¤Î²¼½èÍý¤Ê¤É¡¢Èó¾ï¤Ë»þ´Ö¤Î¤«¤«¤ë½Å¤¤½èÍý¤È¤Ê¤ê¤Þ¤¹¡£~
¤½¤³¤Ç¡¢¤³¤³¤Ç¤¤¤í¤¤¤í¤È¤º¤ë¤ò¤¹¤ë¤¿¤á¤Ë¤â¡¢
Î㤨¤Ð¡¢ARToolkit½èÍý1²ó¤Ë¤Ä¤¡¢ÇطʲèÁü¤Î½ñ¤´¹¤¨¤À¤±¤Ï3²ó¤ä¤ë ¤Ê¤É¤¹¤ë¤È¡¢¡Ø°ì¸«¥¹¥à¡¼¥ºÆ°¤¤¤Æ¤¤¤ë¡Ù¤è¤¦¤Ë¸«¤ë
ÉÁ²è¤Î½ñ¤´¹¤¨¤ÎºÙ¤«¤¤À©¸æ¤ò¤·¤¿¤¤¤È»×¤¤¡¢¤É¤¦¤·¤è¤¦¤«¤ÈÂÁߤ¤¤Æ¤ß¤Þ¤·¤¿¡£~
·ëÏÀ¤«¤é¸À¤¦¤È¡¢¤Ò¤È¤Þ¤º¡¢¤¢¤¤é¤á¤Þ¤·¤¿¡£¤¹¤ß¤Þ¤»¤ó¡ª¡ª¡ª¼¡¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¹Í¤¨Ä¾¤·¤Þ¤¹¤Î¤Ç¡¢¾¯¡¹¤ªÂÔ¤Á¤¯¤À¤µ¤¤¡£<(_ _)>~
~
~
¤Ç¡¢¤½¤Î¤È¤¤Î¼ºÇÔÃ̤ò¡¢²¼µ¤Ëµ¤·¤Þ¤¹¡£~
¤Þ¤º¡¢²èÌÌÉÁ²è¤ÎÀ©¸æ¤Ç¤¹¤¬¡¢GLSurfaceView¤Ç¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£¤½¤·¤Æ¡¢GLSurfaceView¤Ë¤Ï¡¢
GLSurfaceView#onPause()
¤È¤¤¤¦¡¢²èÌÌÉÁ²è¤ò°ì»þÄä»ß¤µ¤»¤ë¥á¥½¥Ã¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤òÍøÍѤ·¤è¤¦¤È¤·¤Æ¡¢¥½¡¼¥¹¥³¡¼¥É¤ò¸«¤ë¤È¡¢¡¢¡¢
EglHelper#finish()
¤ò¸Æ¤Ó½Ð¤·¤Æ¤Þ¤·¤¿¡ªEglHelper¤¬½é´ü²½¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£~
½èÍý¤ò·Ú¤¯¤·¤¿¤¤¤Î¤Ç¡¢¤³¤ì¤Ç¤Ï¡¢ËÜËöžÅݤʤΤǾ¤ÎÀ©¸æË¡¤òõ¤·¤¿¤È¤³¤í¡¢
GLSurfaceView#queueEvent(new Runnable())
¤¬¤¢¤ê¤Þ¤·¤¿¡£¤³¤ì¤Ç¤¹¤È¡¢Runnable#run()¤ÇÄêµÁ¤·¤¿½èÍý¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¡¢²èÌÌÉÁ²è¤òÀ©¸æ¤Ç¤¤Þ¤¹¡£~
¤È¤¤¤¦¤³¤È¤Ç¡¢¤³¤ì¤Ë¡ÖARToolkitDrawer#draw(byte[])¡×¤Î½èÍý¤ò¤½¤Î¤Þ¤ÞÆþ¤ì¤Æ¤ß¤¿¤È¤³¤í¡¢
dead lock¡ªorz
¤½¤·¤Æ¡¢Ä´ºº¤ò¿Ê¤á¤¿¤Î¤Ç¤¹¤¬¡¢»þ´ÖÀÚ¤ì¤È¤Ê¤ê¡¢ÂŶ¨Åª¤ËÆþ¤ì¤¿¤Î¤¬NyARToolkitAndroidActivity¥¯¥é¥¹¤Ë¤¢¤ë
private void draw() {
drawFlag = true;
try {
// The measure against over load.
Thread.sleep(500);
} catch (InterruptedException e) {
;
}
drawFlag = false;
mGLSurfaceView.queueEvent(new Runnable() {
@Override
public void run() {
while (!drawFlag)
try {
Thread.sleep(400);
} catch (InterruptedException e) {
;
}
}
}
);
}
¤Ç¤¹¡£¤À¤ì¤«¡¢¥«¥Ã¥³Îɤ¯ºî¤êľ¤·¤Æ¤¯¤ì¤ë¤È¥¦¥ì¥·¥¤¤Ç¤¹¡£<(_ _)>
*ÄûÀµ¤È¤ªÃΤ餻 [#m2784785]
**RGB¤ÎʤӤˤĤ¤¤Æ [#wdeab5a6]
Camera¡ßCallback¡ßBitmapÀá¤Ë¤Æ¡¢RGB¤Î»ý¤ÁÊý¤Ë´Ø¤¹¤ëµ½Ò¤¬¤¢¤ê¤Þ¤¹¤¬¡¢
¥Ó¥Ã¥È¥Þ¥Ã¥×¤ÈOpenGL/ES¤È¤ÎRGB¤Î»ý¤ÁÊý¤Î°ã¤¤
¤È¤¤¤¦Êý¤¬Àµ¤·¤¤¤È¤Î¡¢»ØŦ¤¬¤¢¤ê¤Þ¤·¤¿¤Î¤Ç¡¢ÄûÀµ¤µ¤»¤Æ¤¤¤¿¤À¤¤Þ¤¹¡£
*Android Tips [#z4777d8b]
**Android³«È¯Á´ÈÌ [#a74322bd]
***¥Ñ¥Ã¥±¡¼¥¸¤ÎÀ©¸Â [#kdbbd65a]
Eclipse¤ÇAndroid¥×¥í¥¸¥§¥¯¥È¤òºîÀ®¤¹¤ë¤È¤¤Ë»ØÄꤷ¤¿¥Ñ¥Ã¥±¡¼¥¸²¼°Ê³°¤Ë¡¢¥½¡¼¥¹¥³¡¼¥É¤òÆþ¤ì¤Æ¤â¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤»¤ó¡£~
Android¥×¥í¥¸¥§¥¯¥È¤Ç¤Ï¡¢¤³¤Î¤è¤¦¤ÊÀ©¸Â¤¬Â¿¤¤¤Î¤Ç¡¢¥Ñ¥Ã¥±¡¼¥¸¤Î̾Á°¤òÊѤ¨¤ë¤È¤¤ÏÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
***javax¤Ê¤É¤ÎJ2SE¥é¥¤¥Ö¥é¥ê [#h55b2629]
J2SE´°Á´¸ß´¹¤Ç¤Ï¤Ê¤¤¤¿¤á¡¢°ìÉô¡¢Æþ¤Ã¤Æ¤¤¤Ê¤¤¥é¥¤¥Ö¥é¥ê¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£¤È¤¯¤Ë¡¢javax°Ê²¼¤¬Èù̯¤ËÆþ¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢¤±¤Ã¤³¤¦¡¢¤Ä¤é¤¤¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£~
¤·¤«¤·¡¢Æþ¤Ã¤Æ¤¤¤Ê¤¤¤«¤é¤È¸À¤Ã¤Æ¡¢javax¤ÈƱ̾¤Î¥Ñ¥Ã¥±¡¼¥¸¡Ü¥¯¥é¥¹¤ò¼«ºî¤·¤Æ¤â¡¢Æ°¤¤Þ¤»¤ó¡£Android¤Î¥³¥ó¥Ñ¥¤¥ë»þ¤Î¥Á¥§¥Ã¥¯¤Ë¤è¤ê¡¢¤½¤Î¤è¤¦¤Ê¥¯¥é¥¹¤Ï¡¢ÃƤ«¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£~
¤½¤Î¤¿¤á¡¢¥·¥¹¥Æ¥à¥¤¥á¡¼¥¸¤«¤éÊѤ¨¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤¿¤á¡¢¥Ï¡¼¥É¥ë¤¬¹â¤¤¤Ç¤¹¡£
**xxxManager¤äxxxRegistrar¡¢xxxProvider [#n0793e4c]
¡Ö¥³¥é¥à¡§Android¤Ç¤Î¥Ç¥Ð¥¤¥¹¤Î°·¤¤¡×¤Ç¡¢½ñ¤¤¤¿¤è¤¦¤ËAndroid¤Ë¤Ï¡¢xxxListener¡ÜxxxCallback¤¬¤¢¤ê¤Þ¤¹¡£~
¤½¤·¤Æ¡¢¼Â¤Ï¤µ¤é¤Ë¡¢¤³¤ì¤éxxxListener¡ÜxxxCallback¤ò«¤Í¤ë¡¢xxxManager¤äxxxRegistrar¡¢xxxProvider¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£~
xxxListener¡ÜxxxCallback¤Ï¡¢¤³¤ì¤é¤ËÅÐÏ¿¤µ¤ì¤Æ¡¢°ì¸µÅª¤Ë°·¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢Î㤨¤Ð¡¢ÅÅÏäâ3G¤Ë¤è¤ëÃå¿®¤«¡©IPÅÅÏäˤè¤ëÃå¿®¤«¡©¤Ê¤Éµ¤¤Ë¤¹¤ë¤³¤È¤Ê¤¯¡¢°ì¸µÅª¤Ë°·¤¨¤ë¤è¤¦¤Ë½ÐÍè¤Þ¤¹¡£~
**ºÇĹÉÔÅÝ´Ø¿ô [#uece7766]
Dev1Camera¥¯¥é¥¹
¤È¤«¡¢¥í¡¼¥«¥ë¤ÊÊÑ¿ô¤ä¤é½èÍý¤·¤Þ¤¯¤ê¤Î¥á¥½¥Ã¥É¤ä¤é¡¢¤â¤Ã¤ÈÀÚ¤êʬ¤±¤¿Êý¤¬¤¤ì¤¤¤Ê¤Î¤Ë¡ª¤È¤«¡¢»×¤¤¤Þ¤»¤ó¤«¡©»ä¤â»×¤¤¤Þ¤¹¡£(;^_^A ¥¢¥»¥¢¥»¡¦¡¦¡¦~
¤·¤«¤·¡¢¼Â¤Ï¡¢°ÕÌ£¤¬¤¢¤Ã¤¿¤ê¤·¤Þ¤¹¡£~
~
¤½¤ì¤Ï¡¢Dev Phone 1 ¤ä G1 ¤Ê¤É¤ÎÈóÎϤÊCPU¤Ç¤¹¤È¡¢
¥á¥½¥Ã¥É¸Æ¤Ó½Ð¤·¥³¥¹¥È¤Ç¤µ¤¨¥Ð¥«¤Ë½ÐÍè¤Ê¤¤¥³¥¹¥È
¤Ë¤Ê¤ê¤Þ¤¹¡£~
¤È¤¯¤Ë¡¢¤³¤ÎDev1Camera¥¯¥é¥¹¤Î¤è¤¦¤Ê¥Ï¡¼¥É¥¦¥§¥¢¤ÈÏ¢·È¤¹¤ë¤è¤¦¤Ê¥¯¥é¥¹¤Ç¤¹¤È¡¢Ã×̿Ū¤È¸À¤¦¤¯¤é¤¤¤Î¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£~
¤½¤Î¤¿¤á¡¢Android¤Î¥½¡¼¥¹¥³¡¼¥É¥ê¥Ý¥¸¥È¥ê¤Ë¤¢¤ë¥½¡¼¥¹¥³¡¼¥É¤â¡¢Â®ÅÙ¤¬É¬Íפʤâ¤Î¤Ï¡¢¤³¤Î¤è¤¦¤Ê¹½Â¤¤È¤Ê¤Ã¤Æ¤ª¤ê¡¢¤¶¤é¤Ë3000¹Ô¤òĶ¤¨¤ë¥¯¥é¥¹¤Ê¤É¤â¤¢¤ê¤Þ¤¹¡£OHA¤µ¤ó¤â¡¢Â®ÅÙ¥Á¥å¡¼¥Ë¥ó¥°¤Ë¶ìÏ«¤·¤Æ¤¤¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
**¥Ï¡¼¥É¥¦¥§¥¢Á´ÈÌ [#ia13d4d7]
***¥«¥á¥é¤Î¼ïÎà [#h6162093]
|StaticCamera|¥í¡¼¥«¥ë¤ËÊݸ¤µ¤ì¤¿²èÁü¤ò¥«¥á¥é²èÁü¤È¤·¤ÆÆɤ߹þ¤à|
|SocketCamera|Jpeg²èÁü¤ò¡¢Socket·Ðͳ¤Ç¼èÆÀ¤¹¤ë|
|Dev1Camera|G1¤äDev Phone 1¸þ¤±¼ÂÁõ|
|AttachedCamera|ËÜÍèŪ¤ÊCamera²èÁü¤Î¼èÆÀ¤ÎÊýË¡¡£G1¤äDev Phone 1¤Ç¤Ï¡¢¤¦¤´¤«¤Ê¤¤orz¢ÍÍýͳ¤Ï¡¢»£¤ì¤ë²èÁü¥Õ¥©¡¼¥Þ¥Ã¥È¤¬¡¢Bitmap¥¯¥é¥¹¤Ç°·¤¨¤Ê¤¤¤¿¤á¤Ç¤¹¡£¥Ð¥°°·¤¤¤Ç¡¢¤¹¤Ç¤Ë¥ì¥Ó¥å¡¼¥¹¥Æ¡¼¥È¤ËÆþ¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¶á¤¤¤¦¤Á¤Ë»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤Ï¤º¤Ç¤¹¡£|
***WebcamBroadcaster [#za5c5cb1]
¤Á¤Ê¤ß¤Ë¡¢[[Armadillo-500¾å¤ÎAndroid¤Ç¥«¥á¥é¥×¥ì¥Ó¥å¡¼¤¹¤ëÊýË¡>http://d.hatena.ne.jp/bs-android/20081024]]¤Ç»È¤Ã¤Æ¤¤¤ë¤â¤Î¤ÈƱ¤¸¥Õ¥©¡¼¥Þ¥Ã¥È¤Ê¤Î¤Ç¡¢Armadillo-500¾å¤ÇËÜ¥¢¥×¥ê¤ÏÆ°ºî¤µ¤»¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
***¥Þ¥¸¥Ã¥¯¥Ê¥ó¥Ð¡¼¡Ö1600¡×¤Ã¤Æ¤Ê¤Ë¡© [#t70e4631]
SocketCamera¥¯¥é¥¹¤Ç¡¢¥«¥á¥é²èÁü¤Î¥¹¥È¥ê¡¼¥à¤òÆɤ߹þ¤à¤È¤³¤í¤Ë¤¢¤ë¡¢
if(offset+1600 > buf_size){
¤Î¡Ö1600¡×¤Ç¤¹¤¬¡¢Ether¤Î1¥Ñ¥±¥Ã¥È¥µ¥¤¥º¤Ç¤¹¡£
**3DÁ´ÈÌ [#m5598095]
**3D¾ÜºÙ [#ce09e104]
Android¤Î¤¿¤á¤Î3D¤äOpenGL/ES¤òÁàºî¤¹¤ë¤¿¤á¤Ë¡¢
GLBg
GLSurfaceView
ModelRenderer
¤È¤¤¤¦¥¯¥é¥¹¤òÍÑ°Õ¤·¤Æ»È¤Ã¤Æ¤¤¤Þ¤¹¡£~
¤³¤ì¤é¤Ï¡¢¤Ï¤Ã¤¤ê¸À¤Ã¤Æ¡¢Android¤ÎOpenGL/ES¤È¤ÎÀ襤¤ÎµÏ¿¤Ç¤·¤«¤¢¤ê¤Þ¤»¤ó¡£Íפ¹¤ë¤Ë¡¢3D¥Á¥Ã¥×¤ÎÀ©¸Â¤À¤Ã¤¿¤ê¡¢¤Þ¤À¡¢Ì¤¼ÂÁõ¤È¤·¤«»×¤¨¤Ê¤«¤Ã¤¿¤ê¡¢¤¿¤À¤Î¥Ð¥°¤È¤·¤«»×¤¨¤Ê¤«¤Ã¤¿¤ê¡¢¤Ê¤É¤ò¤É¤¦²óÈò¤¹¤ë¤«¤È¤¤¤¦¥Ð¥Ã¥É¥Î¥¦¥Ï¥¦¤Î¸Ç¤Þ¤ê¤Ç¤¹¡£orz~
¤Ê¤Î¤Ç¡¢´ðËÜŪ¤Ë¤Ï¡¢¡Ø¤Ê¤Ë¤â¹Í¤¨¤º¤Ë¤½¤Î¤Þ¤Þ»È¤¨¡Ù¤È¤¤¤¦¤³¤È¤Ç¡¢²òÀâ¤Ï¾Êά¤µ¤»¤Æ¤¤¤¿¤À¤¤Þ¤¹¡£~
¤³¤Î¤Ø¤ó¤Î¾ÜºÙ¤ÎÏäϡ¢3D¤äOpenGL/ES¤Ë´Ø¤·¤Æ¤Ï¡¢¥¨¥¤¥Á¥¢¥¤¤Î¹â¶¶¤µ¤ó¤Ê¤É¤ò¤ª¸Æ¤Ó¤·¤Æ¡¢¥»¥ß¥Ê¡¼¤ò³«ºÅ¤µ¤»¤Æ¤¤¤¿¤À¤³¤¦¤È»×¤¤¤Þ¤¹¤Î¤Ç¡¢¤´Î»¾µ¤¯¤À¤µ¤¤¡£
***ARModel¥¤¥ó¥¿¥Õ¥§¡¼¥¹ [#h8e00b0e]
¤¹¤ß¤Þ¤»¤ó¡£ËÜÅö¤Ï¡¢³Æ¼ï3D¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¤³¤ì¤Ç¥é¥Ã¥×¤¹¤ë¤Ï¤º¤À¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢´Ö¤Ë¹ç¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£~
¼¡¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢¼ÂÁõ¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£
**NyARToolkit¤È¥á¥¿¥»¥³¤ÎÆɤ߽Ф·¥é¥¤¥Ö¥é¥ê¤Ë¤Ä¤¤¤Æ [#f85c7305]
¸½ºß¡¢NyARToolkit¤ÎVer.2.0²½ ¤È Android¤ËÉÕ°¤·¤Æ¤¤¤ëfloat·Ï¤Î¥Í¥¤¥Æ¥£¥Ö¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ¹¤ë¤è¤¦¤ËÊѹ¹¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£~
¤½¤ì¤Ë¤¢¤ï¤»¤Æ¸ø³«¤¹¤ëͽÄê¤Ç¤¹¤Î¤Ç¡¢¾¯¡¹¤ªÂÔ¤Á¤¯¤À¤µ¤¤¡£
*Android Tips [#z4777d8b]
** [#b35317bb]
*¤ª¤Þ¤± [#hf0515e9]
**ËÜÀá¤Î1¥Ú¡¼¥¸Ìܤμ̿¿¤Î¼ê [#jac05a65]
-¼ê¥¿¥ì¤È¤·¤Æ½Ð±é¤·¤Æ¤â¤é¤Ã¤¿¤Î¤Ï¡¢[[¤³¤ì>http://yoshiori.org/]]¤Ç¤¹¡£
-¼ê¥¿¥ì¤È¤·¤Æ½Ð±é¤·¤Æ¤â¤é¤Ã¤¿¤Î¤Ï¡¢[[¤³¤ì>http://yoshiori.org/]]¤Ç¤¹¡£¶¨ÎÏ¡¢¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡ª