Spiegel & Animationen, Wie geht das??

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen

Xeres

Moderator

BeitragMo, Feb 21, 2011 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem, Kevin, bist du. Du bist nicht willens unsere Beiträge zu lesen, nur so kann ich mir erklären, dass du glaubst, wir könnten aus "es geht nicht" irgendeine sinnvolle Information entnehmen.
Du benutzt Nicdels Code - hast du seine Hinweise jetzt gelesen, verstanden und beachtet? Hast du lauffähigen Code gepostet, anhand dem man dir zeigen kann, wo der Fehler liegt?
Du gibst dir keine Mühe - warum sollten wir?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Kevin

BeitragMo, Feb 21, 2011 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, zum allerletzten mal: Ich habe zuerst ein Viereck (mesh) auf dei position des spiegels gelegt, dann die Functions aus dem Beispiel in meinen Code gepackt. Ich kann das Programm normal starten bloß auf dem Viereck ist die Reflection nicht zu sehen!


Code: [AUSKLAPPEN]
Type Reflection

   Field cam1
   
   Field tex
   
   Field entity, re
   
   Field update,time, ur

End Type

Function CreateReflection(SpiegelRefect, cam1, tex_size,update=10)

   rf.Reflection = New Reflection
   
    rf\entity = SpiegelRefect
   
   rf\re = SpiegelRefect
   
   ;rf\cam1 = CreateCamera()
   
   rf\tex = CreateTexture(tex_size,tex_size,1 + 128 + 256)
   
   rf\update = update
   
   rf\ur = 1
   
   EntityTexture entity,rf\tex

End Function

Function UpdateReflections()
End Function

Function RemoveReflection(SpiegelRefect, new_tex = -1)

   For rf.Reflection = Each Reflection
   
      If rf\re = entity
      
         FreeEntity cam1
         
         FreeTexture rf\tex
         
         If new_tex > 0
         
            EntityTexture entity,new_tex
            
         ElseIf new_tex = 0
         
            white_tex = CreateTexture(1,1)

            WritePixel 0,0,$FFFFFF,TextureBuffer(white_tex)
            
            EntityTexture entity,white_tex
            
            FreeTexture white_tex
         
         EndIf
         
         Delete rf
         
         Exit
         
      EndIf
   
   Next

End Function


Function ReflectionState(SpiegelRefect,update)

   For rf.Reflection = Each Reflection
   
      If rf\re = entity
      
         rf\ur = update
         
         Exit
      
      EndIf
   
   Next

End Function

;Function UpdateReflections()
;End Function

Xeres

Moderator

BeitragMo, Feb 21, 2011 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Kevin hat Folgendes geschrieben:
Ich habe zuerst ein Viereck (mesh) auf dei position des spiegels gelegt, dann die Functions aus dem Beispiel in meinen Code gepackt.
Und? Wo ist der Code dazu?
Warum ist "Function UpdateReflections()" Auskommentiert/Leer ? Hast du Nicdels Beitrag dazu gelesen?
Du postest nicht den Code - Niemand kann dir helfen. Punktum.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Kevin

BeitragSo, Feb 27, 2011 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Type Reflection

   Field cam1
   
   Field tex
   
   Field entity, re
   
   Field update,time, ur

End Type

Function CreateReflection(SpiegelRefect, cam1, tex_size,update=10)

   rf.Reflection = New Reflection
   
    rf\entity = SpiegelRefect
   
   rf\re = SpiegelRefect
   
   rf\cam1 = CreateCamera()
   
   rf\tex = CreateTexture(tex_size,tex_size,1 + 128 + 256)
   
   rf\update = update
   
   rf\ur = 1
   
   EntityTexture entity,rf\tex

End Function

