int main(int argc,char**argv){ ARParam cparam; ARParam wparam; int xsize,ysize; glutInit(&argc,argv); if(arVideoOpen(vconf_name)<0){ puts("ビデオデバイスエラー"); return -1; } if(arVideoInqSize(&xsize,&ysize) < 0)return -1; if(arParamLoad(cparam_name,1,&wparam)< 0){ puts("パラメータ読み込み失敗"); return -1; } arParamChangeSize(&wparam,xsize,ysize,&cparam); arInitCparam(&cparam); nyobj = nyar_NyARTransMat_O2_create(&cparam); if( (patt_id=arLoadPatt(pattern_name)) < 0){ puts("パターン読み込みエラー"); return -1; } argInit(&cparam, 1.0, 0, 0, 0, 0); mqoInit(); if(Data_Load()==-1) return -1; arVideoCapStart(); InitGame(); arUtilTimerReset(); #ifdef _WIN32 TIMECAPS Caps; timeGetDevCaps(&Caps, sizeof(TIMECAPS)); // 性能取得 timeBeginPeriod(Caps.wPeriodMin); #endif argMainLoop(MouseEvent,KeyEvent,MainLoop); #ifdef _WIN32 timeEndPeriod(Caps.wPeriodMin); #endif nyar_NyARTransMat_O2_free(nyobj); return 0; }
//======== // 初期化 //======== bool cARTK::initialize( void ) { const char *szCameraParamFName = "Data/camera_para.dat"; #ifdef _WIN32 char *szVConfFName = "Data/WDM_camera_flipV.xml"; #else char *vconf = ""; #endif ARParam sCamParamTemp; int iCamImgSizeX, iCamImgSizeY; // カメラデバイスのオープン if( arVideoOpen( szVConfFName ) < 0 ) { ErrorMessage( "Unable to open connection to camera.\n" ); return false; } // カメラ画像のサイズを取得 if( arVideoInqSize( &iCamImgSizeX, &iCamImgSizeY ) < 0 ) return false; // カメラパラメータファイルの読込み if( arParamLoad( szCameraParamFName, 1, &sCamParamTemp ) < 0 ) { ErrorMessage( "Error loading parameter file for camera.\n" ); return false; } // カメラパラメータのサイズ部分を変更 arParamChangeSize( &sCamParamTemp, iCamImgSizeX, iCamImgSizeY, &m_sCameraParam ); // ライブラリ内のカメラパラメータの初期化 arInitCparam( &m_sCameraParam ); // NyARTransMatの初期化 m_pNyARInst = nyar_NyARTransMat_O2_create( &m_sCameraParam ); // カメラ画像のキャプチャを開始 if( arVideoCapStart() != 0 ) { ErrorMessage( "Unable to begin camera data capture.\n" ); return false; } // マーカーパターンファイルの読込み for( int i = 0 ; i < ARMK_MAXNUM ; i++ ) { if( (m_sMarkerInfo[i].iPattID = arLoadPatt( g_szPattFName[i] )) < 0 ) { ErrorMessage( "Pattern file load error !!\n" ); return false; } m_sMarkerInfo[i].dWidth = g_dPattWidth[i]; m_sMarkerInfo[i].dCenterPos[0] = m_sMarkerInfo[i].dCenterPos[1] = 0.0f; m_sMarkerInfo[i].bVisible = false; } // ちょっとずらす m_sMarkerInfo[1].dCenterPos[0] = 0.0f; m_sMarkerInfo[1].dCenterPos[1] = 30.0f; m_iThreshold = 120; m_dViewScaleFactor = 0.16; return true; }