• Äɲ䵤줿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
  • ºï½ü¤µ¤ì¤¿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
[[¼¹É®/»¨»ï/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()¥á¥½¥Ã¥É¤ËÅö¤¿¤ëÉôʬ¤Ç¤¹¡£¤³¤³¤òÆɤà¤È¡¢²¿¤ò¤¹¤ë¤Î¤«¡©¤¬¡¢¤À¤¤¤¿¤¤ÇÄ°®¤Ç¤­¤Þ¤¹¡£

***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);
 }

º£²ó¤Ï¡¢¤³¤Î¤è¤¦¤ÊÊýË¡¤Çƨ¤²¤é¤ì¤Þ¤·¤¿¤¬¡¢¼ÂºÝ¤Ë¤Ï¡¢¥á¥â¥êÀ©¸Â¤Ï¤«¤Ê¤ê¸·¤·¤¤¤â¤Î¤Ë¤Ê¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ºÇ°­¡¢¥á¥â¥ê¥¢¥í¥±¡¼¥¿¤ò¼«ºî¤¹¤ë¤Ê¤É¡¢¥á¥â¥ê¤Î»ÈÍÑÎ̤ϡ¢¸·Ì©¤Ë´ÉÍý¤¹¤ëɬÍפ¬¤¢¤ë¤è¤¦¤Ç¤¹¡£
º£²ó¤Ï¡¢¤³¤Î¤è¤¦¤ÊÊýË¡¤Çƨ¤²¤é¤ì¤Þ¤·¤¿¤¬¡¢¼ÂºÝ¤Ë¤Ï¡¢¥á¥â¥êÀ©¸Â¤Ï¤«¤Ê¤ê¸·¤·¤¤¤â¤Î¤Ë¤Ê¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ºÇ°­¡¢¥á¥â¥ê¥¢¥í¥±¡¼¥¿¤ò¼«ºî¤¹¤ë¤Ê¤É¡¢¥á¥â¥ê¤Î»ÈÍÑÎ̤ϡ¢¸·Ì©¤Ë´ÉÍý¤¹¤ëɬÍפ¬¤¢¤ë¤è¤¦¤Ç¤¹¡£(Activity#onLowMemory()¤ò¤É¤¦¤Ë¤«¤¹¤ëÊýË¡¤â¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡£¡£¡£)



***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·Ï¤Î¥Í¥¤¥Æ¥£¥Ö¥é¥¤¥Ö¥é¥ê¤ò»ÈÍѤ¹¤ë¤è¤¦¤ËÊѹ¹¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£~
¤½¤ì¤Ë¤¢¤ï¤»¤Æ¸ø³«¤¹¤ëͽÄê¤Ç¤¹¤Î¤Ç¡¢¾¯¡¹¤ªÂÔ¤Á¤¯¤À¤µ¤¤¡£

***NyARToolkit¤ò2.2.0¤ËÂбþ¤µ¤»¤Þ¤·¤¿¡£ [#d7236c28]
-[[¤³¤Á¤é>http://www.noritsuna.com/archives/2009/03/nyartoolkit220f.html]]


*¤ª¤Þ¤± [#hf0515e9]
**ËÜÀá¤Î1¥Ú¡¼¥¸Ìܤμ̿¿¤Î¼ê [#jac05a65]
-¼ê¥¿¥ì¤È¤·¤Æ½Ð±é¤·¤Æ¤â¤é¤Ã¤¿¤Î¤Ï¡¢[[¤³¤ì>http://yoshiori.org/]]¤Ç¤¹¡£¶¨ÎÏ¡¢¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡ª
-¸¶¹ÆÎÁ¤Î°ìÉô¤ò¼ê¥¿¥ìÎÁ¤È¤·¤Æ¡¢¡Ö[[Âè½½»°²ó Âè1²ó¥Á¥­¥Á¥­java-ja ²¹Àô>http://java-ja.yoshiori.org/index.php?Âè½½»°²ó]]¡×¤Î°é±Ñ²ñÊç¶â¤Ë´óÉÕ¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤·¤¿¡£