Function UpdateReflections()

   For rf.Reflection = Each Reflection
   
      If MilliSecs()-rf\time > rf\update And rf\ur = 1 And EntityInView(rf\re,rf\entity)

         tex_sz = TextureWidth(rf\tex)
         
         ShowEntity rf\cam1
         HideEntity rf\entity
         PositionEntity rf\cam1, EntityX#(rf\entity), EntityY#(rf\entity), EntityZ#(rf\entity)
         CameraClsMode rf\cam1, False, True
         CameraViewport rf\cam1, 0, 0, tex_sz, tex_sz
         
         SetCubeFace rf\tex, 0
         RotateEntity rf\cam1, 0, 90, 0
         RenderWorld
         CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         SetCubeFace rf\tex, 1
         RotateEntity rf\cam, 0, 0, 0
         RenderWorld
         CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         SetCubeFace rf\tex, 2
         RotateEntity rf\cam1, 0, - 90, 0
         RenderWorld
         CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         SetCubeFace rf\tex, 3
         RotateEntity rf\cam1, 0, 180, 0
         RenderWorld
         CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         SetCubeFace rf\tex, 4
         RotateEntity rf\cam1, - 90, 0, 0
         RenderWorld
         CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         SetCubeFace rf\tex, 5
         RotateEntity rf\cam1, 90, 0, 0
         RenderWorld
         CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         ShowEntity rf\entity
         HideEntity rf\cam1
      
         rf\time = MilliSecs()
      
      EndIf
         
   Next   
   
End Function
Function RemoveReflection(SpiegelRefect, new_tex = -1)

   For rf.Reflection = Each Reflection
   
      If rf\re = entity
      
         FreeEntity cam1
         
         FreeTexture rf\tex
         
         If new_tex > 0
         
            EntityTexture entity,new_tex
            
         ElseIf new_tex = 0
         
            white_tex = CreateTexture(1,1)

            WritePixel 0,0,$FFFFFF,TextureBuffer(white_tex)
            
            EntityTexture entity,white_tex
            
            FreeTexture white_tex
         
         EndIf
         
         Delete rf
         
         Exit
         
      EndIf
   
   Next

End Function


Function ReflectionState(SpiegelRefect,update)

   For rf.Reflection = Each Reflection
   
      If rf\re = entity
      
         rf\ur = update
         
         Exit
      
      EndIf
   
   Next

End Function

Fehlermeldung : Type "field" not found

Holzchopf

Meisterpacker

BeitragSo, Feb 27, 2011 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Tipp: Wirf den Debugger an, kompiliere und schau dir die Zeile, die er markiert, genau an - und du wirst sehen, dass du dich ganz einfach verschrieben hast.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

Kevin

BeitragSo, Feb 27, 2011 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Debugger geht garnicht erst auf! (und SpiegelRefect soll auch so heißen)

Holzchopf

Meisterpacker

BeitragSo, Feb 27, 2011 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann schalte den Debugger ein. In der Standard-IDE unter Programm - dann das Häkchen bei "Debug Enabled?" setzen.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

PhillipB

BeitragSo, Feb 27, 2011 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke mal das kevin in an hat dieses Problem hatte ich auch da ging er auch ned an trotz hacken!

BladeRunner

Moderator

BeitragSo, Feb 27, 2011 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Fehler ist "Type field not found", nicht 'Type "field" not found' Wink
Sprich: Du versuchst auf ein nonexistentes Feld zuzugreifen. In deinem Fall cam, statt cam1 in updatereflections.
EDIT: Ja, da springt der debugger bedauerlicherweise nicht in die passende Zeile. Ärgerliches Mißverhalten seitens der IDE.
EDIT 2: ich bin zu sehr bmax gewohnt... Sad Er springt in der Tat in die Zeile, er markiert sie nur nicht groß. Also alles korrekt.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Noobody

BeitragSo, Feb 27, 2011 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur als Hinweis: Diese Meldung hat nichts mit dem Debugger zu tun. Der Debugger springt an, wenn während dem Ausführen des Programmes ein Fehler entsteht (z.B. man greift auf eine Typevariable zu, die Null ist).

Dieser Fehler hier kommt aber schon während dem Kompilieren, sprich, in dem Schritt, in dem der Code in eine Exe umgewandelt wird. Der wird angezeigt, auch wenn das Häkchen bei "Debug enabled" nicht gesetzt ist, da sie ja nichts mit dem Debugger zu tun hat. Daher poppt bei dem Fehler z.B. auch das Debugfenster nicht auf.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Kevin

