Vertex Lighting
Übersicht BlitzBasic Codearchiv
Suco-XBetreff: Vertex Lighting |
Fr, Feb 27, 2004 12:18 Antworten mit Zitat |
|
---|---|---|
Mfg Suco-X | ||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
- Zuletzt bearbeitet von Suco-X am So, Feb 29, 2004 2:09, insgesamt einmal bearbeitet
Jan_Ehemaliger Admin |
Fr, Feb 27, 2004 13:20 Antworten mit Zitat |
|
---|---|---|
Fein, aber macht das nicht BB auch, mit crete light in Live und schneller?
Aber, sweet! Weiter so! [Edit="Editieren, weil code Archiev"]Oh, das mit der Light begrenzung auf 8 kenne ich noch garnicht [/edit] |
||
between angels and insects |
- Zuletzt bearbeitet von Jan_ am Fr, Feb 27, 2004 14:41, insgesamt einmal bearbeitet
Suco-XBetreff: ..... |
Fr, Feb 27, 2004 13:40 Antworten mit Zitat |
|
---|---|---|
bye | ||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
- Zuletzt bearbeitet von Suco-X am So, Feb 29, 2004 2:10, insgesamt einmal bearbeitet
lettorTrepuS |
Fr, Feb 27, 2004 18:11 Antworten mit Zitat |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
Mr.Keks |
Fr, Feb 27, 2004 19:21 Antworten mit Zitat |
|
---|---|---|
habe mal versucht, es auf normalrichtung umzustellen =)... und es läuft verdammt gut dafür, dass ich in der schule noch kein sin+cos hatte und ich auch noch nie etwas mit normals gemacht habe =)
Code: [AUSKLAPPEN] Graphics3D 1024,768,16,2
SetBuffer BackBuffer() SeedRnd(MilliSecs()) camera = CreateCamera() PositionEntity camera,10,10,-1 CameraClsColor camera,255,255,255 TurnEntity camera,45,0,0 licht = CreateSphere() ScaleEntity licht,.5,.5,.5 PositionEntity licht,10,6,10 EntityColor licht,255,255,0 EntityFX licht,1 boden = CreateBoden(20,20) ;PositionMesh boden, 10, 0, 10 PositionEntity boden, 10, 0, 10 EntityFX boden, 17+2 For i = 0 To 50 cube = CreateCylinder(5) ScaleMesh cube,.8,Rnd(.6,1),.8 PositionMesh cube,Rnd(2,18)-10,.5,Rnd(2,18)-10 AddMesh(cube, boden) FreeEntity cube Next MoveEntity licht, -10, -1, -10 PositionMesh licht, 20, 0, 20 EntityPickMode boden, 2 Repeat surface = GetSurface(boden,1) tlx# = EntityX(licht) tly# = EntityY(licht) tlz# = EntityZ(licht) For i = 0 To CountTriangles(surface) For i2 = 0 To 2 vert1 = TriangleVertex(surface,i,i2) vertx# = VertexX(surface, vert1) verty# = VertexY(surface, vert1) vertz# = VertexZ(surface, vert1) akat# = vertx-tlx gkat# = verty-tly nkat# = vertz-tlz hyp1# = CoordinateDistance2d(vertx, verty, tlx, tly) hyp2# = CoordinateDistance2d(vertx, vertz, tlx, tlz) co# = akat#/hyp1 si# = gkat#/hyp1 nco# = nkat#/hyp2 farbe1 = 255-CoordinateDistance(co#, si#, nco#, -VertexNX(surface, vert1), -VertexNY(surface, vert1), -VertexNX(surface, vert1))*180 VertexColor(surface,vert1, farbe1, farbe1,farbe1) Next Next MoveEntity licht, (Cos(vv#)*.16+Cos(bb#)*.16)/2, Sin(vv#)*.12, (Cos(bb#)*.16+Cos(vv#)*.16)/2 vv# = vv# + 4 bb# = bb# + 2 RotateMesh boden, 0, .1, 0 RenderWorld Color 0,0,0 Text 0,0,"Gerenderte Dreiecke: "+TrisRendered() Flip Until KeyHit(1) ClearWorld() End Function CoordinateDistance#(x1#,y1#,z1#,x2#,y2#,z2#) Local abstand# abstand = Sqr(((x1-x2)^2)+((y1-y2)^2)+((z1-z2)^2)) Return abstand End Function Function CoordinateDistance2d#(x1#,y1#,x2#,y2#) Local abstand# abstand = Sqr(((x1-x2)^2)+((y1-y2)^2)) Return abstand End Function Function CreateBoden(xstep = 20, zStep = 20) Local final_mesh = CreateMesh() Local final_surface = CreateSurface(final_mesh) Local vertex[5] For x = 0 To xstep-1 For z = 0 To zStep-1 vertex[0] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2,0,0) vertex[1] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2-1,0,1) vertex[2] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2-1,1,1) vertex[3] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2,0,0) vertex[4] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2,1,0) vertex[5] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2-1,1,1) AddTriangle(final_surface, vertex[0], vertex[1], vertex[2]) AddTriangle(final_surface, vertex[3], vertex[4], vertex[5]) UpdateNormals(final_mesh) Next Next Return final_mesh End Function edit: scheint vielleicht doch noch ein bug drin zu sein edit2: hrm, habe den fehler kaum mehr sichtbar gemacht, doch ich habe das gefühl, er ist immernoch da edit3: mensch, bei meinen fehlerkorrekturversuchen stoße ich wirklich auf die interessantesten effekte ===) |
||
MrKeks.net |
Suco-XBetreff: .... |
Fr, Feb 27, 2004 19:55 Antworten mit Zitat |
|
---|---|---|
bye | ||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
- Zuletzt bearbeitet von Suco-X am So, Feb 29, 2004 2:10, insgesamt einmal bearbeitet
Mr.Keks |
Fr, Feb 27, 2004 20:02 Antworten mit Zitat |
|
---|---|---|
klar ist das lahm... winkelähnlichkeit ist imho auch etwas komplexer zu berechnen als abstand
und, nunja, es ist ja auch nur eine spielerei =) |
||
MrKeks.net |
Suco-XBetreff: ...... |
Fr, Feb 27, 2004 20:15 Antworten mit Zitat |
|
---|---|---|
bye | ||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
- Zuletzt bearbeitet von Suco-X am So, Feb 29, 2004 2:10, insgesamt einmal bearbeitet
Mr.Keks |
Sa, Feb 28, 2004 8:40 Antworten mit Zitat |
|
---|---|---|
hmm, ich rieche ein missverständnis. =)
ansonsten verstehe ich nicht, wie du zu dieser antwort kamst ^^ du sagst, meins sei lahm. ich bestätige und weise darauf hin, dass winkelberechnungen immer etwas lahmer sind als bloße abstände. du bist plötzlich sauer und erzählst etwas davon, dass du erst seit gestern programmieren würdest und ich dir weiterhelfen solle, statt zu sagen, dass es lahm ist. außerdem sagst du noch für mich gerade zusammenhangloses von trashen und modrechten. fehler scheint größtenteils behoben... außerdem habe ich jetzt eine kombination aus normalrichtung und abstand zur farbermittlung. der fehler lag übrigens teilweise daran, dass im alten code scheinbar nicht die relativen werte von vertexx,y und z nicht beachtet wurden... Code: [AUSKLAPPEN] Graphics3D 1024,768,16,2
SetBuffer BackBuffer() SeedRnd(MilliSecs()) camera = CreateCamera() PositionEntity camera,10,10,-1 CameraClsColor camera,255,255,255 TurnEntity camera,45,0,0 licht = CreateSphere(4) ScaleEntity licht,.5,.5,.5 PositionEntity licht,10,6,10 EntityColor licht,255,255,0 EntityFX licht,1 boden = CreateBoden(20,20) PositionEntity boden, 10, 0, 10 EntityFX boden, 17+2 For i = 0 To 50 cube = CreateCylinder(5) ScaleMesh cube,.8,Rnd(.6,1),.8 PositionMesh cube,Rnd(2,18)-10,.5,Rnd(2,18)-10 AddMesh(cube, boden) FreeEntity cube Next MoveEntity licht, 0, -5, 0 EntityPickMode boden, 2 Repeat surface = GetSurface(boden,1) tlx# = EntityX(licht)-EntityX(boden) tly# = EntityY(licht)-EntityY(boden) tlz# = EntityZ(licht)-EntityZ(boden) For i = 0 To CountTriangles(surface) For i2 = 0 To 2 vert1 = TriangleVertex(surface,i,i2) vertx# = VertexX(surface, vert1) verty# = VertexY(surface, vert1) vertz# = VertexZ(surface, vert1) akat# = vertx-tlx gkat# = verty-tly nkat# = vertz-tlz dist# = CoordinateDistance(vertx, verty, vertz, tlx, tly, tlz) co# = akat#/dist si# = gkat#/dist nco# = nkat#/dist winkc = 255-CoordinateDistance(co#, si#, nco#, -VertexNX(surface, vert1), -VertexNY(surface, vert1), -VertexNX(surface, vert1))*140 distc = 255-dist#*40 farbe1 = (winkc+distc) Sar 1 VertexColor(surface,vert1, farbe1, farbe1,farbe1) Next Next MoveEntity licht, (Cos(vv#)*.16+Cos(bb#)*.16)/2, Sin(vv#)*.22, (Cos(bb#+vv#)*.16+Cos(vv#)*.16)/2 vv# = vv# + 4 bb# = bb# + 2 RotateMesh boden, 0, .1, 0 RenderWorld Color 0,0,0 Text 0,0,"Gerenderte Dreiecke: "+TrisRendered() Flip Until KeyHit(1) ClearWorld() End Function CoordinateDistance#(x1#,y1#,z1#,x2#,y2#,z2#) Local abstand# abstand = Sqr(((x1-x2)^2)+((y1-y2)^2)+((z1-z2)^2)) Return abstand End Function Function CoordinateDistance2d#(x1#,y1#,x2#,y2#) Local abstand# abstand = Sqr(((x1-x2)^2)+((y1-y2)^2)) Return abstand End Function Function CreateBoden(xstep = 20, zStep = 20) Local final_mesh = CreateMesh() Local final_surface = CreateSurface(final_mesh) Local vertex[5] For x = 0 To xstep-1 For z = 0 To zStep-1 vertex[0] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2,0,0) vertex[1] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2-1,0,1) vertex[2] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2-1,1,1) vertex[3] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2,0,0) vertex[4] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2,1,0) vertex[5] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2-1,1,1) AddTriangle(final_surface, vertex[0], vertex[1], vertex[2]) AddTriangle(final_surface, vertex[3], vertex[4], vertex[5]) Next Next For i = 0 To CountTriangles (final_mesh) For i2 = 0 To 2 vert = TriangleVertex(final_surface,i,i2) nx#=VertexNX(final_surface,vert) ny#=-VertexNY(final_surface,vert) nz#=VertexNZ(final_surface,vert) VertexNormal final_surface,vert,0,1,0 Next Next Return final_mesh End Function EDIT vom 06.03.04: ich brauchte eben eine codepassage und während ich diese herausnahm und modifizierte, fielen mir zwei entscheidende fehler auf. ich habe sie mal beseitigt und bin jetzt richtig zufrieden ^^. Code: [AUSKLAPPEN] Graphics3D 1024,768,16,2
SetBuffer BackBuffer() SeedRnd(MilliSecs()) camera = CreateCamera() PositionEntity camera,10,10,-1 CameraClsColor camera,255,255,255 TurnEntity camera,45,0,0 licht = CreateSphere(4) ScaleEntity licht,.5,.5,.5 PositionEntity licht,10,6,10 EntityColor licht,255,255,0 EntityFX licht,1 boden = CreateBoden(20,20) PositionEntity boden, 10, 0, 10 EntityFX boden, 1+2 For i = 0 To 50 cube = CreateCylinder(5) ScaleMesh cube,.8,Rnd(.6,1),.8 PositionMesh cube,Rnd(2,18)-10,.5,Rnd(2,18)-10 AddMesh(cube, boden) FreeEntity cube Next MoveEntity licht, 0, -5, 0 EntityPickMode boden, 2 Repeat surface = GetSurface(boden,1) tlx# = EntityX(licht)-EntityX(boden) tly# = EntityY(licht)-EntityY(boden) tlz# = EntityZ(licht)-EntityZ(boden) For i = 0 To CountTriangles(surface) For i2 = 0 To 2 vert1 = TriangleVertex(surface,i,i2) vertx# = VertexX(surface, vert1) verty# = VertexY(surface, vert1) vertz# = VertexZ(surface, vert1) akat# = vertx-tlx gkat# = verty-tly nkat# = vertz-tlz dist# = CoordinateDistance(vertx, verty, vertz, tlx, tly, tlz) co# = akat#/dist si# = gkat#/dist nco# = nkat#/dist winkc = 255-CoordinateDistance(co#, si#, nco#, -VertexNX(surface, vert1), -VertexNY(surface, vert1), -VertexNZ(surface, vert1))*140 distc = 255-dist#*40 farbe1 = (winkc+distc) Sar 1 VertexColor(surface,vert1, farbe1, farbe1,farbe1) Next Next MoveEntity licht, (Cos(vv#)*.16+Cos(bb#)*.16)/2, Sin(vv#)*.22, (Cos(bb#+vv#)*.16+Cos(vv#)*.16)/2 vv# = vv# + 4 bb# = bb# + 2 RotateMesh boden, 0, .1, 0 RenderWorld Color 0,0,0 Text 0,0,"Gerenderte Dreiecke: "+TrisRendered() Flip Until KeyHit(1) ClearWorld() End Function CoordinateDistance#(x1#,y1#,z1#,x2#,y2#,z2#) Local abstand# abstand = Sqr(((x1-x2)^2)+((y1-y2)^2)+((z1-z2)^2)) Return abstand End Function Function CoordinateDistance2d#(x1#,y1#,x2#,y2#) Local abstand# abstand = Sqr(((x1-x2)^2)+((y1-y2)^2)) Return abstand End Function Function CreateBoden(xstep = 20, zStep = 20) Local final_mesh = CreateMesh() Local final_surface = CreateSurface(final_mesh) Local vertex[5] For x = 0 To xstep-1 For z = 0 To zStep-1 vertex[0] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2,0,0) vertex[1] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2-1,0,1) vertex[2] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2-1,1,1) vertex[3] = AddVertex(final_surface,x-xstep/2,0,z-zStep/2,0,0) vertex[4] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2,1,0) vertex[5] = AddVertex(final_surface,x-xstep/2+1,0,z-zStep/2-1,1,1) AddTriangle(final_surface, vertex[2], vertex[1], vertex[0]) AddTriangle(final_surface, vertex[3], vertex[4], vertex[5]) Next Next For i = 0 To CountTriangles (final_mesh) For i2 = 0 To 2 vert = TriangleVertex(final_surface,i,i2) nx#=VertexNX(final_surface,vert) ny#=-VertexNY(final_surface,vert) nz#=VertexNZ(final_surface,vert) VertexNormal final_surface,vert,0,1,0 Next Next Return final_mesh End Function |
||
MrKeks.net |
Übersicht BlitzBasic Codearchiv
Powered by phpBB © 2001 - 2006, phpBB Group