8 'ΓΡΑΦΙΚΑ ΚΑΙ ΕΙΚΟΝΙΚΗ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑ' Μουστάκας Κ., Παλιόκας Ι., Τσακίρης A., Τζοβάρας Δ.








next

Περιεχόμενα

Πατήστε πάνω στους τίτλους των υποκεφαλαίων ή μεταφερθείτε στην αρχική σελίδα.

Πλοήγηση 


2015

ΚΕΦΑΛΑΙΟ 8: ΣΥΝΘΕΤΙΚΗ ΚΙΝΗΣΗ
img
  • 8.1. Εισαγωγή
  • 8.2. Κίνηση βάσει καρέ-κλειδιών
  • 8.3. Σκελετική Κίνηση
  • 8.4. Δυναμική
  • 8.5. Προτεινόμενες Ασκήσεις και Προβλήματα
  • 8.6. Αναφορές



icon

Σύνοψη

Η συνθετική κίνηση είναι ένα θεμελιώδες στοιχείο των σύγχρονων ρεαλιστικών συστημάτων γραφικών. Είτε πρόκειται για απλή μεταφορά αντικειμένων, είτε για σκελετική κίνηση εικονικών ανθρώπων είτε για πολύπλοκη κίνηση δυναμικών συστημάτων, έχει τις ρίζες της στους 3Δ γεωμετρικούς μετασχηματισμούς και στην υλοποίηση των νόμων της φυσικής. Το παρόν κεφάλαιο αποτελεί εισαγωγή στη συνθετική κίνηση μέσω της περιγραφής της κίνησης βάσει καρέ-κλειδιών, της σκελετικής κίνησης αλλά και της προσομοίωσης δυναμικών συστημάτων βάσει μοντέλων που υλοποιούν προσεγγιστικά τους νόμους της φυσικής και συγκεκριμένα της κλασικής μηχανικής.

Προαπαιτούμενη γνώση

Απαιτούνται βασικές γνώσεις ως υπόβαθρο σε θέματα γραμμικής άλγεβρας, διανυσματικής ανάλυσης, φυσικής και ειδικότερα κλασικής μηχανικής. Από το περιεχόμενο εντός του βιβλίου, απαιτούνται γνώσεις γεωμετρικών μετασχηματισμών και προβολών (Κεφ. 3), αναπαράστασης 3Δ αντικειμένων (Κεφ. 4) και διαχείρισης σκηνής (Κεφ. 7).


8.1. Εισαγωγή

Όταν δούμε σε γρήγορη εναλλαγή μια ακολουθία εικόνων της ίδιας σκηνής, οι οποίες έχουν ληφθεί σε διαφορετικές χρονικές στιγμές, τότε έχουμε την αίσθηση ή καλύτερα την ψευδαίσθηση ότι τα αντικείμενα των εικόνων κινούνται. Αυτή η διαδικασία δε χρειάζεται να εμπλέκει χρήση υπολογιστή, όπως στην περίπτωση του παραδοσιακού αναλογικού κινηματογράφου. Οι ξεχωριστές εικόνες ονομάζονται καρέ και το σύνολό τους ακολουθία συνθετικής κίνησης (animation).

Στη συνέχεια του κεφαλαίου παρουσιάζονται κάποιες θεμελιώδεις μέθοδοι για την περιγραφή και υλοποίηση της κίνησης στις τρεις διαστάσεις. Δύο είναι οι βασικοί τρόποι για να επιτευχθεί αυτό. Ο πρώτος είναι με παρεμβολή βάσει καρέ κλειδιών και ο δεύτερος με χρήση προσομοίωσης των νόμων της φυσικής. Η πρώτη μέθοδος είναι η πιο κλασική περίπτωση που χρησιμοποιείται ευρύτατα σε διάφορους τομείς όπως ο σύγχρονος κινηματογράφος. Στη συνθετική κίνηση βάσει καρέ κλειδιών, ένας ειδικός (3Dartist) αναλαμβάνει να σχεδιάσει στον υπολογιστή τη θέση των αντικειμένων μιας σκηνής σε κάποιες χαρακτηριστικές στιγμές στο χρόνο. Αυτές οι στιγμές αντιστοιχούν στα καρέ-κλειδιά (key-frames). Στη συνέχεια εκτελείται παρεμβολή βάσει των δύο γειτονικών καρέ-κλειδιών (ένα μπροστά στο χρόνο και ένα πίσω) για τον αυτόματο υπολογισμό της θέσης των αντικειμένων σε όλες τις ενδιάμεσες χρονικές στιγμές. Στην Εικόνα 8.1 παρουσιάζεται ένα παράδειγμα συνθετικής σκελετικής κίνησης βάσει καρέ-κλειδιών.

