04 Wprowadzenie do Raycasting'u w j2me

30
Studenkie Kolo Naukowe ISA 2 Warsztaty programistyczne J2ME 19 listopada 2009 Wprowadzenie do Raycasting w J2ME Marcin Majak [email protected] Politechnika Wroclawska Wydzial Elektroniki Studenckie Kolo Naukowe Informatyki Systemów Autonomicznych i Adaptacyjnych 2 19 listopada 2009 Marcin Majak Raycasting 1/30

description

Prezentacja wprowadzająca do podstaw programowania urządzeń mobilnych w j2me. Przygotowana i wygłoszona przez Marcina Majaka 19.11.2009. Prezentacja wygłoszona w ramach Warsztatów programowania telefonów komórkowych w j2me przy Studenckim Kole Naukowym Informatyki Systemów Autonomicznych i Adaptacyjnych ISA^2.

Transcript of 04 Wprowadzenie do Raycasting'u w j2me

  • 1. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Wprowadzenie do Raycasting w J2ME Marcin Majak [email protected] WrocawskaWydzia Elektroniki Studenckie Koo Naukowe Informatyki Systemw Autonomicznychi Adaptacyjnych2 19 listopada 2009Marcin Majak Raycasting 1/30

2. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Plan prezentacji1Wprowadzenie2Pocztkowe ustalenia3Obliczanie odlegoci od obiektw4Ostateczny rezultat5Rysowanie podogi6Rysowanie sutuMarcin Majak Raycasting 2/30 3. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Plan prezentacji1Wprowadzenie2Pocztkowe ustalenia3Obliczanie odlegoci od obiektw4Ostateczny rezultat5Rysowanie podogi6Rysowanie sutuMarcin Majak Raycasting 3/30 4. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Z czym startujemy 1 int[][] RozkladPlanszy=new int [][] 2 { 3 {1,1,1,1,1,1,1}, 4 {1,0,0,0,1,0,1}, 5 {1,0,0,0,1,0,1}, t 6 {1,0,0,0,0,0,1}, 7 {1,0,0,0,0,0,1}, 8 {1,0,0,0,0,0,1}, 9 {1,1,1,1,1,1,1},10 };Przykadowy rozkad planszy Rozkad planszy Pooenie gracza Marcin MajakRaycasting4/30 5. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Czym jest RayCasting?Raycasting mona rozumie jako prb imitacji otaczajcegowiata; to transformacja bardzo ubogiego zbioru danychreprezentujcych prost map wiata na projekcj 3D,wykorzystujc przy tym ledzenie promieni wiata rzucanych odobserwatora w stron obserwowanego obiektu. Przykadowa transformacja prostej mapy na obraz 3D, Rysunki pochodz ze stronyhttp://www.permadi.com/tutorial/raycast Marcin Majak Raycasting 5/30 6. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Rnica midzy Raycasting, a RaytracingPrzez wikszo programistw Raycasting jest uwaany zapodklas metody Raytracing, jednak jest znacznie szybszy zewzgldu na ustalenie pewnych warunkw i pozbycie si zbdnychzalenoci geometrycznych.Raycasting: Rzucanie promieni odbywa si w grupach, np. dla ekranu 100x100 wystarczy tylko 100 promieni Proste ksztaty geometryczne Metoda bardzo szybka, nie wymaga duego nakadu pamiciRaytracing: Kady promie ledzony jest osobno, co oznacza, e dla ciany 100x100 naley dokowna 104 operacji. Prawie kad gur geometryczn mona uzyska Metoda znacznie wolniejsza, wymagajca duej liczby oblicze. Marcin Majak Raycasting 6/30 7. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Plan prezentacji1Wprowadzenie2Pocztkowe ustalenia3Obliczanie odlegoci od obiektw4Ostateczny rezultat5Rysowanie podogi6Rysowanie sutuMarcin Majak Raycasting 7/30 8. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Warunki wstpne Wielko gracza w stosunku do cian i pole widzeniaZakres ledzonych promieni Wybierz ukad wsprzdnych aby pniej wykonywa obliczenia zgodnie z przyjt orientacj. Gwnym zaoeniem jest fakt, e ciany s zawsze prostopade do podogi. Ustal wielko ciany, na ktrej bd prezentowane wyniki tgz. Projection Plane. Wybierz kt widzenia gracza, jego pooenie, wielko i odlego od Projection Plane.Marcin Majak Raycasting8/30 9. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Kilka wyjanie Oglne ustawienie gracza przed Projection PlanePocztkowe ustalenia: Rozmiar ciany Projection Plane: 320x200 pixeli Odlego gracza od Projection Plane: 277 Marcin MajakRaycasting 9/30 10. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Kilka wyjanie Kt pomidzy poszczeglnymi promieniami: 60/320 Pole widzenia gracza i rzucane promienie Marcin Majak Raycasting10/30 11. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Plan prezentacji1Wprowadzenie2Pocztkowe ustalenia3Obliczanie odlegoci od obiektw4Ostateczny rezultat5Rysowanie podogi6Rysowanie sutuMarcin Majak Raycasting11/30 12. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Obliczanie odlegoci DDAAlgorytm: Na podstawie ustawienia gracza i kta widzenia wydziel 30 promieni w lew stron i 30 w praw stron gracza. Czekaj do momentu, gdy promie nie uderzy w przeszkod. Oblicz odlego aktualnego promienia od przeszkody. Narysuj pionowe odcinki odwrotnie proporcjonalne do obliczonej odlegoci zgodnie z zasadami perspektywy przestrzennej. Im dalej nastpia kolizja ze ciank labiryntu, tym mniejszy powinien by pionowy pasek przedstawiajcy ten fragment cianki na wywietlaczu telefonu. Wyrodkuj otrzymane paski wzgldem linii horyzontu. Marcin Majak Raycasting12/30 13. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Obliczanie odlegoci DDA Sposb obliczania odlegoci Marcin Majak Raycasting13/30 14. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Sprawdzanie kolizji w poziomieJak obliczy poziome przecicie z przeszkod:Sposb obliczania poziomego przecicia Marcin MajakRaycasting14/30 15. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Sprawdzanie kolizji w poziomie Znajd pierwsze poziome(Y) przecicie z komrk. Ustal znak punktu w zalenoci od tego jak prowadzony jest promie. Oblicz X przy uyciu formuy X = rozmiar komrki/ tan Sprawd czy promie nie uderzy w przeszkod, jeli tak oblicz odlego Jeeli nie ma przeszkody wylicz nastpne przecicie rozszerzajc wsprzdne Xnew = Xold + Xconst , Ynew = Yold + Yconst Marcin Majak Raycasting15/30 16. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Sprawdzanie kolizji w pionieJak obliczy pionowe przecicie z przeszkod:Sposb obliczania pionowego przecicia Marcin MajakRaycasting16/30 17. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Sprawdzanie kolizji w pionie Znajd pierwsze pionowe(X) przecicie z komrk. Ustal znak punktu w zalenoci od tego jak prowadzony jest promie. Oblicz Y przy uyciu formuy Y = rozmiar komrki tan Sprawd czy promie nie uderzy w przeszkod, jeli tak oblicz odlego Jeeli nie ma przeszkody wylicz nastpne przecicie rozszerzajc wsprzdne Xnew = Xold + Xconst , Ynew = Yold + Yconst Marcin Majak Raycasting17/30 18. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Ostateczne oblicznie odlegoci Marcin Majak Raycasting18/30 19. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Ostateczne oblicznie odlegociDo obliczenia odlegoci midzy obserwatorem, a przeszkodbierzemy krtszy z promieni uzyskanych na poprzednich slajdach.Kilka sposobw obliczenia ostatecznej odlegoci: |P D| = |Px Dx |/ cos , |P E| = |Py Ey |/ cos |P D| =(Px Dx )2 + (Py Dy )2 , |P E| =(Px Ex )2 + (Py Ey )2 Marcin Majak Raycasting19/30 20. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Efekt rybiego okaAby pozby si efektu Rybiego oka naley nasze otrzymanewczeniej wyniki przeskalowa: Poprawna odlego = Znieksztacona odlego cos (1)Sposb jak pozby si tego efektuRayCastingRybieOko.zipEfekt rybiego oka Marcin Majak Raycasting 20/30 21. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Plan prezentacji1Wprowadzenie2Pocztkowe ustalenia3Obliczanie odlegoci od obiektw4Ostateczny rezultat5Rysowanie podogi6Rysowanie sutuMarcin Majak Raycasting21/30 22. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Ostateczne wyraenie do obliczenia wysokoci przedmiotuwidzianego przez obserwatora:HRzeczywiste h= DP rojectionP lane(2)DP romieniaJak wyliczy ostateczn wysoko Marcin Majak Raycasting 22/30 23. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME19 listopada 2009Ostateczny efekt RayCastingPrzykladowyWynik.zipMarcin MajakRaycasting23/30 24. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Plan prezentacji1Wprowadzenie2Pocztkowe ustalenia3Obliczanie odlegoci od obiektw4Ostateczny rezultat5Rysowanie podogi6Rysowanie sutuMarcin Majak Raycasting24/30 25. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Rysowanie podogiRysowanie podogi naley rozpocz od punktu, w ktrym koczysi nasz Projection Plane. Formua na wyliczenie pierwszegoprzecicia promienia z podog jest nastpujca: Hgraczaodlego do P = DP P (3)HsrodekP P Marcin Majak Raycasting25/30 26. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Jak uzyska prawidowy wynikAby wyliczy rzeczywist odlego podogi od oczu gracza naleyprzeskalowa otrzymany powyej wynik: odlego od P Prawdziwa odlego =(4)cos Sposb rysowania podogi Marcin Majak Raycasting26/30 27. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Plan prezentacji1Wprowadzenie2Pocztkowe ustalenia3Obliczanie odlegoci od obiektw4Ostateczny rezultat5Rysowanie podogi6Rysowanie sutuMarcin Majak Raycasting27/30 28. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Rysowanie sutuRysowanie sutu jest podobne to omwionego wczeniej rysowaniapodogi. Rwnie naley wyznaczy pocztkow odlegoobserwatora od punktu przecicia z sutem.Sposb rysowania sutuRayCastingOkienko.zip Marcin Majak Raycasting28/30 29. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Kolejne spotkanieTemat: Subversion - system kontroli wersjiProwadzenie: Micha WalczakData: 26.11.2009, godzina: 17.00Gdzie: sala 23 C-3 Marcin Majak Raycasting29/30 30. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 19 listopada 2009Wicej informacji Kontakt z autorem: [email protected] Strona koa naukowego ISA2 http://autonom.ict.pwr.wroc.pl/ Strona warsztatw: http://autonom.ict.pwr.wroc.pl/mstachniuk Adres tego dokumentu: http://autonom.ict.pwr.wroc.pl/mstachniuk/les/warsztaty2009/05-raycasting-2009.11.19.pdf J2ME Tworzenie gier Janusz Grzyb ftp://ftp.helion.pl/online/j2metg/j2metg-3.pdf Creating 2D Action Games with the Game API http://developers.sun.com/mobility/midp/articles/game/ Wikipedia: Raycasting http://pl.wikipedia.org/wiki/Ray casting Strona z tutorialem http://www.permadi.com/tutorial/raycast/ NetBeans http://www.netbeans.org/ Marcin Majak Raycasting30/30