public MainWindow() { InitializeComponent(); this.GdMainZm.Height = 600; this.CameraZm.Height = 600; this.CameraZm.DesiredPixelHeight = 600; this.GdMainZm.Width = 800; this.CameraZm.Width = 800; this.CameraZm.DesiredPixelWidth = 800; this.CameraZm.EnableSampleGrabbing = true; this.CameraZm.NewVideoSample += CameraZm_NewVideoSample; NyARParam ap = NyARParam.loadFromARParamFile(File.OpenRead(AR_CAMERA_FILE), 800, 600); this.ARRgbRaster = new NyARRgbRaster_BYTE1D_B8G8R8_24(800, 600, false); NyARCode code = NyARCode.loadFromARPattFile(File.OpenRead(AR_CODE_FILE), 16, 16); this.ARDetectMarker = new NyARDetectMarker(ap, new NyARCode[] { code }, new double[] { 80.0 }, 1); this.ARDetectMarker.setContinueMode(false); this.Loaded += MainWindow_Loaded; }
public MainWindow() { InitializeComponent(); CaptureDeviceList cl = new CaptureDeviceList(); m_cap = cl[0]; m_cap.SetCaptureListener(this); m_cap.PrepareCapture(cameraResX, cameraResY, 30); // 800x600 resolution, 30 fps NyARParam ap = new NyARParam(); ap.loadARParamFromFile(AR_CAMERA_FILE); ap.changeScreenSize(cameraResX, cameraResY); this.m_raster = new NyARRgbRaster(m_cap.video_width, m_cap.video_height, NyARBufferType.BYTE1D_R8G8B8_24, false); NyARCode code = new NyARCode(16, 16); // 16 pixels to detect within black box code.loadARPattFromFile(AR_CODE_FILE); this.m_ar = new NyARDetectMarker(ap, new NyARCode[] { code }, new double[] { 80.0 }, 1, NyARBufferType.BYTE1D_B8G8R8_24); this.m_ar.setContinueMode(false); this.Loaded += MainWindow_Loaded; }
public MainWindow() { InitializeComponent(); CaptureDeviceList cl = new CaptureDeviceList(); m_cap = cl[0]; m_cap.SetCaptureListener(this); m_cap.PrepareCapture(800, 600, 30); NyARParam ap = NyARParam.loadFromARParamFile(File.OpenRead(AR_CAMERA_FILE), 800, 600); this.m_raster = new NyARRgbRaster_BYTE1D_B8G8R8_24(m_cap.video_width, m_cap.video_height, false); NyARCode code = NyARCode.loadFromARPattFile(File.OpenRead(AR_CODE_FILE), 16, 16); this.m_ar = new NyARDetectMarker(ap, new NyARCode[] { code }, new double[] { 80.0 }, 1); this.m_ar.setContinueMode(false); this.Loaded += MainWindow_Loaded; this.Closing += MainWindow_Closing; }
public NyARWordsBingoCore(Label lbl, Game currentGame, PictureBox pbx) { //Instanciando o PictureBox com o recebido do Form pbxNyAR = pbx; lbNyAR = lbl; gmNyAR = currentGame; //Parâmetros da RA NyARParam ap = new NyARParam(); ap.loadARParamFromFile(AR_CAMERA_FILE); //Lendo arquivo .dat ap.changeScreenSize(640, 480); //Setando tamanho da câmera. //Lendo padrão do marcador NyARCode codeKanji = new NyARCode(16, 16); NyARCode codeA = new NyARCode(16, 16); NyARCode codeB = new NyARCode(16, 16); NyARCode codeC = new NyARCode(16, 16); NyARCode codeD = new NyARCode(16, 16); NyARCode codeE = new NyARCode(16, 16); NyARCode codeF = new NyARCode(16, 16); NyARCode codeG = new NyARCode(16, 16); NyARCode codeH = new NyARCode(16, 16); NyARCode codeI = new NyARCode(16, 16); NyARCode codeJ = new NyARCode(16, 16); NyARCode codeK = new NyARCode(16, 16); NyARCode codeL = new NyARCode(16, 16); NyARCode codeM = new NyARCode(16, 16); NyARCode codeN = new NyARCode(16, 16); NyARCode codeO = new NyARCode(16, 16); NyARCode codeP = new NyARCode(16, 16); NyARCode codeQ = new NyARCode(16, 16); NyARCode codeR = new NyARCode(16, 16); NyARCode codeS = new NyARCode(16, 16); NyARCode codeT = new NyARCode(16, 16); NyARCode codeU = new NyARCode(16, 16); NyARCode codeV = new NyARCode(16, 16); NyARCode codeW = new NyARCode(16, 16); NyARCode codeX = new NyARCode(16, 16); NyARCode codeY = new NyARCode(16, 16); NyARCode codeZ = new NyARCode(16, 16); NyARCode codeBall = new NyARCode(16, 16); NyARCode codeSword = new NyARCode(16, 16); NyARCode codeCar = new NyARCode(16, 16); NyARCode codeBrigadier = new NyARCode(16, 16); NyARCode codeFork = new NyARCode(16, 16); NyARCode codePen = new NyARCode(16, 16); NyARCode codeFish = new NyARCode(16, 16); //Carregando os arquivos dos marcadores no NyARCode codeKanji.loadARPattFromFile(AR_CODE_FILE_KANJI); codeA.loadARPattFromFile(AR_CODE_FILE_A); codeB.loadARPattFromFile(AR_CODE_FILE_B); codeC.loadARPattFromFile(AR_CODE_FILE_C); codeD.loadARPattFromFile(AR_CODE_FILE_D); codeE.loadARPattFromFile(AR_CODE_FILE_E); codeF.loadARPattFromFile(AR_CODE_FILE_F); codeG.loadARPattFromFile(AR_CODE_FILE_G); codeH.loadARPattFromFile(AR_CODE_FILE_H); codeI.loadARPattFromFile(AR_CODE_FILE_I); codeJ.loadARPattFromFile(AR_CODE_FILE_J); codeK.loadARPattFromFile(AR_CODE_FILE_K); codeL.loadARPattFromFile(AR_CODE_FILE_L); codeM.loadARPattFromFile(AR_CODE_FILE_M); codeN.loadARPattFromFile(AR_CODE_FILE_N); codeO.loadARPattFromFile(AR_CODE_FILE_O); codeP.loadARPattFromFile(AR_CODE_FILE_P); codeQ.loadARPattFromFile(AR_CODE_FILE_Q); codeR.loadARPattFromFile(AR_CODE_FILE_R); codeS.loadARPattFromFile(AR_CODE_FILE_S); codeT.loadARPattFromFile(AR_CODE_FILE_T); codeU.loadARPattFromFile(AR_CODE_FILE_U); codeV.loadARPattFromFile(AR_CODE_FILE_V); codeW.loadARPattFromFile(AR_CODE_FILE_W); codeX.loadARPattFromFile(AR_CODE_FILE_X); codeY.loadARPattFromFile(AR_CODE_FILE_Y); codeZ.loadARPattFromFile(AR_CODE_FILE_Z); codeBall.loadARPattFromFile(AR_CODE_FILE_BALL); codeSword.loadARPattFromFile(AR_CODE_FILE_SWORD); codeCar.loadARPattFromFile(AR_CODE_FILE_CAR); codeBrigadier.loadARPattFromFile(AR_CODE_FILE_BRIGADIER); codeFork.loadARPattFromFile(AR_CODE_FILE_FORK); codePen.loadARPattFromFile(AR_CODE_FILE_PEN); codeFish.loadARPattFromFile(AR_CODE_FILE_FISH); double[] WidthArray = { 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0 }; NyARCode[] arrayCodes = { codeKanji, codeA, codeB, codeC, codeD, codeE, codeF, codeG, codeH, codeI, codeJ, codeK, codeL, codeM, codeN, codeO, codeP, codeQ, codeR, codeS, codeT, codeU, codeV, codeW, codeX, codeY, codeZ }; double[] WidthArrayImages = { 80.0, 80.0, 80.0, 80.0, 80.0, 80.0, 80.0 }; NyARCode[] arrayCodesImage = { codeBall, codeSword, codeCar, codeBrigadier, codeFork, codePen, codeFish }; //Seta propriedades da câmera try { Core.cap.SetCaptureListener(this); } catch (Exception e) { MessageBox.Show("Ocorreu um erro no estabelecimento da conexão com a câmera. Verifique se ela está instalada corretamente. Favor, reinicie a aplicação.", "Erro!"); Environment.Exit(0); } Core.cap.PrepareCapture(640, 480, 30); //Create a cluster - Instanciando o Raster, passando os parâmetros do vídeo encontrado no CaptureDevice Core.raster = Core.InstanceRaster(Core.cap.video_width, Core.cap.video_height); //Instanciando os detectores únicos this.ballMarkerDetector = new NyARSingleDetectMarker(ap, codeBall, 80.0, Core.raster.getBufferType()); this.ballMarkerDetector.setContinueMode(true); this.brigadierlMarkerDetector = new NyARSingleDetectMarker(ap, codeBrigadier, 80.0, Core.raster.getBufferType()); this.brigadierlMarkerDetector.setContinueMode(true); this.carMarkerDetector = new NyARSingleDetectMarker(ap, codeCar, 80.0, Core.raster.getBufferType()); this.carMarkerDetector.setContinueMode(true); this.forkMarkerDetector = new NyARSingleDetectMarker(ap, codeFork, 80.0, Core.raster.getBufferType()); this.forkMarkerDetector.setContinueMode(true); this.penMarkerDetector = new NyARSingleDetectMarker(ap, codePen, 80.0, Core.raster.getBufferType()); this.penMarkerDetector.setContinueMode(true); this.swordMarkerDetector = new NyARSingleDetectMarker(ap, codeSword, 80.0, Core.raster.getBufferType()); this.swordMarkerDetector.setContinueMode(true); this.fishMarkerDetector = new NyARSingleDetectMarker(ap, codeFish, 80.0, Core.raster.getBufferType()); this.fishMarkerDetector.setContinueMode(true); //Instanciando o detector de todas as letras this.markerDetectorLetters = new NyARDetectMarker(ap, arrayCodes, WidthArray, 27, Core.raster.getBufferType()); this.markerDetectorLetters.setContinueMode(true); //Instanciando o detector das imagens que representam a palavra na cartela this.markerDetectorImages = new NyARDetectMarker(ap, arrayCodesImage, WidthArrayImages, 7, Core.raster.getBufferType()); this.markerDetectorImages.setContinueMode(true); //Inicia a captura //Inicia a captura try { Core.cap.StartCapture(); } catch (Exception e) { MessageBox.Show("Ocorreu um erro no estabelecimento da conexão com a câmera. Verifique se ela está instalada corretamente."); Environment.Exit(0); } //Abaixo, são as funções que preparam todo o dispositivo e cenário para renderização 3D //Necessário descobrir mais detalhes do funcionamento. //Preparing the 3D device this._device = Core.PrepareD3dDevice(pbx); //Prepara o dispositivo em cima do PictureBox this._device.RenderState.ZBufferEnable = true; this._device.RenderState.Lighting = false; //Projection Camera Settings Matrix tmp = new Matrix(); NyARD3dUtil.toCameraFrustumRH(ap.getPerspectiveProjectionMatrix(), ap.getScreenSize(), 1, 10, 10000, ref tmp); this._device.Transform.Projection = tmp; // View conversion settings (set in the left-handed view matrix). //From 0,0,0, and facing Z +, Y-axis direction on this._device.Transform.View = Matrix.LookAtLH( new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0.0f, 0.0f, 1.0f), new Vector3(0.0f, 1.0f, 0.0f)); Viewport vp = new Viewport(); vp.X = 0; vp.Y = 0; vp.Height = ap.getScreenSize().h; vp.Width = ap.getScreenSize().w; vp.MaxZ = 1.0f; //Set viewport this._device.Viewport = vp; //Draw a color cube instance - Instância de um cubo colorido, padrão da biblioteca NyAR this._cube = new ColorCube(this._device, 40); //Create a background surface this._surface = new NyARSurface_XRGB32(this._device, 640, 480); //Carregando os meshs (objetos 3D) LoadMeshes(); }
public void AR_Initialization(Control topLevelForm) { //Camera parameters NyARParam ap = NyARParam.createFromARParamFile(new StreamReader(AR_CAMERA_FILE)); ap.changeScreenSize(SCREEN_WIDTH, SCREEN_HEIGHT); //List of patterns ar_code = new NyARCode[Constante.PATT_MAX]; //Pattern files AR_CODE_FILES = new String[Constante.PATT_MAX]; //Pattern index list ar_code_index = new int[Constante.PATT_MAX]; AR_CODE_FILES[0] = "data/patt_U.dat"; AR_CODE_FILES[1] = "data/patt_S.dat"; AR_CODE_FILES[2] = "data/patt_T.dat"; AR_CODE_FILES[3] = "data/patt_H.dat"; AR_CODE_FILES[4] = "data/patt_B.dat"; for (int count = 0; count < Constante.PATT_MAX; count++) { ar_code[count] = NyARCode.createFromARPattFile(new StreamReader(AR_CODE_FILES[count]), 16, 16); } marker_width = new double[Constante.PATT_MAX]; for (int count = 0; count < Constante.PATT_MAX; count++) { marker_width[count] = 80.0f; } this._ar = new NyARDetectMarker(ap, ar_code, marker_width, Constante.PATT_MAX); this._ar.setContinueMode(true); Matrix tmp = new Matrix(); NyARD3dUtil.toCameraFrustumRH(ap, 1, 2000, ref tmp); m_Device.Transform.Projection = tmp; // View Matrix: Vector3 camera_position = new Vector3(0, 0, -500); camera_position.Normalize(); //camera_position.Multiply(m_Range); m_Device.Transform.View = Matrix.LookAtLH( camera_position, new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 0.0f)); //m_Device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 2000); Viewport vp = new Viewport(); vp.X = 0; vp.Y = 0; //vp.Height = ap.getScreenSize().h; //vp.Width = ap.getScreenSize().w; vp.Height = SCREEN_HEIGHT; vp.Width = SCREEN_WIDTH; vp.MaxZ = 1.0f; m_Device.Viewport = vp; this._surface = new NyARD3dSurface(m_Device, SCREEN_WIDTH, SCREEN_HEIGHT); NyARDoubleMatrix44 nyar_transmat = this.__OnBuffer_nyar_transmat; int nb_marker_detected = 0; nb_marker_detected = this._ar.detectMarkerLite(this._raster, Constante.binarisation); if (nb_marker_detected > 0) { bestConfidence = 0; bestMarker = 0; //if the number of detected markers is bigger than the max number available we set it back to MAX number if (nb_marker_detected > Constante.MARK_MAX) { nb_marker_detected = Constante.MARK_MAX; } //get the best confidence from the detected markers for (int count = 0; count < nb_marker_detected; count++) { ar_code_index[count] = this._ar.getARCodeIndex(count); if (this._ar.getConfidence(count) > bestConfidence) { bestConfidence = this._ar.getConfidence(count); bestMarker = count; } //textBox1.Text += "bestConfidence: " + bestConfidence + " bestMarker: " + bestMarker+"\n"; } //textBox1.Text += "finally:\nbestConfidence: " + bestConfidence + " bestMarker: " + bestMarker+"\n\n"; try { //MessageBox.Show("bestMarker: " + bestMarker, "RenderForm.AR_Initialization"); this._ar.getTransmationMatrix(bestMarker, nyar_transmat); } catch (Exception x) { //MessageBox.Show(x.ToString(), "RenderForm.AR_Initialize"); } NyARD3dUtil.toD3dCameraView(nyar_transmat, 1f, ref this._trans_mat); } this._nb_marker_detected = nb_marker_detected; { try { this._surface.setRaster(this._raster); } catch (Exception x) { //MessageBox.Show(x.ToString(), "RenderForm.AR_Initialization"); } } }
public void AR_Initialization(Control topLevelForm) { //Camera parameters NyARParam ap = NyARParam.createFromARParamFile(new StreamReader(AR_CAMERA_FILE)); ap.changeScreenSize(SCREEN_WIDTH, SCREEN_HEIGHT); //List of patterns ar_code = new NyARCode[Constante.PATT_MAX]; //Pattern files AR_CODE_FILES = new String[Constante.PATT_MAX]; //Pattern index list ar_code_index = new int[Constante.PATT_MAX]; AR_CODE_FILES[0] = "data/patt_U.dat"; AR_CODE_FILES[1] = "data/patt_S.dat"; AR_CODE_FILES[2] = "data/patt_T.dat"; AR_CODE_FILES[3] = "data/patt_H.dat"; AR_CODE_FILES[4] = "data/patt_B.dat"; for (int count = 0; count < Constante.PATT_MAX; count++) ar_code[count] = NyARCode.createFromARPattFile(new StreamReader(AR_CODE_FILES[count]), 16, 16); marker_width = new double[Constante.PATT_MAX]; for (int count = 0; count < Constante.PATT_MAX; count++) marker_width[count] = 80.0f; this._ar = new NyARDetectMarker(ap, ar_code, marker_width, Constante.PATT_MAX); this._ar.setContinueMode(true); Matrix tmp = new Matrix(); NyARD3dUtil.toCameraFrustumRH(ap, 1, 2000, ref tmp); m_Device.Transform.Projection = tmp; // View Matrix: Vector3 camera_position = new Vector3(0, 0, -500); camera_position.Normalize(); //camera_position.Multiply(m_Range); m_Device.Transform.View = Matrix.LookAtLH( camera_position, new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 0.0f)); //m_Device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 2000); Viewport vp = new Viewport(); vp.X = 0; vp.Y = 0; //vp.Height = ap.getScreenSize().h; //vp.Width = ap.getScreenSize().w; vp.Height = SCREEN_HEIGHT; vp.Width = SCREEN_WIDTH; vp.MaxZ = 1.0f; m_Device.Viewport = vp; this._surface = new NyARD3dSurface(m_Device, SCREEN_WIDTH, SCREEN_HEIGHT); NyARDoubleMatrix44 nyar_transmat = this.__OnBuffer_nyar_transmat; int nb_marker_detected = 0; nb_marker_detected = this._ar.detectMarkerLite(this._raster, Constante.binarisation); if (nb_marker_detected > 0) { bestConfidence = 0; bestMarker = 0; //if the number of detected markers is bigger than the max number available we set it back to MAX number if (nb_marker_detected > Constante.MARK_MAX) nb_marker_detected = Constante.MARK_MAX; //get the best confidence from the detected markers for (int count = 0; count < nb_marker_detected; count++) { ar_code_index[count] = this._ar.getARCodeIndex(count); if (this._ar.getConfidence(count) > bestConfidence) { bestConfidence = this._ar.getConfidence(count); bestMarker = count; } //textBox1.Text += "bestConfidence: " + bestConfidence + " bestMarker: " + bestMarker+"\n"; } //textBox1.Text += "finally:\nbestConfidence: " + bestConfidence + " bestMarker: " + bestMarker+"\n\n"; try { //MessageBox.Show("bestMarker: " + bestMarker, "RenderForm.AR_Initialization"); this._ar.getTransmationMatrix(bestMarker, nyar_transmat); } catch (Exception x) { //MessageBox.Show(x.ToString(), "RenderForm.AR_Initialize"); } NyARD3dUtil.toD3dCameraView(nyar_transmat, 1f, ref this._trans_mat); } this._nb_marker_detected = nb_marker_detected; { try { this._surface.setRaster(this._raster); } catch (Exception x) { //MessageBox.Show(x.ToString(), "RenderForm.AR_Initialization"); } } }