pixel

Εικόνα 8.1. Δύο στιγμιότυπα σκελετικής κίνησης εικονικού χαρακτήρα

Στην περίπτωση, όμως, πολύπλοκων συστημάτων όπως η προσομοίωση ρευστών, ή πολλαπλών αντικειμένων σε σύγκρουση είναι δύσκολο και να σχεδιάσει κάποιος ειδικός ένα συγκεκριμένο καρέ-κλειδί, αλλά και να εκτιμηθεί μια ενδιάμεση κατάσταση με παρεμβολή. Στις περιπτώσεις αυτές υλοποιούνται οι νόμοι της φυσικής και στη συνέχεια τα αντικείμενα της σκηνής αφήνονται να τους υπακούσουν, ακολουθώντας τους κανόνες των δυναμικών συστημάτων. Ο τρόπος αυτός απόδοσης συνθετικής κίνησης δίνει ιδιαίτερα εντυπωσιακά αποτελέσματα αλλά έχει και πολλές δυσκολίες και περιορισμούς που θα συζητηθούν στο αντίστοιχο κεφάλαιο. Η Εικόνα 8.2 δείχνει ένα παράδειγμα προσομοίωσης ενός συνόλου συγκρουόμενων αντικειμένων.

pixel
pixel

Εικόνα 8.2. Παραδείγματα προσομοίωσης συγκρουόμενων αντικειμένων


8.2. Κίνηση βάσει καρέ-κλειδιών

Έστω ότι θέλουμε να μοντελοποιήσουμε ένα κινούμενο αυτοκίνητο. Όπως έχουμε δει σε προηγούμενο κεφάλαιο, ένα τρισδιάστατο αντικείμενο περιγράφεται από ένα σύνολο σημείων (κορυφές), τα οποία συνδέονται ανά τρία μεταξύ τους φτιάχνοντας έτσι στοιχειώδεις επιφάνειες (τρίγωνα) το σύνολο των οποίων ορίζει την επιφάνεια του αντικειμένου. Έστω ακόμα ότι ο χρήστης ενός συστήματος γραφικών (animator), που θέλει να συνθέσει κίνηση, έχει δημιουργήσει αντίγραφα του ίδιου αντικειμένου σε διαφορετικές θέσεις στο χώρο στις οποίες πρέπει το αυτοκίνητο να βρίσκεται σε προδιαγεγραμμένες χρονικές στιγμές (Εικόνα 8.3).

Το μόνο που μεταβάλλεται στο μοντέλο του αυτοκινήτου καθώς αυτό κινείται στο εικονικό περιβάλλον είναι οι θέσεις των κορυφών του και όχι η λίστα των τριγώνων. Έστω, λοιπόν, η θέση κάθε κορυφής:

xi(t)=xi(t), yi(t), zi(t), i={1,...,N}

{Εξ. 8.1}

όπου Ν το σύνολο των κορυφών του αντικειμένου. Η θέση των κορυφών του αντικειμένου είναι γνωστή μόνον τις χρονικές στιγμές t0, t1, t2. Τα καρέ αυτά αποτελούν τα καρέ-κλειδιά της προσομοίωσης. Είναι προφανές ότι ο σχεδιασμός κάθε καρέ χειροκίνητα, θέτοντας δηλαδή τη θέση κάθε κορυφής με το χέρι, είναι ασύμφορος αν σκεφτούμε ότι για μια ρεαλιστική συνθετική κίνηση απαιτείται να έχουμε τουλάχιστον 25 καρέ ανά δευτερόλεπτο. Τι μπορούμε να κάνουμε για να αντιμετωπίσουμε το πρόβλημα αυτό;

