PRMBEND
Prmbend è un
programma che esegue operazioni algoritmiche sui file.prm di Re-Volt.
PrmFrontEnd è un programma con interfaccia
grafica per utilizzare Prmbend, semplificandone l'utilizzo. Il programma è
disponibile solo in lingua inglese.
Utilizzo
prmbend [twist] [bend|shift] [-h
height] [-c height] [-o outfile] infile
twist = -b|t|d [twistheight]
bend = -l|r|u [radius]
shift = -e|w [slide]
Una delle limitazioni principali del
Track Editor di Re-Volt è che i pezzi devono sempre necessariamente
essere appoggiati al "pavimento". Se ad esempio usi una sezione della
pista ad un'elevazione di, per esempio, 8 unità, lo spazio sotto questa
sezione viene riempito da un parallelepipedo. Ad eccezione del Ponte,
non c'è nessun modo per permettere ad una parte di tracciato di
sovrapporsi ad un'altra.
In un certo modo questo problema si può
risolvere con un uso attento delle Instances. Ad esempio, nella pista "Overpass"
(Immagine 1), ho legato insieme diversi Ponti, poi ho usato Rvglue per
tagliare solo la parte alta della sezione e ho incollato questi
files.prm in altre parti della pista dove per il track editor sarebbe
impossibile posizionarli (ad esempio sulle curve). A parole suona un po'
confusionario, ma la foto è abbastanza chiara.
Comunque anche questa soluzione ha dei
limiti. In particolare legati all'uso dei files.prm che possono essere
assemblati in sezioni sovrapposte. Anche se dà molta libertà nella
creazione di una pista, non è sinceramente molto flessibile.
Nel tentativo di risolvere il problema,
ho scritto un programma che dovrebbe aprire un file.prm che ho creato
con un ponte lungo 4 unità e crearne uno con le coordinate per i vertici
dei poligoni alterati in maniera che risulti una curva di 90° con lo
stesso raggio di una curva del track editor originale (dimensione 3x3).
Ciò che ne è uscito fuori è stato molto più di quanto mi aspettassi. Il
file.prm ottenuto era una curva perfetta che combaciava precisamente
nella posizione dove volevo metterla. Testata con diverse auto, la pista
era scorrevole e veloce da guidare. Come si può vedere dall'immagine 1,
la curva sopra-elevata si integra perfettamente nella pista, andando
oltretutto a sovrapporsi sia ad un pezzo rettilineo, sia ad una curva
normale.
Visto che l'alterazione del file.prm
aveva funzionato così bene, ho provato a vedere cosa succedeva inserendo
una elevazione, e ho modificato il programma per aggiungere 4 unità di
innalzamento da un lato della curva all'altro. Per evitare "scalini" ho
applicato questa modifica utilizzando una funzione "seno", in maniera
maniera da evitare discontinuità tra le varie parti (Immagine 2).
Un altro problema che avevo con i pezzi
originali del track editor è che le curve nei tubi sono troppo strette,
e che non ci sono dimensioni alternative come invece ci sono per le
curve normali. Se una sezione di tubo si può piegare correttamente, i
tubi sarebbero stati più divertenti da guidare. Ma provando a piegare
una sezione di tubo e inserendola nuovamente nella pista, ho scoperto un
problema. Il fondo dell'interno del tubo si trova al di sotto del
livello del fondo del blocco che contiene il tubo. Così, inserendo l'instance
direttamente alla base della pista, il piano di fondo taglia il fondo
dell'interno del tubo. E' stato quindi necessario creare una sezione di
tubo elevata da terra, per essere sicuri che fosse utilizzabile in una
pista. Il risultato di una curva in salita in un tunnel è visibile
nell'immagine 3.
Purtroppo escono fuori alcune piccole
imperfezioni a livello grafico, dovute al modo in cui il track editor
gestisce le parti elevate della pista. Ogni sezione della pista ha il
suo sistema di poligoni. Quando il pezzo viene sistemato sul fondo della
pista, restano visibili solo quei poligoni. Ma quando il pezzo viene
innalzato il track editor lo sistema su una piattaforma di 4 lati, dove
ogni lato è un poligono singolo. Siccome i pezzi sono fatti di più
poligoni, le curve risultano abbastanza regolari. Invece le piattaforme,
che hanno pochi poligoni, non risultano regolari se vengono piegate.
Questo causa dei "buchi" tra la parte più alta e quella più bassa del
pezzo quando viene piegato (Immagine 4). Purtroppo questo problema per i
tubi è inevitabile, ma non preclude comunque il loro utilizzo.
Una volta appurato il funzionamento della
piega dei files.prm, il passo successivo è creare uno strumento generale
che sia in grado di creare una varietà di files.prm piegati a scelta. |
Immagine 1
Immagine 2
Immagine 3
Immagine 4
|
Descrizione
Prmbend è un programma che modifica i files.prm; il suo
utilizzo è per coloro che vogliono prendere delle sezioni di pista dal track
editor e modificarle in nuovi pezzi da utilizzare in altre piste. Il programma
può piegare un'instance in un arco di curva o in una "S", creare un cambio di
elevazione nell'instance e modificarne la pendenza. Queste operazioni si possono
riassumere in 3 gruppi (i nomi delle funzioni sono in inglese perchè più
comprensibili che non tradotte - l'operazione "-o" non fa parte di nessun gruppo ma è quella che genera il file modificato):
|
OPERAZIONI
|
|
Gruppo |
Funzione |
Linea di comando |
Descrizione |
Unità default |
Piega |
90° left turn |
-l [radius] |
Piega l'instance in una curva a 90° a sinistra con un raggio di radius unità |
1 |
90° right turn |
-r [radius] |
Piega l'instance in una curva a 90° a destra con un raggio di radius unità |
1 |
U-turn |
-u [radius] |
Piega l'instance in una curva a 180° con un raggio di radius unità |
1 |
Left shift |
-w [slide] |
Piega l'instance lateralmente in modo che il lato lontano sia spostato di slide unità a sinistra del lato vicino |
0 |
right shift |
slide]> |
Piega l'instance lateralmente in modo che il lato lontano sia spostato di slide unità a destra del lato vicino |
0 |
Elevazione |
Raise track |
-h [height] |
Alza il lato lontano dell'instance di height unità |
0 |
Raise track in center |
-c [height] |
Alza il centro dell'instance di height unità |
0 |
Pendenza |
Bank track |
-b [twistheight] |
Ruota il pezzo prendendo come asse il bordo interno dello stesso di twistheight unità |
2 |
Twist track |
-t [twistheight] |
Ruota il pezzo prendendo come asse il centro dello stesso di twistheight unità |
2 |
Dip track |
-d [twistheight] |
Ruota il pezzo prendendo come asse il bordo esterno dello stesso di twistheight unità |
2 |
|
Output file |
-o [outfile] |
Scrive l'instance modificata nel file chiamato outfile. Se quest'opzione non è presente, l'instance modificata verrà salvata come new_prm.prm |
|
|
|
|
|
Le operazioni di Piega sono esclusive, nel senso che puoi
piegare un Prm in una curva a 90°, in una curva a U o a S, ma non puoi fare
combinazioni tra queste. Puoi però eseguire combinazioni con le operazioni di
Elevazione.
Le operazioni di Elevazione (non center) alzano (o abbassano) il
bordo "lontano" dell'instance relativo all'inizio della stessa. Una curva a
sinistra con un cambiamento d'altezza i 4 genererà una curva in salita verso
sinistra. Le Elevazioni in centro invece alzano (o abbassano) la parte centrale
dell'instance.
Le operazioni di Pendenza creano tracciati inclinati dalla curve. Gli shift
(destri o sinistri) non possono essere modificati in pendenza. I tracciati
Bank sono modificati in pendenza in maniera tale che il bordo interno della
curva sia per tutto il raggio allo stesso livello (l'esterno viene alzato). I
tracciati Twist mantengono il centro della curva sempre allo stesso
livello (l'esterno viene alzato, l'interno abbassato). I tracciati Dip
mantengono l'esterno della curva sempre allo stesso livello (l'interno viene
abbassato). I tracciati modificati nelle pendenze non dovrebbero essere usati a
contatto con il terreno, perchè le parti che vengono abbassate potrebbero finire
sotto il livello del pavimento.
I valori radius e shift sono intesi in unità come le utilizza
Re-Volt. Ad esempio "prmbend -l 3 prmfile.prm" trasforma il file prmfile.prm
piegandolo verso sinistra di 90° in maniera che il bordo esterno abbia una curva
con un raggio di 3 unità (ottenendo una curva delle stesse dimensioni di una 3x3
originale dal Track Editor). Il valore radius deve essere sempre
positivo.
Il valore height è dato in unità di Elevazione come le utilizza Re-Volt
(sono i vari "livelli" di elevazione nel Track Editor). Questo valore può essere
positivo o negativo.
Il valore twistheight è dato in unità che sono la metà di una unità di
Elevazione di Re-Volt, e deve essere compreso tra -6 e 6. Con valori negativi,
invece di creare una curva parabolica concava, se ne ottiene una convessa,
causando quindi una notevole perdita di aderenza delle auto.
Note varie
- Questo programma modifica le instance in formato prm. Per
ottenere una instance "solida", è necessario utilizzare un altro programma, come
prm2ncp, che crea il file di collisione dell'instance. Se l'instance viene
incollata nel file del mondo (.w) con Rvglue, il file di collisione viene
generato automaticamente. Se però vuoi guidare sulla tua pista prima di
incollare l'instance, è necessario che il file.ncp sia presente.
- Il sistema di coordinate di Re-Volt usa gli assi X e Z sul pavimento, e l'asse
Y per l'altezza. Prmbend è progettato in maniera che l'orientamento di un file.prm
sia lungo l'asse X. Files.prm con differenti orientamenti possono causare
risultati distorti.
- Il programma è stato creato per consentire di piegare in forme che possano
essere reinserite nella pista come un singolo pezzo di pista, ottenendole da
files.prm creati tagliando sezioni di "ponti". Usare Prmbend su files.prm
ottenuti diversamente possono causare risultati distorti.
Contenuto del file.zip
Insieme al file eseguibile Prmbend e alla sua documentazione
originale, il file che hai scaricato contiene 2 cartelle: Overpasses e Modified.
Queste contengono files.prm e .ncp pregenerati che possono essere usati nei
tracciati di Re-Volt.
- Overpasses: questa cartella contiene instances che sono state create
sistemando sezioni di ponti una vicino all'altra e "tagliando" solo la parte
sopraelevata, rendendo così l'instance utilizzabile come un normale ponte. I
nomi dei file sono tutti sul formato "Xbrg.prm", dove la X è la lunghezza del
ponte. Una sottocartella che si chiama Half contiene un secondo set di ponti che
sono stati compressi a metà del loro spessore (nello stesso modo in cui il
programma Wscale comprime l'intero tracciato). Ci sono 5 varianti per ogni
versione di ponte, da 1 a 5 unità di misura di Re-Volt.
- Modified: questa cartella contiene instances che sono state create applicando
Prmbend alle instances della cartella Overpasses, creando una varietà di altri
pezzi. Tutti i file hanno lo stesso formato per il nome: un numero indica le
dimensioni dell'instance, una lettera il tipo, una lettera opzionale o una
coppia di numeri/lettere il sotto-tipo e un numero opzionale alla fine che
indica l'elevazione del pezzo.
|
ESEMPI INSTANCES
|
|
Componenti |
Tipo |
Descrizione |
Primo carattere |
Turns |
Raggio della curva in unità di Re-Volt |
Hill/Shift |
Lunghezza dell'instance in unità di Re-Volt |
Tipo di Instance |
't' |
Turn — una curva a 90° |
'h' |
Hill — una collina |
's' |
Shift — uno spostamento laterale del tracciato |
Sotto-tipo |
Turns |
"l" per sinistra, "r" per destra |
Shift |
"Nw" per uno spostamento a sinistra di N unità "Ne" per uno spostamento a destra di N unità |
Elevazione |
|
Il numero di livelli di elevazione dell'instance da un bordo all'altro |
|
Quindi un'instance con il nome "3tl4.prm" è una curva a
sinistra con raggio di 3 unità (uguale ad una curva 3x3 fatta con il track
editor) che sale di 4 livelli mentre curva a sinistra. Un'instance con nome
"4s1e8" è uno spostamento diagonale del tracciato lungo 4 unità, spostato di uno
e con un'elevazione di 8 livelli.
I nomi scelti convenzionalmente in questo pacchetto hanno il solo scopo di
identificare con nomi brevi 36 differenti instances, visto che Re-Volt mostra
solo i primi 8 caratteri di un'instance inserita con il Mig.
Con la varietà di pezzi preparati che ci sono nel pacchetto dovrebbe essere già
possibile costruire piste molto varie, mentre il programma Prmbend può essere
usato per creare pezzi ad-hoc che non compaiono nel pacchetto. |