Quali sono alcuni metodi per rappresentare i binari del treno?


21

Mi sono occupato di questo per un piccolo progetto, ma non sono andato troppo lontano. Vorrei creare un piccolo programma che consenta a un utente di tracciare un binario del treno e quindi consentire a un "treno" di seguire detto binario su un piano 2D. Vorrei che la traccia fosse piuttosto libera e risultasse in una bella linea liscia. Ho giocato con spline cubiche e ho avuto risultati decenti, ma ho avuto un sacco di problemi a far seguire al treno la spline. Ho anche avuto molti problemi a creare più binari e passare da un treno all'altro.

Qualcuno ha consigli, articoli o codice sorgente che possono aiutarmi a capire qualcosa? Grazie!


3
Sarebbe utile se descrivessi quali sono i tuoi problemi che incontri.
Rachel Blum,

1
Mi piacerebbe vedere una demo del tuo gioco.
ashes999,

Risposte:


10

Quando disegno tracce o strade, voglio sempre iniziare con le spline. Tuttavia, l'ultima volta che ho avuto problemi con le spline (come menziona Rachel Blum , il movimento regolare su una spline è dannoso sia per la parametrizzazione che per le distanze), qualcuno mi ha suggerito che molte strade reali usano archi circolari invece di spline. La curvatura costante semplifica il calcolo delle distanze e lo spostamento a velocità costante lungo di esse. Inoltre, stanno bene.

Ho iniziato a giocare con strade che si alternavano tra archi circolari e linee rette. È simile all'approccio di Will ma gli archi circolari hanno raggio variabile. Ero abbastanza contento di questo approccio ma non ho finito per farci nulla. Prova questa demo (Flash): i controlli a sinistra sono per spline e i controlli a destra sono per un arco circolare (usa il cursore per controllare la lunghezza e la maniglia di trascinamento per controllare l'angolo). Fai una curva molto stretta trascinando la fine della strada per vedere quanto è più bello l'arco circolare.

In alternativa, se vuoi giocare con le griglie (suggerito da Iain ), prova a disegnare da un bordo all'altro anziché da un quadrato all'altro. Ecco una demo (applet Java).



7

L'uso di spline di eremita adeguate può portare ad angoli stretti e apparire piuttosto non-train-track-like:

usando spline di eremita

Ho avuto risultati molto più piacevoli dal trattare il percorso come linee rette che uniscono i cerchi alle articolazioni:

inserisci qui la descrizione dell'immagine

Il trucco consiste nel calcolare le tangenti interne ed esterne dei cerchi adiacenti delle articolazioni e di elaborare l'avvolgimento di ciascuna articolazione in modo da passare sul lato destro di essa.

E, nella logica di posa dei binari, evita le autointersezioni del percorso o trasformale in giunzioni :)

Ecco un video che utilizza questo approccio: http://www.youtube.com/watch?v=PAVksn4btKU


6

Puoi provare a lasciare che l'utente crei le tracce usando le spirali di Cornu . Troverai online quasi nessuna documentazione a riguardo, perché le spline sono di fatto il modo di rappresentare le curve nel software. Ciò nonostante, sono il modo in cui vengono tracciati i binari della ferrovia. Raph Levien ha lavorato molto per renderli popolari .


2

È possibile provare un approccio basato sulla griglia in cui ogni quadrato può collegarsi a uno o più altri quadrati. Potresti quindi avere alcuni pezzi che coprono più quadrati, per creare alcune curve più morbide. Fondamentalmente modulare, come un set di treni.


1
Ho provato qualcosa di simile a un approccio basato sulla griglia. Fondamentalmente ho creato brani in modo da poterli fare clic insieme in modo da dare un po 'più di libertà rispetto alle semplici griglie. Concetto molto simile, penso. Funzionava bene, ma disegnando le tracce selezionando il pezzo appropriato ogni volta che si succhiava.
hokiecsgrad,

2

Ho provato varie tecniche per implementare i binari e ho scoperto che sezioni di cerchi e linee rette davano il miglior risultato e la matematica più semplice per guidare il treno.

Sfortunatamente, ha anche reso la posa della traccia piuttosto complicata e non molto intuitiva, poiché piccoli movimenti dei punti di controllo invieranno la traccia in una direzione completamente diversa.

La matematica per decidere come posare la pista diventa piuttosto complicata, così come aggiungere più punti di controllo.

Ho una breve demo su http://www.dailymotion.com/video/xgl2kp_openrailz-tech-demo-3_videogames .


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.