Μια πολύ απλή και ευρύτατα χρησιμοποιούμενη λύση είναι η χρήση παρεμβολής για τον υπολογισμό της θέσης των αντικειμένων στα ενδιάμεσα καρέ των καρέ-κλειδιών. Έτσι, ενώ έχουμε ορίσει χειροκίνητα τη θέση του αντικειμένου στα καρέ-κλειδιά, όλα τα ενδιάμεσα καρέ μπορούν να υπολογιστούν με τη χρήση μιας συνάρτησης παρεμβολής.

Στη συνθετική κίνηση βάσει καρέ-κλειδιών είναι ιδιαίτερα σημαντικό να επιλέξουμε σωστά τη μεταβλητή την οποία θα μεταβάλουμε στο χρόνο (π.χ. θέση, προσανατολισμός) αλλά και την κατάλληλη συνάρτηση παρεμβολής.

pixel

Εικόνα 8.3. Καρέ-κλειδιά ενός συγκεκριμένου αντικειμένου για τρεις διαφορετικές χρονικές στιγμές


8.2.1. Μεταφορά

Η μία από τις δύο βασικότερες μεταβλητές που χρησιμοποιείται στη συνθετική κίνηση είναι η θέση ενός αντικειμένου. Ο πιο κλασικός τρόπος για τον υπολογισμό της θέσης ενός αντικειμένου τη χρονική στιγμή t βάσει της θέσης του τις χρονικές στιγμές t0 και t1 είναι η παρεμβολή.

x(t)=(1-a)x(t0)+ax(t1)

{Εξ. 8.2}

όπου η μεταβλητή α μπορεί να μεταβάλλεται γραμμικά ως προς το χρόνο, οπότε έχουμε γραμμική παρεμβολή:

α=t-t0t1-t0

{Εξ. 8.3}

Η παραπάνω σχέση αφορά μια κορυφή του μοντέλου. Μια λύση να επεκταθεί η διαδικασία αυτή σε όλο το αντικείμενο είναι να εφαρμοστεί σε κάθε κορυφή του αντικειμένου.

xi(t)=(1-a)xi(t0)+axi(t1), i={1,...,N}

{Εξ. 8.4}

Μια άλλη λύση είναι να μην πειράξουμε την εξίσωση παρεμβολής αλλά να αλλάξουμε την είσοδο και την έξοδό της. Για παράδειγμα, αντί να χειριζόμαστε κάθε σημείο ενός αντικειμένου ξεχωριστά μπορούμε να το αναπαραστήσουμε ως ένα διάνυσμα κατάστασης μεγέθους που θα περιέχει τις συντεταγμένες όλων των κορυφών.

X(t)=[x1(t), y1(t), z1(t),...,xN(t), yN(t), zN(t)]

{Εξ. 8.5}

Ένα παράδειγμα για την περίπτωση του αυτοκινήτου παρουσιάζεται στην Εικόνα 8.4.

Στην πράξη ο τρόπος με τον οποίο υλοποιείται η συνθετική κίνηση είναι μέσω των μετασχηματισμών. Άρα έστω ο 4xN ομογενής πίνακας C, του οποίου τα διανύσματα-στήλη αντιστοιχούν στις ομογενείς συντεταγμένες καθεμίας από τις Ν κορυφές του.

C=x1x2...xNy1y2...yNz1z2...zN11...1

{Εξ. 8.6}

Έστω και ο ομογενής πίνακας μεταφοράς, του οποίου το διάνυσμα-στήλη που αντιστοιχεί στη μεταφορά μεταβάλλεται με το χρόνο

Mr(t)=100dx(t)010dx(t)001dx(t)0001

{Εξ. 8.7}

Οπότε η μεταφορική κίνηση του αντικειμένου στο χρόνο περιγράφεται από την παρακάτω σχέση:

C'(t)=Mr(t)·C

{Εξ. 8.8}

pixel

Εικόνα 8.4. Συνθετική κίνηση βάσει καρέ -κλειδιών ενός αυτοκινήτου, το οποίο μεταφέρεται πάνω σε μία ευθεία γραμμή


8.2.2. Περιστροφή

