Vertex2D
Neues vom Werk

Also ich habe Vertex2D nochmal neu aufgegriffen und fast komplett neu geschrieben. Jetzt beeinhaltet es folgende features :
Dem "Mesh2D" kann jetzt eine geladene Textur zugewiesen werden
Diese kann an das Mesh angepasstwerden über vier "EckKoordinaten"
Das mesh kann gedreht werden, sowohl nach winkel "RotateMesh2D" oder nach Speed "TurnMesh2D"
Scalen kann man auch schon , x und y, aber ich bin noch nicht ganz zufrieden damit... werde es nochmal überarbeiten
Licht- und schattenengine wieder nach dem alten ansatz angefangen, diesmal gegen die schatten "ins unendliche"... zwar nur aus dem bildschrimrand hinaus aber man soll es denken
Screenshots habe ich leider keine, werde aber noch welche hinzufügen, evtl. auch einen Download...
[EDIT]
So hier der Screenshot :
Und für die die es mal so sehen wollen , der
Download Vertex2D
[Edit2]
Ich habe die Steuerung vergessen
:
W = WireFrame An/Aus
Maus Links = Licht1 positionieren
Maus Rechts = Licht2 positionieren
Enter = Debug an/aus (Die Vertexpunkte und -linien werden gemalt)
mfg ToeB






Screenshots habe ich leider keine, werde aber noch welche hinzufügen, evtl. auch einen Download...
[EDIT]
So hier der Screenshot :
Und für die die es mal so sehen wollen , der
Download Vertex2D
[Edit2]
Ich habe die Steuerung vergessen

W = WireFrame An/Aus
Maus Links = Licht1 positionieren
Maus Rechts = Licht2 positionieren
Enter = Debug an/aus (Die Vertexpunkte und -linien werden gemalt)
mfg ToeB
Neue Technik

Ich hatte mir gedacht, warum schatten berechnen, wenn man nicht auch das Licht berechnen kann. Dazu wollte ich über Draw3D eine Texture die Schwarz ist und transparent über alles zeichnen und dann nur noch die stellen, wo das Licht hinkommt erhellen.
Aber das ist vieeel zu lahm... Kennt jemand nicht noch andere Methoden zum rendern von licht ?
mfg ToeB
Aber das ist vieeel zu lahm... Kennt jemand nicht noch andere Methoden zum rendern von licht ?
mfg ToeB
Anfänge

