1 / 16

Panorámy s priestorovým zvukom

Panorámy s priestorovým zvukom. Rastislav Kamenický Školiteľ: Matej Novotný. Špecifikácia. E ditor a P rehliadač fotografických panorám (nejedná sa o vytvorenie panoramatického obrazu) Vkladanie a prehrávanie zvuku Priestorový zvuk Rôzne štýly prehrávania Ukladanie vo formáte XML

Download Presentation

Panorámy s priestorovým zvukom

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Panorámy s priestorovým zvukom Rastislav Kamenický Školiteľ: Matej Novotný

  2. Špecifikácia • Editor a Prehliadač fotografických panorám (nejedná sa o vytvorenie panoramatického obrazu) • Vkladanie a prehrávanie zvuku • Priestorový zvuk • Rôzne štýly prehrávania • Ukladanie vo formáte XML • Import a Export panorám zo servera

  3. Čo to obnáša • Prehľad podobných programov • Načítanie a spracovanie obrazu • Namapovanie obrazu do 3D priestoru a pohyb v ňom • Prehrávanie zvuku v 3D priestore • Práca s XML • Posielanie a sťahovanie súborov skrz internet • Serverová časť (php) • Rozhranie, ktoré toto všetko podporí

  4. Rozhodnutie • Desktopová Aplikácia • Problémy s kompatibilitou • Rozhranie Microsoft VC++ 2008 • A knižnice: OpenCV, OpenGL, Glut, OpenAl, FreeAlut, Wininet (?). • Nevyužité z dobrých dôvodov: WinSock, Glu, Alu, Alut, Xerces, GDImage a mnoho ďalších..

  5. Základy • Rôzne typy panorám (Ktorý tu chýba?)

  6. Cylinder vs Flat

  7. GUI • Čo očakávam že budem vedieť robiť • Vykreslenie Tvaru a Textúry • Rotácia • Zoom • Klikanie a pohyb myšov

  8. 1. Krok k vykresleniu GLUquadricObj *p = gluNewQuadric(); gluSphere(p, 1.0f, 20, 20); Mat Img = imread("test.jpg", CV_LOAD_IMAGE_COLOR); intrr = img.rows; intcc = img.cols; Mat top(rr/3, cc/4, img.type()); for(inti=0;i<rr/3;i++) for(intj=0;j<(cc*3)/4;j++) top.at<uchar>(i, j) = img.at<uchar>(i, j); • Vykreslenie Tvaru • Načítanie obrázku • Spracovanie obrázku

  9. 2. Krok k vykresleniu • Zoom • Rotácia č. 1 • Rotácia č. 2 • // zoom • glTranslatef(0.0f,0.0f,zoom); • //takto to fungovať nemôže • //glRotatef(X,1.0f,0.0f,0.0f); • //glRotatef(Y,0.0f,1.0f,0.0f); • // rotacia • floattmpx = -Xrot; • floattmpy = Yrot; • GetSphereCoordinates(tmpx, tmpy); • gluLookAt(0.0f, 0.0f, 0.0f, sin(tmpx)*cos(tmpy), sin(tmpy), cos(tmpx)*cos(tmpy), 0.0, 1.0, 0.0);

  10. 3. Krok k vykresleniu • Prevod z OpenCV do OpenGL • A konečne vykreslenie glGenTextures(1, m_ text); glBindTexture( GL_TEXTURE_2D, * m_ text ); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); gluBuild2DMipmaps( GL_TEXTURE_2D, 3, img.cols, img.rows, GL_BGR_EXT, GL_UNSIGNED_BYTE, img.data); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, *m_text); gluSphere(p, 1.0f, 20, 20); glDisable(GL_TEXTURE_2D);

  11. Ďalšie komplikácie • Resize a Scale (neexistujuci okraj) • Pohyb myšov (WndProc a OpenGL jednotky) • Množstvo atribútov na menenie • VC++ umrelo • structView_Data { • intstartX; • intstartY; • intmaxX; • intmaxY; • intzoom; • intsensitivity; • intinvertX; • intinvertY; • } View; • structUser_Data { • stringtitle; • stringdescription; • stringauthor; • string info; • } User; • structSound_Data { • Sound_Typesmode; • floatlevel; • float ambient; //audible outside field at N% • int loop; // 0 - stale opakuje • int X; • int Y; • intXsize; • intYsize; • intscale; • stringsoundURL; • }; • vector<Sound_Data> Sound;

  12. Práca s XML • namespaceSystem::Xml XmlTextWriter^ w = gcnewXmlTextWriter(filename, gcnew UTF8Encoding()); w->WriteStartElement("panorama"); w->WriteStartElement("Image_Data"); w->WriteAttributeString("type", System::Convert::ToString(int(XData.Image.type))); w->WriteAttributeString("imageURL", gcnewSystem::String(XData.Image.imageURL.c_str())); w->WriteEndElement(); w->WriteEndElement(); • Analogicky je k tomu aj Reader

  13. Zvuky 1 • Inicializácia • Velocity alutInit(0, NULL); ALfloatlistenerPos[]={0.0,0.0,0.0}; ALfloatlistenerVel[]={0.0,0.0,0.0}; ALfloatlistenerOri[]={LX,LY,LZ, 0.0,1.0,0.0}; //LZ default 1, naopak ako v opengl ALfloat source0Pos[]={ X, Y, Z}; ALfloat source0Vel[]={ 0.0, 0.0, 0.0};

  14. Zvuky 2 • Načítanie zvukovej stopy • Nastavenie prehrávania • Samotné prehranie alutLoadWAVFile("file1.wav",&format,&data,&size,&freq,&loop); alBufferData(buffer[0],format,data,size,freq); alutUnloadWAV(format,data,size,freq); alSourcef(source[0],AL_PITCH,1.0f); alSourcef(source[0],AL_GAIN,1.0f); alSourcefv(source[0],AL_POSITION,source0Pos); alSourcefv(source[0],AL_VELOCITY,source0Vel); alSourcei(source[0],AL_BUFFER,buffer[0]); alSourcei(source[0],AL_LOOPING,AL_TRUE); alSourcePlay(source[0]);

  15. Zvuky 3 • Množstvo ďalších parametrov • AL_DOPPLER_FACTOR, AL_SPEED_OF_SOUND, AL_DISTANCE_MODEL; • AL_NONE, AL_INVERSE_DISTANCE, • AL_INVERSE_DISTANCE_CLAMPED, AL_LINEAR_DISTANCE, • AL_LINEAR_DISTANCE_CLAMPED, AL_EXPONENT_DISTANCE, and • AL_EXPONENT_DISTANCE_CLAMPED • (Inverse – max/min vzdialenosť pod ktoru zvuk neutišuje/nenaberá na sile)

  16. Server TODO • PhP: move_uploaded_file($_FILES["uploadedfile"]["tmp_name"], "my_file"); • C++: HINTERNET hSession = InternetOpen(_T("MyApp"),INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); HINTERNET hConnect = InternetConnect(hSession, _T("localhost"),INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, NULL); HINTERNET hRequest = HttpOpenRequest(hConnect, _T("POST"), _T("upload.php"), 0, 0, 0, INTERNET_FLAG_RELOAD, 0); BOOL sent= HttpSendRequest(hRequest, NULL, -1, frmdata, _tcslen(frmdata));

More Related