BeitragSo, Feb 27, 2011 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, bei mir funktioniert das game, aber das Objekt "O405" ist weg und auf dem Objekt wo die spiegelung sein soll, ist keine spiegelung
Code: [AUSKLAPPEN]

Type Reflection

   Field camera
   
   Field tex
   
   Field entity, re
   
   Field update,time, ur

End Type





PositionEntity cam1, 0, 0, 0


light = CreateLight()

RotateEntity light, 90, 0, 0


prim1 = LoadMesh("O405\Mirror.3ds")

PositionEntity prim1, 0, 10, 0

ScaleEntity prim1,3,3,3

EntityFX prim1,1

CreateReflection(prim1, cam, 128, 10)

reflect_update = 1

factor = 7



test_obj1 = CreateCylinder()

FitMesh test_obj1, - 10, 0, - 10, 5,9,7

EntityColor test_obj1, 255,200,0

test_obj2 = CreateCone()

FitMesh test_obj2, 10, 0, 10, 6, 7, 8

EntityColor test_obj2,100,150,255

test_piv = CreatePivot()

PositionEntity test_piv, 0, 15, 0

test_obj3 = CreateSphere(16,test_piv)

ScaleEntity test_obj3,1,0.2,1

PositionEntity test_obj3, 0, 0, 10


SetBuffer BackBuffer()

timer = CreateTimer(60)

Color 0,0,0


While Not KeyDown(1)

   
   mxs# = mxs# + (MouseXSpeed() / 5.0)
   
   mys# = mys# + (MouseYSpeed() / 5.0)

   RotateEntity cam1, mys#, - mxs#, 0
   
   MoveMouse GraphicsWidth()/2,GraphicsHeight()/2


   If KeyDown(17) MoveEntity cam1, 0, 0, 0.6
   
   If KeyDown(31) MoveEntity cam1, 0, 0, -0.6
   
   If KeyDown(32) MoveEntity cam1, 0.6, 0, 0
   
   If KeyDown(30) MoveEntity cam1, -0.6, 0, 0
   
   If KeyHit(200)
   
      If factor < 10 factor = factor + 1
      
      RemoveReflection(prim1)
      
      CreateReflection(prim1, cam1, 2^factor, 10)
   
   EndIf
   
   If KeyHit(208)
   
      If factor > 0 factor = factor - 1
      
      RemoveReflection(prim1)
      
      CreateReflection(prim1, cam1, 2^factor, 10)
   
   EndIf
   
   If KeyHit(57) reflect_update = 1-reflect_update: ReflectionState(prim1, reflect_update)
   
   
   TurnEntity prim1,0,1,0
   
   TurnEntity test_piv, 0, 2, 0
   
   
   UpdateReflections()
   
   RenderWorld
   
   

   
   tsz = 2^factor
   

      
   Flip 0

   
   If Not KeyDown(29) WaitTimer(timer)
   

Wend


End


Function CreateReflection(entity, cam1, tex_size,update=10)

   rf.Reflection = New Reflection
   
   rf\entity = cam
   
   rf\re = entity
   
   rf\camera = CreateCamera()
   
   rf\tex = CreateTexture(tex_size,tex_size,1 + 128 + 256)
   
   rf\update = update
   
   rf\ur = 1
   
   EntityTexture entity,rf\tex

End Function


Function RemoveReflection(entity, new_tex = -1)

   For rf.Reflection = Each Reflection
   
      If rf\re = entity
      
         FreeEntity rf\camera
         
         FreeTexture rf\tex
         
         If new_tex > 0
         
            EntityTexture entity,new_tex
            
         ElseIf new_tex = 0
         
            white_tex = CreateTexture(1,1)

            WritePixel 0,0,$FFFFFF,TextureBuffer(white_tex)
            
            EntityTexture entity,white_tex
            
            FreeTexture white_tex
         
         EndIf
         
         Delete rf
         
         Exit
         
      EndIf
   
   Next

End Function



Function ReflectionState(entity,update)

   For rf.Reflection = Each Reflection
   
      If rf\re = entity
      
         rf\ur = update
         
         Exit
      
      EndIf
   
   Next

