Dario's scenery


Erba volumetrica usando SBuilderXSovrapponendo dei Textured Poly

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    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).

    jpg

    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:

    jpg

    Vic

    Edited by VicDabor - 25/7/2016, 21:21
     
    .
  2.  
    .
    Avatar

    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
     
    .
  3.  
    .
    Avatar

    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
  Share  
.