Rendering dei personaggi, con arti tagliati (modelli di Blender in Java / OpenGL)


10

Quali aspetti dovrei prendere in considerazione per la creazione di animazioni di personaggi e lezioni di rendering se voglio essere in grado di avere arti staccabili? Ho sviluppato un sistema corporeo dettagliato che può avere tutto fino al sistema nervoso definito. Sto mirando a qualcosa di simile al livello di dettaglio dei danni trovato nella fortezza nana. Ad esempio, quando un personaggio subisce danni alla parte superiore del braccio, esiste la possibilità di danni ai nervi che possono disabilitare l'intero braccio. Oppure potrebbero perdere del tutto il braccio.

Ho un sistema scritto per gestire la parte di dati di questo. Ogni personaggio ha un tronco, che ha appendici e parti interne. Ogni appendice può anche avere appendici secondarie e parti interne. Le appendici figlio sono disabilitate / rimosse se un'appendice padre è disabilitata / rimossa. Se una qualsiasi delle appendici o parti interne disabilitate / rimosse sono necessarie per la vita, il personaggio morirà presto.

Quello su cui sto lavorando ora è la parte di disegno / animazione di questo. Come definisco le animazioni per sapere quali sono consentite dato lo stato attuale del corpo (braccia / gambe mancanti e così via)? Come imposto il sistema di disegno per non disegnare gli arti mancanti? Ogni arto / appendice deve essere il suo modello (mi piacerebbe disegnare appendici tagliate sul terreno)?

Il semplice sistema dal quale sto passando (l'ho appena scritto per i test) importa tutti i fotogrammi chiave di un'animazione come modelli completi in un VBO (insieme ai conteggi dei vertici per il punto in cui i fotogrammi chiave iniziano / si fermano). Non importa né utilizza le ossa definite in Blender e non interpola tra i frame.

Questa è probabilmente una domanda piuttosto grande, quindi sto anche cercando risorse che possano portarmi dove devo andare.

MODIFICARE

Chiedo dell'animazione sapendo quali arti sta animando perché vorrei averlo impostato per eseguire un'animazione alternativa se manca un arto richiesto. Dopo averci pensato, immagino di eseguire quel controllo prima di attivare un'animazione e attivare l'animazione appropriata in quel momento.

Risposte:


7

Attualmente sto lavorando su un sistema simile. Animazione procedurale + smembramento ecc.

Come definisco le animazioni per sapere quali sono autorizzate a dare lo stato attuale del corpo (braccia / gambe mancanti e così via)?

Non seguo abbastanza questo bit, se gli arti non ci sono, allora chi se ne frega se viene animato o no, perché non può essere visto.

Ogni arto / appendice deve essere il suo modello (mi piacerebbe disegnare appendici tagliate sul terreno)?

Li costruisco dinamicamente usando i pesi dell'osso del vertice. La qualità è probabilmente leggermente inferiore rispetto a quella di ogni arto a mano, ma è meno sforzo una volta che l'ho fatto una volta, perché posso quindi applicarlo a ogni modello.

Con l'approccio sano della sezione seguente, sì, ogni arto avrebbe il suo modello.

Probabilmente avrei un modello completo a portata di mano dell'intera entità e ognuno degli arti taglierebbe.

Come imposto il sistema di disegno per non disegnare gli arti mancanti?

2 scelte principali, il modo più semplice è quello di disegnare semplicemente gli arti separatamente, e dove gli arti si uniscono hanno facce aggiuntive che sono normalmente nascoste con trame "carne grezza" che si vedranno quando gli arti vengono rimossi.

La seconda scelta è di farlo dinamicamente al volo, questo funzionerà solo con modelli relativamente semplici. L'approccio è prendere il modello di base e trovare i vertici che sono ponderati sull'arto che si desidera smembrare. Rimuovi quei vertici, notando a cosa si collegano in modo tale da conoscere la sezione aperta. Quindi si chiude dinamicamente la sezione aperta con triangoli con una trama "carne grezza". Dal punto di vista di uno sviluppatore di software sano, questo approccio non è buono (deformazione del modello di runtime) e caratteristiche di prestazione meno "piatte", ma mi piace un po '.

Mentre il primo metodo genererà molte più chiamate di disegno, è anche un po 'più accessibile.

Personalmente vado con il secondo, con relativo successo, ma tutti i miei modelli sono molto bassi, quindi per ora è possibile tagliare dinamicamente un modello e ricaricare il VBO all'interno del frame.

Non importa né utilizza le ossa definite in Blender e non interpola tra i frame.

Questo rende davvero difficile fare lo smembramento in modo procedurale, perché come fai a sapere quali vertici appartengono a quale articolazione? I pesi e lo smembramento dei vertici ossei vanno di pari passo così bene che ti consiglio di ripensare questo punto.

Ti suggerisco anche di investire nell'interpolazione. Senza di essa non è possibile accelerare / rallentare le animazioni e si è accoppiati al framerate. Ciò significa che sarai in grado di ottenere di meno dalle tue animazioni. ad esempio, non è possibile rallentare l'animazione della camminata quando qualcuno si ferma, ecc.


Grazie @Michael. Ho sollevato l'interpolazione e l'importazione di ossa perché so che alla fine ne avrò bisogno, ma non le ho ancora. Da quello che hai detto, sembra che saprò cosa fare una volta arrivato a quel punto. Probabilmente assocerei semplicemente un'appendice o un gruppo di appendici a un osso. Farò una domanda separata sull'importazione di ossa.
MichaelHouse

dal momento che stai lavorando su qualcosa di simile, forse hai ulteriori informazioni su questa domanda correlata? gamedev.stackexchange.com/q/20931/7191
MichaelHouse

5

La tua migliore opzione è quella di tagliare gli arti e utilizzare più sottomodelli a seconda dello stato attuale delle ferite. Il tuo approccio all'utilizzo di un VBO per fotogramma chiave è semplicemente eccessivo; utilizzare un sistema di animazione scheletrica e riprodurre diverse animazioni a seconda del danno ricevuto (zoppicare con una gamba, strisciare senza le due gambe, ecc.).

Valve ha pubblicato una buona serie di diapositive sulle ferite e lo smembramento in L4D2. Mi piace molto l'approccio dell'uso di un modello per organi e ossa e del ritaglio del modello "skin" basato su proiezioni di texture di tagli, spari, ecc.


Interessante. Quelle diapositive sembrano buone. Sembra che funzionerebbe per danni che non hanno influenzato un'intera appendice.
MichaelHouse
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.