[B3D] Pseudolichtquelle erstellen. Aber wie?
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: [B3D] Pseudolichtquelle erstellen. Aber wie? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich möchte ein bestimmtes Mesh mit einer anderen Lichtquelle beleuchten als das des Umgebungslichtes AmbientLight und CreateLight(2). Es soll also komplett davon 'befreit' sein und nur ein Richtungslicht CreateLight(1) zu sehen sein... Wie kann ich das am besten lösen? Habe mal vor einiger Zeit zufällig dieses in der OH gesehen, jetzt finde ich es nicht mehr und eine Suche im Forum hat mich nicht weiter gebracht. ![]() Danke im Vorraus!.. |
||
![]() |
dimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmmm soweit ich mich erinnere hat inarie mal sowas gemacht musst mal suchen...
Inarie hat Folgendes geschrieben: 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 oops hab die frage glaube ich falsch beantwortet...naja egal mfg dimaster |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
habe mir mal das Beispiel angeschaut. Es ist schonmal echt nicht schlecht!.. Vielleicht hilft mir das ja schon weiter... In der Zwischenzeit habe ich auch über eine nette ICQ-Person über LightMesh erfahren... Werde mal beide Versionen genauer unter die Lupe nehmen, und mir das für mich geeignetere nutzen...
Danke für die schnelle Hilfe!.. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group