Come viene eseguita l'analisi strutturale nei giochi (ad esempio: costruzione di ponti, Dig or Die e 3D)?


11

Da quanto ho capito, un tipico sistema di truss interattivo avrebbe bisogno di calcoli sostanziali poiché ogni componente influenza l'intero sistema. Penso che potresti fermarti arbitrariamente a un determinato numero di iterazioni a costo dell'accuratezza nella simulazione, ma non so se questo sia l'approccio utilizzato da questi giochi (i giochi di costruzione di ponti sono un esempio di sistemi di truss). D'altra parte, giochi come Dig o Die hanno un sistema strutturale piuttosto complesso che tiene conto anche della coppia (credo) e della compressione ed è molto veloce e funziona su sistemi molto estesi. Immagino che i calcoli di base possano essere simili, ma in caso contrario sono interessato a entrambi gli approcci.

Ragazzi, sapete come sono fatti? Hanno una limitazione arbitraria o usano del tutto un algoritmo diverso? Inoltre, suppongo che qualunque cosa voi ragazzi inventiate possa essere applicata ai sistemi 3D, ma in caso contrario o se non è ovvio, per favore, almeno dite un indizio su come potreste usarlo per il 3D poiché sono interessato a questo sia per il 2D che per il 3D Giochi.

So che non dovrei ringraziare qui, ma trovo ingiusto non ringraziarti almeno per il tuo tempo in anticipo, spero che questo paragrafo non venga rimosso.

EDIT: Se dovessi fare un'ipotesi direi che Dig or Die memorizza i vettori per ciascun blocco e quindi esegue un algoritmo iterativo fino al punto in cui l'accuratezza aggiuntiva nella simulazione non ha senso per i limiti del sistema (ad esempio, il sistema sarebbe troppo grande per non collassare comunque), quindi è limitato da un numero semi-arbitrario (perché basato sull'applicazione) di iterazioni. Ma potrei sbagliarmi.


In breve, sì, generalmente è iterativo, con un conteggio dei passi e dell'iterazione che può essere regolato per la velocità rispetto alla qualità. È anche possibile impostare una matrice di grandi dimensioni e soddisfare tutti i vincoli contemporaneamente, ma ciò può essere molto più impegnativo e poco pratico o impossibile in alcune situazioni.
Alan Wolfe,

Risposte:


5

Sono lo sviluppatore di Dig or Die, quindi posso dare qualche dettaglio in più sulla fisica del gioco

In effetti il ​​punto più cruciale sono state le prestazioni, poiché nel gioco puoi costruire migliaia di blocchi fisici, e molto importante ho altre cose più complesse da simulare (pioggia / acqua), quindi posso risparmiare pochissimo tempo di CPU per la fisica dell'edificio .

Quindi in realtà ho fatto una sorta di ... Non lo so, un algoritmo personale personalizzato non molto preciso, ma funziona abbastanza bene per il gioco. Ho 1 vettore per ogni intersezione di blocchi (quindi ogni blocco è collegato da un massimo di 4 vettori, uno su ciascun lato). Ogni blocco ha un "peso" e "spinge" i vettori attorno ad esso (allo stesso modo) in modo che il totale della grandezza dei vettori sia uguale alla sua altezza. Quando un blocco è ancorato al terreno, tutte le forze / i pesi che vengono spinti al suo interno non vengono mai "respinti", quindi naturalmente con sufficienti iterazioni l'intero sistema trova un equilibrio. Il peso / forza effettuerà una sorta di "flusso" verso i punti di ancoraggio e gestirà molto bene i cambiamenti sulla struttura. Puoi vedere il risultato qui (con l'elemento "Occhiali Eiffel" in gioco): inserisci qui la descrizione dell'immagine

Riguardo alle coppie, lo simulo moltiplicando le forze che vengono trasmesse in orizzontale. Non è perfetto, ma è sufficiente sentire la grande differenza tra costruire in orizzontale e in verticale

Ma sinceramente non mi piace molto il mio sistema, in alcuni casi non è molto preciso; soprattutto perché non gestisco la compressione e l'estensione. Probabilmente esiste un modo per eseguire una simulazione più accurata della mia senza più CPU, ma le mie capacità (e il tempo) al riguardo erano molto limitate, quindi ho fatto quello che potevo :-)

(PS: hai indovinato molto bene :-))


4

Personalmente ho avuto un buon successo con il rilassamento iterativo . Penso che segua le leggi della fisica abbastanza bene quando si tratta di oggetti fatti di aggregati di blocchi. Credo che la serie BridgeBuilder sia basata su un tale metodo, anche se non ho alcuna fonte per confermarlo.

Il rilassamento iterativo è ampiamente usato per le capriate , ma ho simulato con successo grandi oggetti solidi (cemento) con esso: è semplicemente una capriata, le cui articolazioni trasportano carico invece di girare liberamente.


La cosa interessante è che il rilassamento è una tecnica per risolvere le capriate statiche, quindi è accurato. A tale proposito, viene utilizzato per calcolare iterativamente uno spostamento che porta una struttura all'equilibrio.

Ma il valore aggiunto di un gioco (in cui siamo interessati ad ambienti dinamici, perché le strutture statiche e di equilibrio sono noiose) è che abbiamo la possibilità di spostare effettivamente le articolazioni della struttura tra ciascuna iterazione, in base ai vincoli calcolati finora . Ottieni due vantaggi principali:

  • Hai una struttura dinamica, che risponde correttamente a eventuali perturbazioni esterne
  • Hai una struttura che risponde accuratamente alla perdita di membri di supporto (pensa a un disassemblaggio rapido non pianificato) spostando la sua tensione sugli altri membri. In realtà è abbastanza divertente osservare lo spostamento del flusso di stress quando le articolazioni si rompono in un evento a catena
  • Hai una simulazione non lineare! Ulteriore spiegazione di ciò che intendo: di
    solito , l'analisi statica rende l'ipotesi di una piccola deformazione , in cui la struttura non si muove molto lontano dal suo stato iniziale. All'interno di questi limiti, l'analisi statica è corretta perché le articolazioni non sono effettivamente spostate molto. Ma poiché la struttura si deforma sotto il peso sgretolato, otterrai risultati accurati fino alla fine con una simulazione non lineare, mentre otterrai semplicemente uno stato non valido da un risolutore lineare

Il rilassamento iterativo è abbastanza semplice da attuare , stabilità numerica . Ho usato lo schema RK4 con successo per raggiungere la stabilità con grandi strutture coniche. Lo svantaggio è che di solito ha una rigidità abbastanza piccola per motivi di prestazioni, quindi a volte può sembrare una gelatina morbida.

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.