Hi,
I started experimenting with vertex lighting with a example from the code archives. This had 1 light and i made changes for multiple lights.
Now it still works with 1 light but with multiple lights they cancel eachother out.
How can i get the right light value?
Code:
I started experimenting with vertex lighting with a example from the code archives. This had 1 light and i made changes for multiple lights.
Now it still works with 1 light but with multiple lights they cancel eachother out.
How can i get the right light value?
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Based on the code example for Stellar. By rob cummings (rob@...). ;; ;; Code archives/3D Graphics - Misc/MathLights ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; HidePointer:AppTitle "Lights" Graphics3D 640,480,16,2 camera=CreateCamera() CameraRange camera,1,5000 PositionEntity camera,0,150,0 RotateEntity camera,90,0,0 Type FDLight Field ent End Type Type FDReciever Field ent End Type Global radius=8 ; higher radius = smaller light - crazy but true here! Global TestLight = F3D_CreateLight(50,0,0) ;Global TestLight2 = F3D_CreateLight(-50,0,0) ;EntityParent TestLight2,TestLight Global TestEnt=CreateSphere(32) ScaleEntity TestEnt,20,20,40 EntityFX TestEnt,2+1 F3D_CreateReciever(TestEnt) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; While Not KeyHit(1) ;Move the lights MoveEntity TestLight,MouseXSpeed(),0,-MouseYSpeed() MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 ;Update all lights F3D_UpdateLights() UpdateWorld() RenderWorld() Text 0,0,"Move the mouse to move the light" Flip(False) Wend End ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function F3D_CreateLight(x,y,z) l.fdlight = New fdlight l\ent = CreateSphere() ;use createpivot() EntityFX l\ent,1 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 PositionEntity l\ent,x,y,z Return l\ent End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function F3D_CreateReciever(ent) r.fdreciever = New fdreciever r\ent = ent Return r\ent End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function F3D_UpdateLights() For l.fdlight = Each fdlight For r.fdreciever = Each fdreciever ;Calculate vertex colors s=GetSurface(r\ent,1) For i=1 To CountVertices(s)-1 TFormPoint VertexX(s,i),VertexY(s,i),VertexZ(s,i),r\ent,0 xd#=TFormedX()-EntityX(l\ent) yd#=TFormedY()-EntityY(l\ent) zd#=TFormedZ()-EntityZ(l\ent) dist#=Sqr(xd*xd + yd*yd + zd*zd)*radius VertexColor s,i,0,0,255-dist ;How to get the right value??? Next Next Next End Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;