Ricerca della consapevolezza dell'entità nell'algoritmo dello spazio 3D e nella struttura dei dati

2

Sto provando a fare un enorme sistema di intelligenza artificiale solo per il divertimento e sono arrivato a questo problema. Come posso far conoscere le entità AI senza far funzionare la CPU in modo ridondante e costoso? Ogni entità ha una zona di consapevolezza spaziale e deve sapere cosa c'è dentro quando deve decidere cosa fare.

Prime riflessioni, per ogni entità testare se le altre entità sono all'interno della prima portata. Ok, quindi è stato il primo tentativo e sì, è ridondante e costoso. Stiamo lavorando con AI in tempo reale su oltre 10000 entità, quindi questa non è una soluzione.

Secondo tentativo, calcola una griglia sulla zona di consapevolezza di ogni entità e verifica se in queste zone ci sono entità (stiamo lavorando con entità 3D con coordinate di posizione float x, y, z) testando ogni punto della griglia con l'indice -by-coordinate entità. Beh, non mi piace perché è anche costoso, ma non come il primo.

In terzo luogo, crea alcuni elenchi multi collegati sulle posizioni indicizzate delle x e delle entità così quando cerchiamo un intervallo tra le posizioni x, y e z, w (questo intervallo definisce il quadrato sopra la zona di consapevolezza spaziale) sopra elenco multi-link, non avremo 'vuoti'. Questo ha il problema di trovare il valore di prossimità più vicino se non ce n'è uno nella posizione in cui iniziamo la ricerca.

Non sono convinto di nessuna delle idee, quindi cerco qualche illuminante. Qualcuno ha idee migliori?

    
posta Khanser 25.11.2011 - 18:08
fonte

2 risposte

1

Le partizioni dello spazio binario sono un'opzione scalabile. Può essere parallelizzato se lo fai correttamente; c'è un articolo su GPU Gems che spiega come.

Un altro è Gerarchie di volume limite .

Un sacco di applicazioni e giochi in realtà combinano i due, creando alberi BSP di alberi BVH.

Interessante che tu abbia posto questa domanda, ho chiesto un domanda su SO ieri riguardante l'implementazione di BVHs ... avendo un po 'di problemi a capire: (

    
risposta data 25.11.2011 - 19:12
fonte
0

Non sono sicuro di aver capito il tuo problema, ma puoi provare a suddividere il tuo spazio in un ottobre .

Ciò contribuirà a rendere più efficiente la ricerca di elementi vicini (vedere un esempio di ricerca di ottobre qui ).

    
risposta data 25.11.2011 - 18:58
fonte

Leggi altre domande sui tag