-
| .
|
Member
- Group
- Administrator
- Posts
- 956
- Location
- Belluno
- Status
- Offline
|
|
L'amico Eema tempo fa aveva aperto una discussione interessante sull'erba volumetrica ma dopo alcuni esperimenti avevo lasciato perdere, anche per la difficoltà nel posizionare correttamente l'oggetto erba e trovare le sue dimensioni esatte sul campo.
Oggi, mi è venuto in mente di fare una prova usando dei textured poly (con SBuilderX).
Il metodo è semplicissimo: Si fa un poligono flatten per il terreno (o si rileva esattamente la quota del flatten esistente), poi si disegna il primo poligono con una quota di pochi cm superiori (io ho provato con 5), si seleziona Textured Poly e si assegna una texture come quella descritta qui
Bisogna anche indicare il Texture Tiling, ovvero il numero di volte che la texture verrà ripetuta in orizzontale e verticale, un numero troppo basso farà dell'erba grossa e uno troppo alto la farà troppo sottile e, praticamente invisibile. Vanno fatte delle prove per capire la dimensione, in questo caso ho usato 20.
Si fanno alcune copie del poligono (Ctrl+C e Ctrl+V) e si indica una quota di 1 cm maggiore di quella che sta sotto. Per esempio nel mio caso ho 8 poligoni con queste quote:
-282.05 -282.06 -282.07 ...... -282.12
Il poligono flatten si trova a 282.00 m
Si compila e si vede se può andare
Il risultato devrebbe essere di questo tipo:
Vic
Edited by VicDabor - 25/7/2016, 21:21
|
|
| .
|
-
| .
|
Member
- Group
- Administrator
- Posts
- 956
- Location
- Belluno
- Status
- Offline
|
|
Chi vuole fare degli esperimenti può usare questa texture Si può visualizzare la Bitmap in SBuilderX e usare la DDS poi nello scenario.
Vic
|
|
| .
|
-
| .
|
Member
- Group
- Administrator
- Posts
- 956
- Location
- Belluno
- Status
- Offline
|
|
Il metodo più semplice, a mio parere, consiste nel creare un poligono (textured poly) a un paio di centimetri dal suolo e compilarlo così com'è.
Poi si apre il file SCM che viene creato insieme al BGL ( ...\SBuilderX314\Tools\Work) con il blocco note e si avrà un testo di questo tipo:
******************************************
Header( 1 47 45 13 11 ) LatRange( 45 47 )
; Textured Poly # 1
Area( 5 46.08507517 12.06879189 50 ) LayerCall( :lcall 4 ) Jump( : ) :lcall RefPoint( 2 :return 1 46.08507517 12.06879189 E= 282.50000000 v1= 5000 v2= 281 ) BGLVersion( 0800 ) TextureList( 0 6 FF 255 255 255 0 50.000000 erba_volum.bmp ) MaterialList( 0 0.753 0.753 0.753 1.00 0.753 0.753 0.753 1.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 1.00 0.00 ) VertexList( 0 -0089.3851 0000.0000000 -0170.2079 0.0 1.0 0.0 00.000 01.367 ; vertex #000 -0063.1071 0000.0000000 -0048.3749 0.0 1.0 0.0 02.637 09.766 ; vertex #001 -0000.9956 0000.0000000 0084.2081 0.0 1.0 0.0 08.789 18.945 ; vertex #002 0088.5882 0000.0000000 0171.4023 0.0 1.0 0.0 17.773 25.000 ; vertex #003 0125.6162 0000.0000000 0152.2913 0.0 1.0 0.0 21.484 23.633 ; vertex #004 -0060.7167 0000.0000000 -0189.3189 0.0 1.0 0.0 02.832 00.000 ; vertex #005 ) SetMaterial( 0 0 ) DrawTriList( 0 002 001 000 003 002 000 004 003 000 005 004 000 ) EndVersion :return Return EndA
************************************* Si copia e incolla la parte in neretto modificando la quota (in rosso) aggiungendo 1cm per ogni nuovo strato. Il risultato sarà di questo tipo:
****************************************
Header( 1 47 45 13 11 ) LatRange( 45 47 )
; Textured Poly # 1
Area( 5 46.08507517 12.06879189 50 ) LayerCall( :lcall 4 ) Jump( : ) :lcall RefPoint( 2 :return 1 46.08507517 12.06879189 E= 282.50000000 v1= 5000 v2= 281 ) BGLVersion( 0800 ) TextureList( 0 6 FF 255 255 255 0 50.000000 taxi_asphalt.bmp ) MaterialList( 0 0.753 0.753 0.753 1.00 0.753 0.753 0.753 1.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 1.00 0.00 ) VertexList( 0 -0089.3851 0000.0000000 -0170.2079 0.0 1.0 0.0 00.000 01.367 ; vertex #000 -0063.1071 0000.0000000 -0048.3749 0.0 1.0 0.0 02.637 09.766 ; vertex #001 -0000.9956 0000.0000000 0084.2081 0.0 1.0 0.0 08.789 18.945 ; vertex #002 0088.5882 0000.0000000 0171.4023 0.0 1.0 0.0 17.773 25.000 ; vertex #003 0125.6162 0000.0000000 0152.2913 0.0 1.0 0.0 21.484 23.633 ; vertex #004 -0060.7167 0000.0000000 -0189.3189 0.0 1.0 0.0 02.832 00.000 ; vertex #005 ) SetMaterial( 0 0 ) DrawTriList( 0 002 001 000 003 002 000 004 003 000 005 004 000 ) EndVersion :return Return EndA
; Textured Poly # 2
Area( 5 46.08507517 12.06879189 50 ) LayerCall( :lcall 4 ) Jump( : ) :lcall RefPoint( 2 :return 1 46.08507517 12.06879189 E= 282.60000000 v1= 5000 v2= 281 ) BGLVersion( 0800 ) TextureList( 0 6 FF 255 255 255 0 50.000000 taxi_asphalt.bmp ) MaterialList( 0 0.753 0.753 0.753 1.00 0.753 0.753 0.753 1.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 1.00 0.00 ) VertexList( 0 -0089.3851 0000.0000000 -0170.2079 0.0 1.0 0.0 00.000 01.367 ; vertex #000 -0063.1071 0000.0000000 -0048.3749 0.0 1.0 0.0 02.637 09.766 ; vertex #001 -0000.9956 0000.0000000 0084.2081 0.0 1.0 0.0 08.789 18.945 ; vertex #002 0088.5882 0000.0000000 0171.4023 0.0 1.0 0.0 17.773 25.000 ; vertex #003 0125.6162 0000.0000000 0152.2913 0.0 1.0 0.0 21.484 23.633 ; vertex #004 -0060.7167 0000.0000000 -0189.3189 0.0 1.0 0.0 02.832 00.000 ; vertex #005 ) SetMaterial( 0 0 ) DrawTriList( 0 002 001 000 003 002 000 004 003 000 005 004 000 ) EndVersion :return Return EndA
; Textured Poly # 3
Area( 5 46.08507517 12.06879189 50 ) LayerCall( :lcall 4 ) Jump( : ) :lcall RefPoint( 2 :return 1 46.08507517 12.06879189 E= 282.70000000 v1= 5000 v2= 281 ) BGLVersion( 0800 ) TextureList( 0 6 FF 255 255 255 0 50.000000 taxi_asphalt.bmp ) MaterialList( 0 0.753 0.753 0.753 1.00 0.753 0.753 0.753 1.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 1.00 0.00 ) VertexList( 0 -0089.3851 0000.0000000 -0170.2079 0.0 1.0 0.0 00.000 01.367 ; vertex #000 -0063.1071 0000.0000000 -0048.3749 0.0 1.0 0.0 02.637 09.766 ; vertex #001 -0000.9956 0000.0000000 0084.2081 0.0 1.0 0.0 08.789 18.945 ; vertex #002 0088.5882 0000.0000000 0171.4023 0.0 1.0 0.0 17.773 25.000 ; vertex #003 0125.6162 0000.0000000 0152.2913 0.0 1.0 0.0 21.484 23.633 ; vertex #004 -0060.7167 0000.0000000 -0189.3189 0.0 1.0 0.0 02.832 00.000 ; vertex #005 ) SetMaterial( 0 0 ) DrawTriList( 0 002 001 000 003 002 000 004 003 000 005 004 000 ) EndVersion :return Return EndA
****************************************
In questo esempio ci sono 3 strati solo, ma si può continuare fino a 5-10. In rosso sono evidenziati i valori da modificare.
Si salva il testo come .scm e si compila con Scasm.exe che si trova in ...\SBuilderX314\Tools.
Tutto qui
|
|
| .
|
2 replies since 23/3/2013, 12:36 274 views
.