Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά random terrain generation
DESCRIPTION
Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation. Γεωργία Καστίδου. Περιεχόμενα. Τι είναι το Terrain Generation Εφαρμογές του Terrain Generation Είδη Terrain Generation Random Terrain Generation Αλγόριθμοι για Random Terrain Generation. Τι είναι Terrain Generation ?. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/1.jpg)
Αλγόριθμοι και Συστήματα για Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά3-Δ Γραφικά
Random Terrain GenerationRandom Terrain Generation
Γεωργία ΚαστίδουΓεωργία Καστίδου
![Page 2: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/2.jpg)
ΠεριεχόμεναΠεριεχόμενα
• Τι είναι το Terrain Generation• Εφαρμογές του Terrain Generation• Είδη Terrain Generation• Random Terrain Generation• Αλγόριθμοι για Random Terrain Generation
![Page 3: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/3.jpg)
Τι είναι Τι είναι Terrain GenerationTerrain Generation??
• Terrain Generation:
Είναι η δημιουργία της διαμόρφωσης του εδάφους.
Δηλαδή η δημιουργία βουνών, λόφων κτλ.
![Page 4: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/4.jpg)
Εφαρμογές Εφαρμογές Terrain GenerationTerrain Generation
• Δημιουργία Landscapes για προσομοιώσεις• Δημιουργία Landscapes για παιχνίδια
![Page 5: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/5.jpg)
HeightmapsHeightmaps
• Ο βασικός τρόπος για τη δημιουργία 3-Δ terrains είναι μέσω της χρήσης των heightmaps. Ένα heightmap είναι ένας απλός δισδιάστατος πίνακας τιμών. Κάθε μια από τις τιμές του παραπάνω πίνακα αναπαριστά το ύψος του terrain στο σημείο της συγκεκριμένης τιμής.
• Για να αποδοθεί το heightmap στις τρεις διαστάσεις δημιουργείται ένα σύνολο σημείων (mesh) εισάγοντας μέσω των δεικτών του πίνακα το ύψος σε κάθε κορυφή και θέτοντας το ίσο με την τιμή του heightmap στο σημείο εκείνο.
![Page 6: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/6.jpg)
HeightmapsHeightmaps
![Page 7: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/7.jpg)
ΑλγόριθμοιΑλγόριθμοιRandom Terrain GenerationRandom Terrain Generation
• Hill – Circle Algorithm
• Fault Algorithm
![Page 8: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/8.jpg)
The Fault AlgorithmThe Fault Algorithm
• Αρχικά θεωρούμε ένα επίπεδο height field
του οποίου όλες οι τιμές είναι 0.
![Page 9: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/9.jpg)
The Fault AlgorithmThe Fault Algorithm
1 iteration
![Page 10: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/10.jpg)
The Fault AlgorithmThe 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
![Page 11: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/11.jpg)
The Fault AlgorithmThe Fault Algorithm
![Page 12: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/12.jpg)
The Fault AlgorithmThe Fault Algorithm
1 Εισαγωγή 2 Εισαγωγές
![Page 13: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/13.jpg)
The Fault AlgorithmThe Fault Algorithm
3 Εισαγωγές 4 Εισαγωγές
![Page 14: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/14.jpg)
The Fault AlgorithmThe Fault Algorithm
16 Εισαγωγές 100 Εισαγωγές
![Page 15: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/15.jpg)
The Fault AlgorithmThe Fault Algorithm
400 Εισαγωγές
![Page 16: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/16.jpg)
The Fault AlgorithmThe Fault AlgorithmVariationsVariations
The Step Function The sine Function
![Page 17: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/17.jpg)
The Fault AlgorithmThe Fault Algorithm
The cosine Function
![Page 18: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/18.jpg)
The Fault AlgorithmThe Fault Algorithm
The Step Function. Iterations 1000
![Page 19: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/19.jpg)
The Fault AlgorithmThe Fault Algorithm
Sine Function. Iterations 1000
![Page 20: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/20.jpg)
The Fault AlgorithmThe Fault Algorithm
Cosine Function. Iterations 1000
![Page 21: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/21.jpg)
Hill AlgorithmHill 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.
![Page 22: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/22.jpg)
Hill AlgorithmHill Algorithm
• Αγνοεί τις αρνητικές τιμές ύψους. Ένα ύψος z θα έχει αρνητικές τιμές εάν το σημείο του οποίου υπολογίζεται το ύψος είναι βρίσκεται σε απόσταση από το κέντρο του λόφου που ανήκει μεγαλύτερη από την ακτίνα.
• Όταν δύο λόφοι ταυτίζονται προσθέτουμε το ύψος του ενός στον άλλον.
![Page 23: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/23.jpg)
Hill Algorithm Hill Algorithm ΠαράδειγμαΠαράδειγμα
1 Εισαγωγή
![Page 24: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/24.jpg)
Hill Algorithm Hill Algorithm ExamplesExamples
![Page 25: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/25.jpg)
Hill AlgorithmHill AlgorithmΚανονικοποίησηΚανονικοποίηση
Ο αλγόριθμος Hill δεν περιορίζει αυτόματα τις τιμές των υψών σε κάποια περιοχή.
Ιδανικά οι τιμές των υψών θα κυμαίνονταν από το 0 στο 1, ώστε να μπορούμε να αλλάξουμε το σύστημα αναφοράς ολόκληρου του terrain κάνοντας το όσο ψηλό θέλουμε χωρίς να επηρεάζουμε τίποτα άλλο. Για να το επιτύχουμε αυτό κανονικοποιούμε το terrain.
![Page 26: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/26.jpg)
Hill AlgorithmHill AlgorithmΚανονικοποίησηΚανονικοποίηση
Εύρεση νέου z:
znorm= ( z – min) / ( max – min )
![Page 27: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/27.jpg)
Hill AlgorithmHill AlgorithmFlatteningFlattening
Θέλουμε έναν τρόπο να «πλαταίνουμε» το terrain χωρίς να ισοπεδώσουμε τα βουνά.
Ένας απλός τρόπος να πλαταίνουμε τις χαμηλές περιοχές είναι να υψώσουμε στο τετράγωνο την τιμή κάθε ύψους. Αυτό θα έχει σαν αποτέλεσμα να μειωθεί η μέση τιμή των υψών χωρίς να επηρεαστεί σε μεγάλο βαθμό η μέγιστη τιμή.
![Page 28: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/28.jpg)
Hill AlgorithmHill AlgorithmFlatteningFlattening
![Page 29: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/29.jpg)
Hill AlgorithmHill Algorithm
![Page 30: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/30.jpg)
Δημιουργία Νησιών με τον Δημιουργία Νησιών με τον αλγόριθμο αλγόριθμο HillHill
• Θέλουμε να έχουμε τους λόφους ομαδοποιημένους προς το κέντρο του heightmap
• Εύρεση τυχαίων τιμών: απόσταση (d) και θήτα (θ). – Η απόσταση υποδηλώνει το πόσο μακριά από το κέντρο του
heightmap βρίσκεται ο λόφος που θέλουμε να τοποθετήσουμε: 0d (1/2)*μέγεθος heightmap
– To θήτα καθορίζει προς τα ποια διεύθυνση από το κέντρο θα τοποθετηθεί ο λόφος.
0θ 2*pi
Υπολογισμός του κέντρου του λόφου χρησιμοποιώντας τα θ,d :
x=heightmap_size/2 + cos(θ) *d
y=heightmap_size/2 + cos(θ) *d
![Page 31: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/31.jpg)
Δημιουργία Νησιών με τον Δημιουργία Νησιών με τον αλγόριθμο αλγόριθμο HillHill
![Page 32: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/32.jpg)
Δημιουργία Νησιών με τον Δημιουργία Νησιών με τον αλγόριθμο αλγόριθμο HillHill
• Προσθήκη Νερού
![Page 33: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/33.jpg)
ΑναφορέςΑναφορές
• 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
![Page 34: Αλγόριθμοι και Συστήματα για 3-Δ Γραφικά Random Terrain Generation](https://reader035.vdocuments.net/reader035/viewer/2022062304/56813488550346895d9b6baf/html5/thumbnails/34.jpg)
Τέλος ΠαρουσίασηςΤέλος Παρουσίασης