[B3D] Pseudolichtquelle erstellen. Aber wie?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

hectic

Sieger des IS Talentwettbewerb 2006

Betreff: [B3D] Pseudolichtquelle erstellen. Aber wie?

BeitragFr, Feb 24, 2006 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Sad

Danke im Vorraus!..

dimaster

BeitragFr, Feb 24, 2006 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 24, 2006 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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!..

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group