So ich hab mir jetzt mal ein Projekt vorgenommen, das dem Programmierer hilft, gute Effekte in das 2D Spiel reinzubringen. Ich habe es Vertex2D genannt, weil es sich dort nur um Punkte handlet, die mit Linien zu einem Object zusammengebastelt werden. Das ganze läuft dann über Draw3D, weil für mache sachen reines 2D zu langsam ist. Hier schonmal ein Bild vorab :
Hier seht man das licht welches man mit dem Courser Bewegen kann. Dieses simple licht dient zurzeit nur für die schattenberechnung, später noch um bereiche aufzuhellen.
Und jetzt denken bestimmt machnche : "Für einen kreis und ein Quadrat kann ich das auch, was ist denn dabei ?" - Tja das ist ja das gute daran, du kannst z.B. eine Actionfigur von deinem Jump'n'run nachbilden, auf das Bild legen und schon siehts so aus als ob der Spieler schatten wirft, also es kann jede x-beliebige Form nachgebildet werden...
Der code für das Beispiel sieht so aus :
Code: [AUSKLAPPEN]
mfg ToeB
Hier seht man das licht welches man mit dem Courser Bewegen kann. Dieses simple licht dient zurzeit nur für die schattenberechnung, später noch um bereiche aufzuhellen.
Und jetzt denken bestimmt machnche : "Für einen kreis und ein Quadrat kann ich das auch, was ist denn dabei ?" - Tja das ist ja das gute daran, du kannst z.B. eine Actionfigur von deinem Jump'n'run nachbilden, auf das Bild legen und schon siehts so aus als ob der Spieler schatten wirft, also es kann jede x-beliebige Form nachgebildet werden...
Der code für das Beispiel sieht so aus :
Code: [AUSKLAPPEN]
Graphics3D 800,600,16,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Global Camera = CreateCamera()
Include "Draw3D.bb" : DrawInit3D(Camera) : Origin3D(800,600)
Include "Vertex2D.bb"
Global Test.mesh2D = Add2DMesh(0,175,50)
v0.vertex2D = Add2DVertex(Test,-50,+50)
v1.vertex2D = Add2DVertex(Test,+50,+50)
v2.vertex2D = Add2DVertex(Test,+50,-50)
v3.vertex2D = Add2DVertex(Test,-50,-50)
Add2DLine(Test,v0,v1)
Add2DLine(Test,v1,v2)
Add2DLine(Test,v2,v3)
Add2DLine(Test,v3,v0)
Global Ball.mesh2D = Add2DMesh(0,-100,50)
Const Stuck# = 10
Const Steps# = 360.0 / Stuck
Global Radius# = 50
oldv.vertex2D = Add2DVertex(Ball,Radius,0)
fv.vertex2D = oldv
For wink# = 1 To Stuck-1
newv.vertex2D = Add2DVertex(Ball,Cos(wink*Steps) * Radius,Sin(wink*Steps) * Radius)
Add2DLine(Ball,newv,oldv)
oldv = newv
Next
Add2DLine(Ball,fv,oldv)
Global Light1.light2D = Add2DLight(-200,200)
Global Tex2 = LoadImage3D("Tex2.jpg",4)
Global Shadow = LoadImage3D("Shadow.png",2,2)
Global Tex1 = LoadImage3D("Tex1.jpg",4)
Global Native = LoadImage3D("GMaxA.png",2,2)
CameraClsColor(Camera,100,100,100)
Repeat
Draw2DShadow(Shadow)
Draw2DLine(Native)
Draw2DVertex(Native)
Draw2DLight(Native)
light1\x = MouseX3D
light1\y = MouseY3D
DrawQuad3D(Tex1,v0\m\x+v0\x,v0\m\y+v0\y,v1\m\x+v1\x,v1\m\y+v1\y,v2\m\x+v2\x,v2\m\y+v2\y,v3\m\x+v3\x,v3\m\y+v3\y)
DrawRect3D(Tex2,0,0,0,0,800,600)
ColorN3D 255,255,255
Oval3D(Native,Ball\x,Ball\y,45,45,0)
UpdateVertex2D()
RenderWorld()
Clear3D()
Flip
Until KeyHit(1)
End
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Global Camera = CreateCamera()
Include "Draw3D.bb" : DrawInit3D(Camera) : Origin3D(800,600)
Include "Vertex2D.bb"
Global Test.mesh2D = Add2DMesh(0,175,50)
v0.vertex2D = Add2DVertex(Test,-50,+50)
v1.vertex2D = Add2DVertex(Test,+50,+50)
v2.vertex2D = Add2DVertex(Test,+50,-50)
v3.vertex2D = Add2DVertex(Test,-50,-50)
Add2DLine(Test,v0,v1)
Add2DLine(Test,v1,v2)
Add2DLine(Test,v2,v3)
Add2DLine(Test,v3,v0)
Global Ball.mesh2D = Add2DMesh(0,-100,50)
Const Stuck# = 10
Const Steps# = 360.0 / Stuck
Global Radius# = 50
oldv.vertex2D = Add2DVertex(Ball,Radius,0)
fv.vertex2D = oldv
For wink# = 1 To Stuck-1
newv.vertex2D = Add2DVertex(Ball,Cos(wink*Steps) * Radius,Sin(wink*Steps) * Radius)
Add2DLine(Ball,newv,oldv)
oldv = newv
Next
Add2DLine(Ball,fv,oldv)
Global Light1.light2D = Add2DLight(-200,200)
Global Tex2 = LoadImage3D("Tex2.jpg",4)
Global Shadow = LoadImage3D("Shadow.png",2,2)
Global Tex1 = LoadImage3D("Tex1.jpg",4)
Global Native = LoadImage3D("GMaxA.png",2,2)
CameraClsColor(Camera,100,100,100)
Repeat
Draw2DShadow(Shadow)
Draw2DLine(Native)
Draw2DVertex(Native)
Draw2DLight(Native)
light1\x = MouseX3D
light1\y = MouseY3D
DrawQuad3D(Tex1,v0\m\x+v0\x,v0\m\y+v0\y,v1\m\x+v1\x,v1\m\y+v1\y,v2\m\x+v2\x,v2\m\y+v2\y,v3\m\x+v3\x,v3\m\y+v3\y)
DrawRect3D(Tex2,0,0,0,0,800,600)
ColorN3D 255,255,255
Oval3D(Native,Ball\x,Ball\y,45,45,0)
UpdateVertex2D()
RenderWorld()
Clear3D()
Flip
Until KeyHit(1)
End
mfg ToeB