Vertex Lighting
Übersicht

![]() |
Suco-XBetreff: Vertex Lighting |
![]() 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 |
![]() 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 ![]() |
||
between angels and insects |
- Zuletzt bearbeitet von Jan_ am Fr, Feb 27, 2004 14:41, insgesamt einmal bearbeitet
![]() |
Suco-XBetreff: ..... |
![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
Mr.Keks |
![]() 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: .... |
![]() 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 |
![]() 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: ...... |
![]() 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 |
![]() 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


Powered by phpBB © 2001 - 2006, phpBB Group