Vertex2D

Kommentare anzeigen Worklog abonnieren

Worklogs Vertex2D

Neues vom Werk

Dienstag, 7. April 2009 von ToeB

Also ich habe Vertex2D nochmal neu aufgegriffen und fast komplett neu geschrieben. Jetzt beeinhaltet es folgende features :

Arrow Dem "Mesh2D" kann jetzt eine geladene Textur zugewiesen werden
Arrow Diese kann an das Mesh angepasstwerden über vier "EckKoordinaten"
Arrow Das mesh kann gedreht werden, sowohl nach winkel "RotateMesh2D" oder nach Speed "TurnMesh2D"
Arrow Scalen kann man auch schon , x und y, aber ich bin noch nicht ganz zufrieden damit... werde es nochmal überarbeiten
Arrow 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 Wink


Screenshots habe ich leider keine, werde aber noch welche hinzufügen, evtl. auch einen Download...
[EDIT]
So hier der Screenshot :
user posted image

Und für die die es mal so sehen wollen , der
Download Vertex2D

[Edit2]
Ich habe die Steuerung vergessen Embarassed :
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

Sonntag, 22. März 2009 von ToeB

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

Anfänge

Dienstag, 17. März 2009 von ToeB

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 :
user posted image

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



mfg ToeB