Texture -> Brush -> Surface -> Mesh

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

tix

Betreff: Texture -> Brush -> Surface -> Mesh

BeitragFr, März 12, 2010 23:31
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
ich beschäftige mich aktuell mal wieder mit b3d
komme eig aus der b+ ecke ^^
im zuge meiner experimente komm ich einfach nich zu lösung

also ich versuche ein mesh über add vertexe/triangles zu erstellen
und dann den surfaces per brush jeweils ne andere textur zu verpassen

ich glaub ich hab alle möglichen kombinationen die befehle zu benutzen aus probiert ^^
aber das hat alles nichts genützt
irwas fehlt oder so
das is jez nur die letzte gespeicherte version
hab natürlich auch paintsurface .. probiert ...
das einzige was ich mir noch vorstellen kann das die reihenfolge der befehle falsch ist
derartige "fehler" hat ich schon mehr als genug ^^

wäre echt cool wenn jemand blitzartig das auflösen könnte ^^

ich hab den code mal aufs wesentliche reduziert
die textur selbst ist ja wurst hab eine 256x256er genommen
der name der textur ist "stone.png"
ihr könnt ja ne andere nehmen

start.bb
Code: [AUSKLAPPEN]
Graphics3D 800,600

SetBuffer BackBuffer()

AmbientLight 125,125,125

Include "models.bb"

Global god=CreateCamera()
PositionEntity god,0,25,0
TurnEntity god,90,0,0

;begin main

Global fliptime
Global time
Global ende=False
While ende=False

UpdateWorld
RenderWorld

;begin textzone

Text 10,10,MilliSecs()-time

;end textzone

;begin flip
If ftime<MilliSecs()-15 Then
Flip
fliptime=MilliSecs()
End If
time=MilliSecs()
;end flip

;begin input action

If KeyHit(1) Then ende=True

Wend


models.bb
Code: [AUSKLAPPEN]



Function addplate(surf,x,z,d,a=0,b=1)

Select a

Case 1

ap0=b
ap1=b

Case 2

ap1=b
ap2=b

Case 3

ap2=b
ap3=b

Case 4

ap0=b
ap3=b

End Select


    v=CountVertices(surf)

    AddVertex surf,x,ap0,z
    AddVertex surf,x,ap1,z+d
    AddVertex surf,x+d,ap2,z+d
    AddVertex surf,x+d,ap3,z

    AddTriangle surf,v,v+1,v+2
    AddTriangle surf,v,v+2,v+3

End Function


        Global tex1=LoadTexture("stone.png",1)
    ScaleTexture tex1,0.1,0.1
    TextureBlend tex1,2
    TextureCoords tex1,1

    Global ground=CreateMesh()


    Global brush1=CreateBrush()
    BrushTexture brush1,tex1,0,7
    BrushColor brush1,155,155,255

    Global ground_surf1=CreateSurface(ground,brush1)

    Global brush2=CreateBrush()
    BrushColor brush2,255,155,155

    Global ground_surf2=CreateSurface(ground,brush2)

    ;PaintSurface ground_surf1,brush1
    ;PaintSurface ground_surf2,brush2


For i=0 To 5

    addplate(ground_surf1,-6+i*4,2,2)
    addplate(ground_surf2,-4+i*4,2,2)

    addplate(ground_surf2,-6+i*4,0,2)
    addplate(ground_surf1,-4+i*4,0,2)

    addplate(ground_surf1,-8-i*2,1,1)
    addplate(ground_surf2,-7-i*2,1,1)

    addplate(ground_surf2,-8-i*2,0,1)
    addplate(ground_surf1,-7-i*2,0,1)

Next

    addplate(ground_surf1,-4,-4,4,4)
    addplate(ground_surf2,0,-4,4,4)

    addplate(ground_surf2,-4,-8,4,2)
    addplate(ground_surf1,0,-8,4,2)


    UpdateNormals ground
    EntityType ground,2

Mr.Keks

BeitragFr, März 12, 2010 23:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit den Surfaces funktioniert schon. Nur gibst du den Vertices bei AddVertex keine UV-Koordinaten - ohne die funktioniert aber keine Textur-Darstellung. (Optionale Parameter!)

Weiß nicht, ob dir UV-Koordinaten was sagen. Du ordnest dabei jedem Punkt eine U- und V-Koordinate zwischen 0.0 und 1.0 zu, wobei 0.0,0.0 der oberen linken Ecke deiner Textur entspricht und 1.0,1.0 der unteren rechten Ecke.

(btw. könntest du den Code ruhig mal sinnvoller einrücken... War für mich sehr schwer, mich darin zurechtzufinden. Auch ist es meistens sauberer, keinen Code direkt in Includes auszuführen, sondern den Code in eine Funktion in der eingebundenen Datei zu packen und dann diese Funktion vom einbindenden Programm aus aufzurufen.)
MrKeks.net

tix

BeitragSa, März 13, 2010 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
joa geht schon so einiger massen ^^
danke für den optionalen tip Wink
naja muss wohl noch bisl daran basteln
gespiegelte und zur seite gefallene texturen Rolling Eyes
und das alles für ein würfelähnliches dings ^^

Code: [AUSKLAPPEN]
Function addwallplate(surf,x#,y#,z#,d#,a=0,b=0)

For k#=0 To 9
For i#=0 To 9

    v=CountVertices(surf)

Select b
Case 0 ;bottom/top
    AddVertex surf,x+i*d,   y, z+k*d,   0.1*i,     0.1*k
    AddVertex surf,x+i*d,   y, z+k*d+d, 0.1*i,     0.1*(k+1)
    AddVertex surf,x+i*d+d, y, z+k*d+d, 0.1*(i+1), 0.1*(k+1)
    AddVertex surf,x+i*d+d, y, z+k*d,   0.1*(i+1), 0.1*k
Case 1 ;right/left
    AddVertex surf,x+i*d,   y+10*d-k*d,   z, 0.1*i,     0.1*k
    AddVertex surf,x+i*d,   y+10*d-k*d-d, z, 0.1*i,     0.1*(k+1)
    AddVertex surf,x+i*d+d, y+10*d-k*d-d, z, 0.1*(i+1), 0.1*(k+1)
    AddVertex surf,x+i*d+d, y+10*d-k*d,   z, 0.1*(i+1), 0.1*k

Case 2 ;hind/front
    AddVertex surf,x, y+i*d,   z+k*d,   0.1*i,     0.1*k
    AddVertex surf,x, y+i*d,   z+k*d+d, 0.1*i,     0.1*(k+1)
    AddVertex surf,x, y+i*d+d, z+k*d+d, 0.1*(i+1), 0.1*(k+1)
    AddVertex surf,x, y+i*d+d, z+k*d,   0.1*(i+1), 0.1*k
End Select

Select a
Case 0
    AddTriangle surf,v,v+1,v+2
    AddTriangle surf,v,v+2,v+3
Case 1
    AddTriangle surf,v+2,v+1,v
    AddTriangle surf,v+3,v+2,v
End Select

Next
Next

End Function

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group