1 / 34

Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation

Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation. Γεωργία Καστίδου. Περιεχόμενα. Τι είναι το Terrain Generation Εφαρμογές του Terrain Generation Είδη Terrain Generation Random Terrain Generation Αλγόριθμοι για Random Terrain Generation. Τι είναι Terrain Generation ?.

Télécharger la présentation

Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation

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. Αλγόριθμοι και Συστήματα για 3-Δ ΓραφικάRandom Terrain Generation Γεωργία Καστίδου

  2. Περιεχόμενα • Τι είναιτο Terrain Generation • Εφαρμογές του Terrain Generation • Είδη Terrain Generation • Random Terrain Generation • Αλγόριθμοι για Random Terrain Generation

  3. Τι είναι Terrain Generation? • TerrainGeneration: Είναι η δημιουργία της διαμόρφωσης του εδάφους. Δηλαδή η δημιουργία βουνών, λόφων κτλ.

  4. Εφαρμογές Terrain Generation • Δημιουργία Landscapes για προσομοιώσεις • Δημιουργία Landscapes για παιχνίδια

  5. Heightmaps • Ο βασικός τρόπος για τη δημιουργία 3-Δ terrains είναι μέσω της χρήσης των heightmaps. Ένα heightmap είναι ένας απλός δισδιάστατος πίνακας τιμών. Κάθε μια από τις τιμές του παραπάνω πίνακα αναπαριστά το ύψος του terrain στο σημείο της συγκεκριμένης τιμής. • Για να αποδοθεί το heightmap στις τρεις διαστάσεις δημιουργείται ένα σύνολο σημείων (mesh) εισάγοντας μέσω των δεικτών του πίνακα το ύψος σε κάθε κορυφή και θέτοντας το ίσο με την τιμή του heightmap στο σημείο εκείνο.

  6. Heightmaps

  7. ΑλγόριθμοιRandom Terrain Generation • Hill – Circle Algorithm • Fault Algorithm

  8. The Fault Algorithm • Αρχικά θεωρούμε ένα επίπεδο height field του οποίου όλες οι τιμές είναι 0.

  9. The Fault Algorithm 1 iteration

  10. The Fault Algorithm • Το πρώτο πρόβλημα είναι πως πρέπει να δημιουργηθεί μια τυχαία ευθεία, η οποία διαιρεί σε δύο κομμάτια το terrain. • Λύση: The Normal Form • ax + bz = c όπου a*a + b*b = 1 και c >= 0 • a = sin(v) b = cos(v) όπου v είναι μια τυχαία τιμή. • Η απόσταση από ένα σημείο (x1,z1), από μια ευθεία, ax+by-c=0, είναι: dist = a*x1 + b*z1 - c

  11. The Fault Algorithm

  12. The Fault Algorithm 1 Εισαγωγή 2 Εισαγωγές

  13. The Fault Algorithm 3 Εισαγωγές 4 Εισαγωγές

  14. The Fault Algorithm 16 Εισαγωγές 100 Εισαγωγές

  15. The Fault Algorithm 400Εισαγωγές

  16. The Fault AlgorithmVariations The Step Function The sine Function

  17. The Fault Algorithm The cosine Function

  18. The Fault Algorithm The Step Function. Iterations 1000

  19. The Fault Algorithm Sine Function. Iterations 1000

  20. The Fault Algorithm Cosine Function. Iterations 1000

  21. Hill Algorithm • Βήμα 1:Αρχικοποίηση το terrain θέτοντας τις τιμές όλων των υψών σε 0. • Βήμα 2: Επιλογή ενός τυχαίου σημείου πάνω ή κοντά στο terrain και μιας τυχαίας ακτίνας (έστω r) μεταξύ μιας προκαθορισμένης μέγιστης και ελάχιστης τιμής. • Βήμα 3: Δημιουργία λόφου στο terrain με κέντρο το σημείο (x1, y1), δοθέντος της ακτίνας r. • Παράδειγμα: Το ύψος του λόφου στο σημείο (x1, y1) είναι z = r2 – (( x1 – x2)2 + ( y1 – y2)2 ) • Βήμα 4:Επιστροφή στο βήμα 2 και επανάληψη τόσες φορές όσες χρειάζονται. • 5. Κανονικοποίηση του terrain. • 6. Flatten out the valleys.

  22. Hill Algorithm • Αγνοεί τις αρνητικές τιμές ύψους. Ένα ύψος z θα έχει αρνητικές τιμές εάν το σημείο του οποίου υπολογίζεται το ύψος είναι βρίσκεται σε απόσταση από το κέντρο του λόφου που ανήκει μεγαλύτερη από την ακτίνα. • Όταν δύο λόφοι ταυτίζονται προσθέτουμε το ύψος του ενός στον άλλον.

  23. Hill Algorithm Παράδειγμα 1 Εισαγωγή

  24. Hill Algorithm Examples

  25. Hill AlgorithmΚανονικοποίηση Ο αλγόριθμος Hill δεν περιορίζει αυτόματα τις τιμές των υψών σε κάποια περιοχή. Ιδανικά οι τιμές των υψών θα κυμαίνονταν από το 0 στο 1, ώστε να μπορούμε να αλλάξουμε το σύστημα αναφοράς ολόκληρου του terrain κάνοντας το όσο ψηλό θέλουμε χωρίς να επηρεάζουμε τίποτα άλλο. Για να το επιτύχουμε αυτό κανονικοποιούμε το terrain.

  26. Hill AlgorithmΚανονικοποίηση Εύρεση νέου z: znorm= ( z – min) / ( max – min )

  27. Hill AlgorithmFlattening Θέλουμε έναν τρόπο να «πλαταίνουμε» το terrain χωρίς να ισοπεδώσουμε τα βουνά. Ένας απλός τρόπος να πλαταίνουμε τις χαμηλές περιοχές είναι να υψώσουμε στο τετράγωνο την τιμή κάθε ύψους. Αυτό θα έχει σαν αποτέλεσμα να μειωθεί η μέση τιμή των υψών χωρίς να επηρεαστεί σε μεγάλο βαθμό η μέγιστη τιμή.

  28. Hill AlgorithmFlattening

  29. Hill Algorithm

  30. Δημιουργία Νησιών με τον αλγόριθμο Hill • Θέλουμε να έχουμε τους λόφους ομαδοποιημένους προς το κέντρο του heightmap • Εύρεση τυχαίων τιμών: απόσταση (d) και θήτα(θ). • Η απόσταση υποδηλώνει το πόσο μακριά από το κέντρο του heightmap βρίσκεται ο λόφος που θέλουμε να τοποθετήσουμε: 0d (1/2)*μέγεθος heightmap • To θήτα καθορίζει προς τα ποια διεύθυνση από το κέντρο θα τοποθετηθεί ο λόφος. 0θ 2*pi Υπολογισμός του κέντρου του λόφου χρησιμοποιώντας τα θ,d : x=heightmap_size/2 + cos(θ) *d y=heightmap_size/2 + cos(θ) *d

  31. Δημιουργία Νησιών με τον αλγόριθμο Hill

  32. Δημιουργία Νησιών με τον αλγόριθμο Hill • Προσθήκη Νερού

  33. Αναφορές • http://www.lighthouse3d.com/opengl/terrain/index.php3?faultvar • http://www.robot-frog.com/3d/hills/index.html • http://www.riaz.de/tutorials/terrain01/terrain01.html • http://www.ridgecrest.ca.us/~jslayton/terrain.html

  34. Τέλος Παρουσίασης

More Related