Schatten

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Blitzcoder

Newsposter

Betreff: Schatten

BeitragSa, März 25, 2006 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.

Ich habe mich mal an einer Schattenengine versucht und erstmal ohne Funktionen gecodet, damit es est mal geht:

Code: [AUSKLAPPEN]


Graphics3D 1024,768,0,2

cam=createcamera()
PositionEntity cam,0,2,-12
cam2=createcamera()
CameraViewport cam2,0,0,200,200
PositionEntity cam2,0,20,0


boden=createplane()
PositionEntity boden,0,-2.4,0
EntityColor boden,255,50,50

schatten=createcone(30)
EntityColor schatten,0,0,0
schattenobjekt=createcone(100)
ScaleEntity schattenobjekt,1.1,1.1,1.1
EntityColor schattenobjekt,200,130,0
PointEntity cam,schattenobjekt
PointEntity cam2,schattenobjekt


licht=createsphere(100)
PositionEntity licht,0,2,3
ScaleEntity licht,0.3,0.3,0.3
EntityColor licht,0,255,0

SetBuffer BackBuffer()



Repeat


If KeyDown(200) Then MoveEntity licht,0,0,0.1
If KeyDown(208) Then MoveEntity licht,0,0,-0.1
If KeyDown(205) Then MoveEntity licht,0.1,0,0
If KeyDown(203) Then MoveEntity licht,-0.1,0,0



      surfaces=countsurfaces(schatten)
      
      For a=1 To surfaces
            surf=getsurface(schatten,a)
            punkte=countvertices(surf)
            For b=0 To (punkte-1)
                  x#=(VertexX#(surf,b)-EntityX#(licht))/10
                  z#=(VertexZ#(surf,b)-EntityZ#(licht))/10
                  While VertexY(surf,b)>(-2)
                        VertexCoords surf,b,VertexX(surf,b)+x,VertexY(surf,b)-0.2,z+vertexz(surf,b)
                        If KeyDown(1) Then End
                  Wend
            Next
      Next









UpdateWorld
RenderWorld

;FPS-----------------------------------
If (MilliSecs()-fpszeit)<200 Then     ;
fps=fps+1                             ;
Else                                  ;
fpsanzeige=fps*5                      ;
fpszeit=MilliSecs()                   ;
fps=0                                 ;
EndIf                                 ;
Text 0,0,"FPS: "+fpsanzeige           ;
;FPS-----------------------------------


FreeEntity(schatten)
schatten=createcone(100)
EntityColor schatten,0,0,0
Flip
Until KeyDown(1)
End


Hat jemand eine Idee, wie man alle vertices wieder an ihre ausgangsposition bringen kann ohne das createsphere() in jeder schleife.

Und wie bekommt man das hin, dass der auch an seitenwänden da ist, der schatten.
Kann man irgendwie collisionen fur vertex points machen?
Wenn ja, wie?

Ich hoffe der Code ist einiogermaßen verständlich :lol:

MfG Blitzcoder
 

Dreamora

BeitragSa, März 25, 2006 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Beschäftige dich erst mit allgemeiner Projektion von Vertices und Triangles bevor du dich an ein Schattensystem willst ... wenn du noch nicht einmal weisst, wie du Punkte auf Flächen bestimmen kannst wird das nichts (und wenn du es mit Linepick machst: spar dir die Mühe, das wird um welten zu langsam)

PS: Ich bin mir bewusst, dass das böse klingt. Jedoch handelt es sich hierbei um ein expertenproblem, das sehr viel matheverständnis und auch wissen um 3D projektion verlangt und definitiv nichts für normale B3D programmierer ist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Blitzcoder

Newsposter

BeitragSa, März 25, 2006 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay.

Ist mir schon klar, dass es nich böse gemeint war.
schade.

Blitzcoder

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group