End Function


Function UpdateReflections()

   For rf.Reflection = Each Reflection
   
      ;If MilliSecs()-rf\time > rf\update And rf\ur = 1 And EntityInView(rf\re,rf\entity)

         ;tex_sz = TextureWidth(rf\tex)
         
         ;ShowEntity rf\camera
         ;HideEntity rf\entity
         ;PositionEntity rf\camera, EntityX#(rf\entity), EntityY#(rf\entity), EntityZ#(rf\entity)
         ;CameraClsMode rf\camera, False, True
         ;CameraViewport rf\camera, 0, 0, tex_sz, tex_sz
         
         ;SetCubeFace rf\tex, 0
         ;RotateEntity rf\camera, 0, 90, 0
         ;RenderWorld
         ;CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         ;SetCubeFace rf\tex, 1
         ;RotateEntity rf\camera, 0, 0, 0
         ;RenderWorld
         ;CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         ;SetCubeFace rf\tex, 2
         ;RotateEntity rf\camera, 0, - 90, 0
         ;RenderWorld
         ;CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         ;SetCubeFace rf\tex, 3
         ;RotateEntity rf\camera, 0, 180, 0
         ;RenderWorld
         ;CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         ;SetCubeFace rf\tex, 4
         ;RotateEntity rf\camera, - 90, 0, 0
         ;RenderWorld
         ;CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         ;SetCubeFace rf\tex, 5
         ;RotateEntity rf\camera, 90, 0, 0
         ;RenderWorld
         ;CopyRect 0, 0, tex_sz, tex_sz, 0, 0, BackBuffer(), TextureBuffer(rf\tex)
         
         ;ShowEntity rf\entity
         ;HideEntity rf\camera
      
         ;rf\time = MilliSecs()
      
      ;EndIf
         
   Next   
   
End Function

BladeRunner

Moderator

BeitragSo, Feb 27, 2011 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Nuja, der Code der die Reflektionen updaten soll ist ja auch augenscheinlich komplett auskommentiert. Wundert mich also nicht wenn da nix zu sehen ist. Testen kann ich es mangels der Mediadateien nicht.
Mich beschleicht so ein wenig der Eindruck dass Du nicht wirklich weisst was Du da tust. Wie wäre es wenn Du erstmal die Grundlagen des Programmierens lernst bevor Du dich an komplexe Probleme wagst?
Ich denke nämlich wir vergeuden hier nur die Zeit mehrerer Leute.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Kevin

BeitragSo, Feb 27, 2011 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber wenn ich es wieder "aktiviere" bekomme ich eine Fehlermeldung vom debugger
mit "Entity does not exist"

BladeRunner

Moderator

BeitragSo, Feb 27, 2011 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann schau nach welche Entity nicht existiert (der debugger wird dir dabei helfen) und dann überlege warum sie nicht existiert (indem Du deinen Code im Kopf durchgehst. Du kannst auch stop-marken setzen und den Code zeilenweise durcharbeiten).
Dann behebst Du den Fehler. Das ganze nennt sich debugging, und du sollstest lernen das selbstständig tun zu können, wenn Du mehr als nur 3-Zeiler programmieren willst. Zudem ist es deine Aufgabe, nicht unsere, denn Du willst ja ein fehlerfreies Programm.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Holzchopf

Meisterpacker

BeitragSo, Feb 27, 2011 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist dir denn bewusst,
  • was diese Meldung bedeutet
  • Wie dieser Fehler verursacht werden kann
  • Wie er zu beheben ist
Question
Solche Dinge musst du wissen, sonst wirst du nie alleine ein Spiel programmieren können. Wenn du nicht weisst, was diesen Fehler verursacht, frag uns doch danach. Denn das wäre einiges spezifischer, was für uns (inkl. dich) den Vorteil hätte, dass eine einfache, kurze Antwort kommen könnte, die du dir merken kannst. Wenn wir einfach so, ohne zu wissen, wie du dein Problem verursacht hast, deinen Code korrigieren, wirst du den Grund (wieso es vorher nicht lief und wieso es nun plötzlich geht) nie erfahren.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group