Un muro dovrebbe essere creato come un piano o come una scatola?


22

Quali sono i vantaggi di un muro come piano o come scatola? Dovrei usare un aereo con un collettore di scatole anziché un collettore di maglie?

Risposte:


15

Ci saranno un paio di cose diverse che dovrai considerare.

Nota: i vantaggi delle ottimizzazioni descritte di seguito contano davvero solo con una tonnellata di pareti. A quel punto, potrebbe essere saggio prendere in considerazione una soluzione diversa come il partizionamento dello spazio binario (BSP) per rendere i tuoi muri nel tuo gioco. Ciò renderebbe i tuoi livelli altamente ottimizzati per il rendering (se progettato correttamente) e per la fisica (poiché hai un'ottima definizione di cosa si scontra e cosa no.

interpretazione

Una scatola impiegherà più tempo per il rendering di un piano. Ha più vertici e triangoli, il che significa che lo shader di vertice e il rasterizzatore dovranno essere eseguiti su più dati. Pertanto, utilizzare una casella solo quando è necessario in termini di visibilità. Rimuovi i volti come necessario per ciò che il giocatore dovrà vedere.

Fisica

Dovresti sempre usare a BoxCollideranziché a MeshColliderquando puoi. MeshColliderdevono applicare le collisioni per faccia (o come uno scafo convesso) della mesh e rallentare il raycasting e la fisica (ma è una quantità trascurabile per una sola scatola). Un'altra cosa BoxCollidersè che è molto più difficile per il giocatore passare attraverso di loro quando stanno andando molto velocemente. Anche con continue collisioni, se ti accorgi che le cose attraversano fasi attraverso i muri, puoi sempre semplicemente espandereBoxColliders

Produttività

Se stai lavorando molto più velocemente con gli aerei MeshColliders(perché non hai bisogno di regolare tutto BoxCollidersper adattarli alle loro dimensioni), potrebbe essere giusto usarli solo se ottieni le prestazioni che desideri.


10

Espandendo un po 'i punti di "Coburn" :

Rendering : se si esegue il rendering del muro solo come piano, il muro sarà visibile solo da un lato, poiché il piano (o più esattamente le sue facce) ha solo un lato renderizzato. Quindi, se il giocatore è in grado di muoversi intorno al muro, avresti bisogno di più piani per coprire tutti i lati, il che significa che finirai comunque con una scatola.

Fisica : i collider di geometria semplice (sfere, scatole, ecc.) Sono sempre più veloci da calcolare rispetto ai collider a maglia piena poiché non tutte le facce della mesh devono essere controllate singolarmente. Invece, è possibile utilizzare "semplici" raycast o calcoli di distanza (ad es. Distanza dal centro della sfera meno dimensione della sfera).

Per altri motori fisici che hanno un "collider piano" separato (cosa che Unity non ha), non esiste uno "migliore". Un aereo potrebbe essere leggermente più veloce dal punto di vista delle prestazioni, ma potresti quindi imbatterti nel problema degli oggetti veloci che lo attraversano senza effettivamente scontrarsi. Quindi rimani con collettori più spessi (quindi scatola anziché piano) o passa a Rilevamento di collisione continuo (CCD), come spiegato qui .


Puoi quasi sempre disattivare l'abbattimento del backface.
Bálint,

2
@ Bálint True. L'utente potrebbe quindi vedere il muro anche dall'altro lato, anche se con un'illuminazione errata in quel caso (luce inviata dalle fonti dall'altro lato / stanza, invece di quella in cui si trova).
Philip Allgaier,

Nel tuo secondo punto in realtà non hai specificato se è un pro o un contro e per cosa. Un aereo sembra geometricamente più semplice di una scatola, quindi è questo il punto?
Bakuriu,

@Bakuriu Per quanto ne so, Unity non ha un "collider dell'aereo", quindi "box" è la cosa più vicina. Ho aggiunto una nota per altri motori fisici.
Philip Allgaier,

4

Ancora una cosa sul rendering: quando si dispone della propria implementazione di mappatura dell'ombra, i muri fatti di scatole possono essere superiori ai muri fatti di piani a causa del peter-panning che può apparire con i piani.

Ecco una spiegazione del sintomo:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning


Che cos'è il peter-panning?
Pichi Wuana,

hai seguito il link che ho fornito? dovrebbe essere autoesplicativo.
Djindjidj,

0

Mi è sempre stato detto che se hai le ombre, è meglio renderlo solido per aiutare con il sanguinamento della luce perché la differenza di profondità è troppo piccola e sanguinerà.

Potrei sbagliarmi, ma realizzo tutti i miei muri e cose del genere su due lati, un muro sarà solo un paio di verts quindi non dovrebbe essere un grande risparmio avendo un aereo.

Ci sono alcune cose di cui lascio i lati ma è principalmente il fondo o la parte superiore delle cose che ha molte cose intorno per aiutare con il sanguinamento leggero.

Faccio lo stesso per la fisica, non tutti ci pensavano davvero ma a me sembrava giusto usare un muro come un muro e un aereo come un piano, ma quello sono solo io

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.