Η δεύτερη πολύ σημαντική μεταβλητή που χρησιμοποιείται στη συνθετική κίνηση είναι η περιστροφή. Έστω στην περίπτωση αυτή ο ομογενής πίνακας περιστροφής Α(t) που κωδικοποιεί την περιστροφή γύρω από συγκεκριμένο άξονα περιστροφής. Στην περίπτωση αυτή η περιστροφική κίνηση περιγράφεται από την παρακάτω σχέση.

C'(t)=A(t)·C

{Εξ. 8.9}

Στην παρακάτω εικόνα παρουσιάζεται η περιστροφική κίνηση βάσει καρέ κλειδιών ενός αντικειμένου.

pixel

Εικόνα 8.5. Συνθετική κίνηση βάσει καρέ-κλειδιών ενός αυτοκινήτου, το οποίο περιστρέφεται γύρω από το κέντρο βάρους του


8.3. Σκελετική κίνηση

Πολλές φορές, ενώ θα θέλαμε να χειριστούμε ένα αντικείμενο ως συμπαγές, είναι απαραίτητο να συνθέσουμε κίνηση για τα επιμέρους τμήματά του. Για παράδειγμα στην περίπτωση του αυτοκινήτου πρέπει να ανοίξει μια πόρτα και στη συνέχεια και το παράθυρο. Μια πιο κλασική περίπτωση είναι αυτή ενός εικονικού χαρακτήρα. Κάποια αντικείμενα, λοιπόν, μπορούμε να τα θεωρήσουμε ως ένα σύνολο αντικειμένων τα οποία είναι μεν συμπαγή, αλλά μετασχηματίζονται σε σχέση με τα υπόλοιπα ανάλογα με τη δομή του ενιαίου αντικειμένου.

Ένας τρόπος για την αποδοτική οργάνωση ενός τέτοιου συνόλου αντικειμένων είναι η χρήση ενός μικρού γράφου σκηνής. Έτσι στη ρίζα του γράφου βρίσκεται όλο το αντικείμενο, ενώ τα παιδιά του ορίζουν τα διακριτά υποσύνολά του. Η διαδικασία αυτή επαναλαμβάνεται αναδρομικά. Έτσι στο τέλος έχουμε τους κόμβους-φύλλα, τα οποία αντιστοιχούν σε τμήματα που είναι συμπαγή και δεν έχουν επιπλέον τμήματα. Στα φύλλα αποθηκεύονται και οι κορυφές του αντίστοιχου τμήματος.

Η δομή αυτή αποκαλείται «αρθρωτό συμπαγές μοντέλο» διότι οι ακμές του γράφου σκηνής αντιστοιχούν στις αρθρώσεις/συνδέσεις του πραγματικού μοντέλου. Στην περίπτωση του αυτοκινήτου μια τέτοια άρθρωση αποτελούν οι μεντεσέδες της πόρτας. Για ένα ανθρωποειδές, συνδέσεις αποτελούν οι αρθρώσεις όπως οι ώμοι τα γόνατα, κ.ά. Στην παρακάτω εικόνα παρουσιάζεται ένα παράδειγμα ενός ανθρωποειδούς αρθρωτού αντικειμένου.

Όπως ακριβώς και στο γράφο σκηνής έτσι και στα αρθρωτά μοντέλα ο μετασχηματισμός κάθε κόμβου-γονέα «κληρονομείται» και στα παιδιά του διότι για την εύρεση του τοπικού συστήματος συντεταγμένων κάθε συμπαγούς τμήματος του μοντέλου γίνεται πολλαπλασιασμός όλων των πινάκων μετασχηματισμού των κόμβων οι οποίοι βρίσκονται στη διαδρομή που ενώνει τον εν λόγω κόμβο με τη ρίζα. Άρα, αν οριστεί μια περιστροφή στον ώμο του παραπάνω μοντέλου τότε αυτόματα ο μετασχηματισμός αυτός θα εφαρμοστεί όχι μόνο στο βραχιόνιο οστό αλλά και σε όλο το υπόλοιπο χέρι.

