Quello che vado ad illustrarti è attualmente l'unico modo per rendere animato un file World (.w) di Re-volt. L'immagine seguente ne è una dimostrazione (clicca per visualizzare l'effetto):
Puoi scaricare il pacchetto Multiframe direttamente dalla nostra sezione DOWNLOADS - UTILITY. Le texture sono opera di Urnemanden.
Passo 1. Impostare il tipo richiesto
Flags conosciuti:
[Quad flag] = 1
[Double-Side Flag]=2
[Translucent Flag]=4
[TexAnim Flag] = 512
[ENV on Flag] = 1024
[Quad flag] = 1
[Double-Side Flag]=2
[Translucent Flag]=4
[TexAnim Flag] = 512
[ENV on Flag] = 1024
Per il tipo di mesh, la "Texture Animated mesh" deve avere il flag [TexAnim Flag].
Esempi:
- una mesh Triangular con TexAnim attivo: [TexAnim Flag] -> 512
- una mesh Quad con TexAnim attivo: [Quad Flag] + [TexAnim Flag] = 1+512 -> 513
- una mesh Quad in dimensione raddoppiata con TexAnim attivo: [Quad Flag] + [Double-side Flag] + [TexAnim Flag] = 1+2+512 -> 515
Nota: ASE2W converte le mesh Quad in mesh Triangular.
Passo 2. Da Triangular a Quad
E' altamente consigliata la conversione delle mesh Triangular in Quard. Nel pacchetto Multiframe c'è un file Export w.bat, ma puoi comunque creare tu il tuo file w personale. La prima mesh (CUBE) è quella con l'effetto animato, mentre l'altra è semplicemente l'aeroplano bianco.
Dopo la decodifica, viene creato un file chiamato "multiframe.w.txt"
#############################################
# multiframe.w
#############################################
#cubes count
rvlong 2
#cube:1
#Bounding sphere (X,Y,Z, radius)
rvfloat 358.7139
rvfloat 958.716
rvfloat -658.2766
rvfloat 561.7676
#Bounding Box (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax)
rvfloat -177.2125
rvfloat 894.6403
rvfloat 789.4481
rvfloat 1127.984
rvfloat -659.2766
rvfloat -657.2766
#Poly count
rvshort 2
#Vertex count
rvshort 4
#Poly n?1
# multiframe.w
#############################################
#cubes count
rvlong 2
#cube:1
#Bounding sphere (X,Y,Z, radius)
rvfloat 358.7139
rvfloat 958.716
rvfloat -658.2766
rvfloat 561.7676
#Bounding Box (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax)
rvfloat -177.2125
rvfloat 894.6403
rvfloat 789.4481
rvfloat 1127.984
rvfloat -659.2766
rvfloat -657.2766
#Poly count
rvshort 2
#Vertex count
rvshort 4
#Poly n?1
Fai particolare attenzione a queste due linee:
Le facce risulteranno così:
#Faces (vertex index which link to a face)
rvshort 2
rvshort 1
rvshort 0
rvshort 0
rvshort 2
rvshort 1
rvshort 0
rvshort 0
(Nota che la seconda riga "rvshort 0" non viene presa in considerazione dalle mesh Triangular)
#Faces (vertex index which link to a face)
rvshort 0
rvshort 2
rvshort 3
rvshort 1
rvshort 0
rvshort 2
rvshort 3
rvshort 1
Ora devi aggiungere un po' di cose. Ma prima, elimina il secondo poligono (questo):
#Poly n?2
#type
rvshort 0
#texture
rvshort 0
#Faces (vertex index which link to a face)
rvshort 1
rvshort 2
rvshort 3
rvshort 0
#Vertex Color [3 or 4 depends on the type] (including alpha channel)
rvulong 16777215
rvulong 16777215
rvulong 16777215
rvulong 16777215
#UV map
#(1) UV
rvfloat 0
rvfloat 0.1561
#(2) UV
rvfloat 0.8141
rvfloat 0
#(3) UV
rvfloat 0
rvfloat 0
#(4) UV
rvfloat 0
rvfloat 0
#type
rvshort 0
#texture
rvshort 0
#Faces (vertex index which link to a face)
rvshort 1
rvshort 2
rvshort 3
rvshort 0
#Vertex Color [3 or 4 depends on the type] (including alpha channel)
rvulong 16777215
rvulong 16777215
rvulong 16777215
rvulong 16777215
#UV map
#(1) UV
rvfloat 0
rvfloat 0.1561
#(2) UV
rvfloat 0.8141
rvfloat 0
#(3) UV
rvfloat 0
rvfloat 0
#(4) UV
rvfloat 0
rvfloat 0
Ora devi utilizzare questa mappatura UV:
#(1) UV
rvfloat 0.8141
rvfloat 0
#(2) UV
rvfloat 0
rvfloat 0.1561
#(3) UV
rvfloat 0
rvfloat 0
#(4) UV
rvfloat 0
rvfloat 0
rvfloat 0.8141
rvfloat 0
#(2) UV
rvfloat 0
rvfloat 0.1561
#(3) UV
rvfloat 0
rvfloat 0
#(4) UV
rvfloat 0
rvfloat 0
Le prime due mappature UV non dovrebbero dare problemi. Per la quarta mappatura, devi prendere la prima riga della prima mappatura e la seconda della seconda, ottenendo questo:
Ricorda però che la mappatura 3 è inserita dentro 2 e 1, quindi:
#(3) UV
rvfloat 0
rvfloat 0
#(4) UV
rvfloat 0.8141
rvfloat 0.1561
rvfloat 0
rvfloat 0
#(4) UV
rvfloat 0.8141
rvfloat 0.1561
deve diventare
#(3) UV
rvfloat 0.8141
rvfloat 0.1561
#(4) UV
rvfloat 0
rvfloat 0
rvfloat 0.8141
rvfloat 0.1561
#(4) UV
rvfloat 0
rvfloat 0
Alla fine la mappatura UV deve risultare così:
#(1) UV
rvfloat 0.8141
rvfloat 0
#(2) UV
rvfloat 0
rvfloat 0.1561
#(3) UV
rvfloat 0.8141
rvfloat 0.1561
#(4) UV
rvfloat 0
rvfloat 0
rvfloat 0.8141
rvfloat 0
#(2) UV
rvfloat 0
rvfloat 0.1561
#(3) UV
rvfloat 0.8141
rvfloat 0.1561
#(4) UV
rvfloat 0
rvfloat 0
Passo 3. 513 per Quad, 512 per Tri
Il codice
deve diventare
Passo 4 Animazione della texture / Multiframes
Il codice
# -----------------------------------
#multiframe count
rvlong 0
#multiframe count
rvlong 0
- rvlong [Animation count]
- rvlong [FrameCount]
- rvlong [Texture Page]
- rvfloat [Time in seconds]
- rvfloat [U1]
- rvfloat [V1]
- rvfloat [U2]
- rvfloat [V2]
- rvfloat [U3]
- rvfloat [V3]
- rvfloat [U4]
- rvfloat [V4]
Osserva i files Toy2.w e multiframe.w per comprendere al meglio la struttura.
Nota bene: per ottenere la mappatura UV, è stato usato 3d Studio Max.