Τι γίνεται, όμως, με την κίνηση των κορυφών της επιφάνειας του μοντέλου; Η ιδέα του σκελετού είναι τελείως τεχνητή και έχει ως σκοπό να υποβοηθήσει τη μοντελοποίηση της σκελετικής κίνησης. Το μοντέλο ενός ανθρωποειδούς είναι, συνήθως, ένα μοντέλο επιφάνειας που αναπαρίσταται μέσω μιας δεικτοδοτημένης λίστας εδρών όπως αυτή περιγράφηκε σε προηγούμενο κεφάλαιο. Πώς, όμως, κινείται κάθε κορυφή έτσι ώστε να ακολουθεί την κίνηση των οστών;

pixel
pixel

Εικόνα 8.6. Παράδειγμα ενός αρθρωτού αντικειμένου. Τα επιμέρους τμήματα του αντικειμένου είναι συμπαγή και μπορούν να κινηθούν γύρω από τις αρθρώσεις.

Κάθε οστό έχει το δικό του σύστημα συντεταγμένων, το οποίο συνήθως έχει ως αρχή των αξόνων τον κόμβο με τον οποίο συνδέεται με το πατρικό οστό. Ο μετασχηματισμός, λοιπόν, ο οποίος συνδέει το τοπικό σύστημα συντεταγμένων ενός οστού με το σύστημα συντεταγμένων κόσμου προκύπτει πολλαπλασιάζοντας όλους τους μετασχηματισμούς στο γράφο σκηνής οι οποίοι συνδέουν το τρέχον οστό με τη ρίζα του γράφου.

Mjworld=Πie pathMi

{Εξ. 8.10}

όπου Μi ο μετασχηματισμός που μετασχηματίζει το σύστημα συντεταγμένων του κόμβου i σε αυτό του κόσμου i-1 και βρίσκεται στη διαδρομή που συνδέει τη ρίζα με τον κόμβο j. Τι γίνεται, όμως, με μια συγκεκριμένη κορυφή της επιφάνειας ενός αντικειμένου; Έστω η κορυφή v της παρακάτω εικόνας:

pixel

Εικόνα 8.7. Παράδειγμα ενός αρθρωτού αντικειμένου. Τα επιμέρους τμήματα του αντικειμένου είναι συμπαγή και μπορούν να κινηθούν γύρω από τις αρθρώσεις.

Αξίζει να σημειωθεί ότι στην παραπάνω εικόνα το οστό του αρθρωτού μοντέλου απαρτίζεται από τα δύο μαύρα διακεκομμένα ευθύγραμμα τμήματα. Η κορυφή v βρίσκεται πάνω στην επιφάνεια του χεριού, η οποία δε σχεδιάζεται για λόγους ευκολίας απεικόνισης. Μια προφανής λύση είναι η κορυφή v να ακολουθεί την κίνηση του βραχιόνιου οστού. Εφόσον, λοιπόν, οι συντεταγμένες του v έχουν οριστεί ως προς το τοπικό σύστημα συντεταγμένων, τότε η έκφραση που δίνει τις συντεταγμένες του στο σύστημα συντεταγμένων κόσμου είναι η εξής:

vworld=Mjworld·v

{Εξ. 8.11}

Η εξάρτηση ενός σημείου μιας επιφάνειας από την κίνηση ενός μόνο οστού του αρθρωτού αντικειμένου έχει ως αποτέλεσμα αφύσικη κίνηση της επιφάνειας του αντικειμένου στις περιοχές κοντά στις αρθρώσεις, κάτι που είναι λογικό διότι η κίνηση στις περιοχές αυτές αναμένεται να επηρεάζεται από δύο τουλάχιστον οστά. Για το λόγο αυτό είναι σύνηθες να συντίθεται η κίνηση μιας κορυφής λαμβάνοντας υπόψη περισσότερα του ενός οστά και σταθμίζοντας την επίδρασή του καθενός με προϋπολογισμένα βάρη. Στην περίπτωση αυτή η θέση της κορυφής v στο σύστημα συντεταγμένων κόσμου δίνεται από την παρακάτω σχέση:

vworld=(i=0NMiworld)·v

{Εξ. 8.12}

όπου i είναι ο δείκτης και Ν ο αριθμός των οστών, από τα οποία εξαρτάται η κίνηση της κορυφής v.