Blutiger 3d anfänger sucht Hilfe!

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Blutiger 3d anfänger sucht Hilfe!

Beitrag von benpicco »

Ich weiß nicht, aber irgendwie will dieses programm, das ich geschrieben hab nicht funktionieren!
Es ist mein erstes in 3d, daher hab ich auch ein Beispiel als Grundlage genommen, naja, aber irgendwie geht nichts so, wie es soll:

Ich habe den ScreenRequester3d benutzt:

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - Common 3D functions
;
;    (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;
Global ScreenHeight.w
Global ScreenWidth.w
#WINDOW_Screen3DRequester = 0

#GADGET_FullScreen        = 1
#GADGET_Windowed          = 2
#GADGET_ScreenModesLabel  = 3
#GADGET_WindowedModes     = 4
#GADGET_Launch            = 5
#GADGET_Cancel            = 6
#GADGET_Logo              = 7
#GADGET_Frame             = 8
#GADGET_ScreenModes       = 9

Global Screen3DRequester_FullScreen, Screen3DRequester_ShowStats

Procedure Screen3DRequester()

  OpenPreferences("Demos3D.prefs")
    FullScreen          = ReadPreferenceLong  ("FullScreen"        , 1)
    FullScreenMode$     = ReadPreferenceString("FullScreenMode"    , "640 x 480")
    WindowedScreenMode$ = ReadPreferenceString("WindowedScreenMode", "512 x 384")


    If OpenWindow(#WINDOW_Screen3DRequester, 0, 0, 396, 205, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible, "World Conquest - 3d")
    
    If CreateGadgetList(WindowID())
      
      Top = 6
      
      ImageGadget  (#GADGET_Logo, 6, Top, 0, 0, LoadImage(0,"Data\PureBasicLogo.bmp"), #PB_Image_Border) : Top+76
      
      Frame3DGadget(#GADGET_Frame, 6, Top, 384, 80, "", 0) : Top+20
      
      OptionGadget(#GADGET_FullScreen, 70, Top, 100, 20, "Fullscreen") : Top+25
      OptionGadget(#GADGET_Windowed  , 70, Top, 100, 20, "Windowed")   : Top-25
     
      ComboBoxGadget (#GADGET_ScreenModes  , 190, Top, 150, 200) : Top+25
      ComboBoxGadget (#GADGET_WindowedModes, 190, Top, 150, 200) : Top+45
     
      ButtonGadget (#GADGET_Launch,   6, Top, 180, 25, "Launch", #PB_Button_Default)
      ButtonGadget (#GADGET_Cancel, 200, Top, 190, 25, "Cancel")
      
      If ExamineScreenModes()
        
        While NextScreenMode()
          
          Width  = ScreenModeWidth()
          Height = ScreenModeHeight()

          If Width <> PreviousWidth Or Height <> PreviousHeight
            If Depth <> 8
              AddGadgetItem(#GADGET_ScreenModes, -1, Str(Width)+" x "+Str(Height))
            EndIf
          EndIf
          
          PreviousWidth  = Width
          PreviousHeight = Height
        Wend        
        
      EndIf
      
      DesktopWidth  = 1024 ; GetSystemMetrics_(#SM_CXSCREEN)
      DesktopHeight = 768  ; GetSystemMetrics_(#SM_CYSCREEN)
      NbScreenModes = 7
      
      Restore WindowedScreenDimensions

      Repeat      
        Read CurrentWidth
        Read CurrentHeight
        
        If CurrentWidth < DesktopWidth And CurrentHeight < DesktopHeight
          AddGadgetItem(#GADGET_WindowedModes, -1, Str(CurrentWidth)+ " x "+Str(CurrentHeight))
          NbScreenModes - 1
        Else
          NbScreenModes = 0
        EndIf
        
      Until NbScreenModes = 0
      
      SetGadgetState(#GADGET_FullScreen, FullScreen)
      SetGadgetState(#GADGET_Windowed  , 1-FullScreen)

      SetGadgetText (#GADGET_ScreenModes  , FullScreenMode$)
      SetGadgetText (#GADGET_WindowedModes, WindowedScreenMode$)
      
      DisableGadget (#GADGET_ScreenModes  , 1-FullScreen)
      DisableGadget (#GADGET_WindowedModes, FullScreen)
      
      HideWindow(#WINDOW_Screen3DRequester, 0)
      
      Repeat
        
        Event = WaitWindowEvent()
        
        Select Event
          
        Case #PB_Event_Gadget
          
          Select EventGadgetID()
            
          Case #GADGET_Launch
            Quit = 2
            
          Case #GADGET_Cancel
            Quit = 1
            
          Case #GADGET_FullScreen
            DisableGadget(#GADGET_ScreenModes  , 0)
            DisableGadget(#GADGET_WindowedModes, 1)
          
          Case #GADGET_Windowed
            DisableGadget(#GADGET_ScreenModes  , 1)
            DisableGadget(#GADGET_WindowedModes, 0)
                   
          EndSelect
          
        Case #PB_Event_CloseWindow
          Quit = 1
          
        EndSelect
        
      Until Quit > 0
      
      FullScreen          = GetGadgetState(#GADGET_FullScreen)
      FullScreenMode$     = GetGadgetText (#GADGET_ScreenModes)
      WindowedScreenMode$ = GetGadgetText (#GADGET_WindowedModes)
      
      CloseWindow(#WINDOW_Screen3DRequester)
      
    EndIf
  EndIf
  
  If Quit = 2 ; Launch button has been pressed
  
    CreatePreferences("Demos3D.prefs")
      WritePreferenceLong  ("FullScreen"        , FullScreen)          
      WritePreferenceString("FullScreenMode"    , FullScreenMode$)     
      WritePreferenceString("WindowedScreenMode", WindowedScreenMode$) 

    If FullScreen
      ScreenMode$ = FullScreenMode$
    Else
      ScreenMode$ = WindowedScreenMode$
    EndIf
    
    ScreenWidth  = Val(StringField(ScreenMode$, 1, " "))
    ScreenHeight = Val(Right(ScreenMode$, Len(ScreenMode$)-FindString(ScreenMode$, "x", 1)-1))
    
    Screen3DRequester_FullScreen = FullScreen ; Global variable, for the Screen3DEvents
    
    If FullScreen
      Result = OpenScreen(ScreenWidth, ScreenHeight, 32, "3D Demos")
    Else
      If OpenWindow(0, 0, 0, ScreenWidth, ScreenHeight+MenuHeight(), #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "PureBasic - 3D Demos")
      
        CreateMenu(0, WindowID())
          MenuTitle("Project")
          MenuItem(0, "Quit")
    
          MenuTitle("About")
          MenuItem(1, "About...")
              
        Result = OpenWindowedScreen(WindowID(), 0, 0, ScreenWidth, ScreenHeight, 0, 0, 0)
      EndIf
    EndIf
  EndIf
     
  ProcedureReturn Result
EndProcedure


Procedure Screen3DEvents()

  If Screen3DRequester_FullScreen = 0 ; Handle all the events relatives to the window..
  
    Repeat
      Event = WindowEvent()
      
      Select Event
      
        Case #PB_Event_Menu
          Select EventMenuID()
          
            Case 0
              Quit = 1
          
            Case 2
              MessageRequester("Info", "Windowed 3D in PureBasic !", 0)
              
          EndSelect
             
        Case #PB_Event_CloseWindow
          Quit = 1
        
      EndSelect
      
      If Quit = 1 : End : EndIf  ; Quit the app immediately
    Until Event = 0
    
  EndIf
  
  If ExamineKeyboard()
    If KeyboardReleased(#PB_Key_F1)
      Screen3DRequester_ShowStats = 1-Screen3DRequester_ShowStats ; Switch the ShowStats on/off
    EndIf
  EndIf
          
EndProcedure


Procedure Screen3DStats()
  If Screen3DRequester_ShowStats
    If StartDrawing(ScreenOutput())
      FrontColor(255, 255, 255)
      DrawingMode(1)
      Locate(0, 0)  : DrawText(StrF(Engine3DFrameRate(0),1)+" FPS")
      Locate(0, 20) : DrawText(Str(CountRenderedTriangles())+" Triangles")
      StopDrawing()
    EndIf
  EndIf
EndProcedure

        


DataSection
  WindowedScreenDimensions:
    Data.l  320, 240
    Data.l  512, 384      
    Data.l  640, 480
    Data.l  800, 600      
    Data.l 1024, 768
    Data.l 1280, 1024
    Data.l 1600, 1200
EndDataSection;
; ------------------------------------------------------------
;
;   PureBasic - Common 3D functions
;
;    (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;
Global ScreenHeight.w
Global ScreenWidth.w
#WINDOW_Screen3DRequester = 0

#GADGET_FullScreen        = 1
#GADGET_Windowed          = 2
#GADGET_ScreenModesLabel  = 3
#GADGET_WindowedModes     = 4
#GADGET_Launch            = 5
#GADGET_Cancel            = 6
#GADGET_Logo              = 7
#GADGET_Frame             = 8
#GADGET_ScreenModes       = 9

Global Screen3DRequester_FullScreen, Screen3DRequester_ShowStats

Procedure Screen3DRequester()

  OpenPreferences("Demos3D.prefs")
    FullScreen          = ReadPreferenceLong  ("FullScreen"        , 1)
    FullScreenMode$     = ReadPreferenceString("FullScreenMode"    , "640 x 480")
    WindowedScreenMode$ = ReadPreferenceString("WindowedScreenMode", "512 x 384")


    If OpenWindow(#WINDOW_Screen3DRequester, 0, 0, 396, 205, #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible, "World Conquest - 3d")
    
    If CreateGadgetList(WindowID())
      
      Top = 6
      
      ImageGadget  (#GADGET_Logo, 6, Top, 0, 0, LoadImage(0,"Data\PureBasicLogo.bmp"), #PB_Image_Border) : Top+76
      
      Frame3DGadget(#GADGET_Frame, 6, Top, 384, 80, "", 0) : Top+20
      
      OptionGadget(#GADGET_FullScreen, 70, Top, 100, 20, "Fullscreen") : Top+25
      OptionGadget(#GADGET_Windowed  , 70, Top, 100, 20, "Windowed")   : Top-25
     
      ComboBoxGadget (#GADGET_ScreenModes  , 190, Top, 150, 200) : Top+25
      ComboBoxGadget (#GADGET_WindowedModes, 190, Top, 150, 200) : Top+45
     
      ButtonGadget (#GADGET_Launch,   6, Top, 180, 25, "Launch", #PB_Button_Default)
      ButtonGadget (#GADGET_Cancel, 200, Top, 190, 25, "Cancel")
      
      If ExamineScreenModes()
        
        While NextScreenMode()
          
          Width  = ScreenModeWidth()
          Height = ScreenModeHeight()

          If Width <> PreviousWidth Or Height <> PreviousHeight
            If Depth <> 8
              AddGadgetItem(#GADGET_ScreenModes, -1, Str(Width)+" x "+Str(Height))
            EndIf
          EndIf
          
          PreviousWidth  = Width
          PreviousHeight = Height
        Wend        
        
      EndIf
      
      DesktopWidth  = 1024 ; GetSystemMetrics_(#SM_CXSCREEN)
      DesktopHeight = 768  ; GetSystemMetrics_(#SM_CYSCREEN)
      NbScreenModes = 7
      
      Restore WindowedScreenDimensions

      Repeat      
        Read CurrentWidth
        Read CurrentHeight
        
        If CurrentWidth < DesktopWidth And CurrentHeight < DesktopHeight
          AddGadgetItem(#GADGET_WindowedModes, -1, Str(CurrentWidth)+ " x "+Str(CurrentHeight))
          NbScreenModes - 1
        Else
          NbScreenModes = 0
        EndIf
        
      Until NbScreenModes = 0
      
      SetGadgetState(#GADGET_FullScreen, FullScreen)
      SetGadgetState(#GADGET_Windowed  , 1-FullScreen)

      SetGadgetText (#GADGET_ScreenModes  , FullScreenMode$)
      SetGadgetText (#GADGET_WindowedModes, WindowedScreenMode$)
      
      DisableGadget (#GADGET_ScreenModes  , 1-FullScreen)
      DisableGadget (#GADGET_WindowedModes, FullScreen)
      
      HideWindow(#WINDOW_Screen3DRequester, 0)
      
      Repeat
        
        Event = WaitWindowEvent()
        
        Select Event
          
        Case #PB_Event_Gadget
          
          Select EventGadgetID()
            
          Case #GADGET_Launch
            Quit = 2
            
          Case #GADGET_Cancel
            Quit = 1
            
          Case #GADGET_FullScreen
            DisableGadget(#GADGET_ScreenModes  , 0)
            DisableGadget(#GADGET_WindowedModes, 1)
          
          Case #GADGET_Windowed
            DisableGadget(#GADGET_ScreenModes  , 1)
            DisableGadget(#GADGET_WindowedModes, 0)
                   
          EndSelect
          
        Case #PB_Event_CloseWindow
          Quit = 1
          
        EndSelect
        
      Until Quit > 0
      
      FullScreen          = GetGadgetState(#GADGET_FullScreen)
      FullScreenMode$     = GetGadgetText (#GADGET_ScreenModes)
      WindowedScreenMode$ = GetGadgetText (#GADGET_WindowedModes)
      
      CloseWindow(#WINDOW_Screen3DRequester)
      
    EndIf
  EndIf
  
  If Quit = 2 ; Launch button has been pressed
  
    CreatePreferences("Demos3D.prefs")
      WritePreferenceLong  ("FullScreen"        , FullScreen)          
      WritePreferenceString("FullScreenMode"    , FullScreenMode$)     
      WritePreferenceString("WindowedScreenMode", WindowedScreenMode$) 

    If FullScreen
      ScreenMode$ = FullScreenMode$
    Else
      ScreenMode$ = WindowedScreenMode$
    EndIf
    
    ScreenWidth  = Val(StringField(ScreenMode$, 1, " "))
    ScreenHeight = Val(Right(ScreenMode$, Len(ScreenMode$)-FindString(ScreenMode$, "x", 1)-1))
    
    Screen3DRequester_FullScreen = FullScreen ; Global variable, for the Screen3DEvents
    
    If FullScreen
      Result = OpenScreen(ScreenWidth, ScreenHeight, 32, "3D Demos")
    Else
      If OpenWindow(0, 0, 0, ScreenWidth, ScreenHeight+MenuHeight(), #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "PureBasic - 3D Demos")
      
        CreateMenu(0, WindowID())
          MenuTitle("Project")
          MenuItem(0, "Quit")
    
          MenuTitle("About")
          MenuItem(1, "About...")
              
        Result = OpenWindowedScreen(WindowID(), 0, 0, ScreenWidth, ScreenHeight, 0, 0, 0)
      EndIf
    EndIf
  EndIf
     
  ProcedureReturn Result
EndProcedure


Procedure Screen3DEvents()

  If Screen3DRequester_FullScreen = 0 ; Handle all the events relatives to the window..
  
    Repeat
      Event = WindowEvent()
      
      Select Event
      
        Case #PB_Event_Menu
          Select EventMenuID()
          
            Case 0
              Quit = 1
          
            Case 2
              MessageRequester("Info", "Windowed 3D in PureBasic !", 0)
              
          EndSelect
             
        Case #PB_Event_CloseWindow
          Quit = 1
        
      EndSelect
      
      If Quit = 1 : End : EndIf  ; Quit the app immediately
    Until Event = 0
    
  EndIf
  
  If ExamineKeyboard()
    If KeyboardReleased(#PB_Key_F1)
      Screen3DRequester_ShowStats = 1-Screen3DRequester_ShowStats ; Switch the ShowStats on/off
    EndIf
  EndIf
          
EndProcedure


Procedure Screen3DStats()
  If Screen3DRequester_ShowStats
    If StartDrawing(ScreenOutput())
      FrontColor(255, 255, 255)
      DrawingMode(1)
      Locate(0, 0)  : DrawText(StrF(Engine3DFrameRate(0),1)+" FPS")
      Locate(0, 20) : DrawText(Str(CountRenderedTriangles())+" Triangles")
      StopDrawing()
    EndIf
  EndIf
EndProcedure

        


DataSection
  WindowedScreenDimensions:
    Data.l  320, 240
    Data.l  512, 384      
    Data.l  640, 480
    Data.l  800, 600      
    Data.l 1024, 768
    Data.l 1280, 1024
    Data.l 1600, 1200
EndDataSection
Hier nun mein code:

Code: Alles auswählen

#CameraSpeed = 20
#max=10
Dim marked.b(#max)
IncludeFile "Screen3DRequester.pb"
DefType.f KeyX, KeyY, MouseX, MouseY
#RobotMesh    = 2
#RobotTexture = 2
Dim movX.b(#max)
Global x.b
Global frame.w
Dim movZ.b(#max)
Dim movY.b(#max)
Dim rotate.b(#max)
InitEngine3D()
Add3DArchive("3d\", #PB_3DArchive_FileSystem)

LoadImage(1,"grafic\cursor.bmp")

InitSprite()
InitSprite3D()
Sprite3DQuality(1)
InitKeyboard()
InitMouse()
;ClearScreen(0,0,0)
If Screen3DRequester()
AmbientColor(RGB(255,255,255))
UseJPEGImageDecoder()
LoadImage(10,"3d\Terrain_Texture_g.jpg")
CreateMaterial  (0, LoadTexture(0, "Terrain_Texture.jpg"))
AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), 1)
CreateTerrain("Terrain.png", MaterialID(0), 4, 1, 4, 4)
FOV = 65
    CreateLight(0, RGB(0,0,255), 400.0, 0, 0)   ; Blue light
    CreateLight(1, RGB(255,0,0), -100.0, 0, 0)  ; Red light
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0, 500, 800, 400)

RotateCamera(0,0,-90,0)

CameraRenderMode(1,#PB_Camera_Wireframe)
CameraFOV(0,65)
SkyDome("sky.jpg",1)
LoadMesh(#RobotMesh, "Robot.mesh")
LoadTexture(#RobotTexture, "r2skin.jpg")
CreateMaterial(1,TextureID(#RobotTexture))
For x=1 To #max/2
CreateEntity(x,MeshID(#RobotMesh),MaterialID(1))
EntityLocate(x,500,10,300+x*50)
AnimateEntity(x, "Walk")
Next
For x=1 To #max/2
  CreateEntity(x+#max/2,MeshID(#RobotMesh),MaterialID(1))
  EntityLocate(x+#max/2,400,10,300+x*50)
  AnimateEntity(x+#max/2, "Walk")
Next
For x=1 To #max
  movX(x)=3
Next
;Fog(RGB(220,220,220),1,1000,1500)
FreeCamera(1)
MouseLocate(250,250)
RotateCamera(0,0,30,0)
mov=3
RotateCamera(0,90,0,0)
;MessageRequester("info","sceenhight:"+Str(ScreenHeight)+" ScreenWitdh:"+Str(ScreenWidth))
Repeat
ClearScreen(0, 0, 0)
  Screen3DEvents() 
  frame=Engine3DFrameRate(#PB_Engine3D_Current)
  For x=1 To #max
  If EntityX(x)=>800 And rotate(x)<>1
    RotateEntity(x,180,0,0)    
   movX(x)=-3
   rotate(X)=1
ElseIf EntityX(x)<=250 And rotate(x) <>2
    movX(x)=3
    RotateEntity(x,180,0,0)  
    rotate(x)=2
  EndIf
  If TerrainHeight(EntityX(x),EntityZ(x))>EntityY(x)+1
    movY(x)=3
    If movX(x)>0
 movX(x)=2
    ElseIf movX(x)<0
 movX(x)=-2
    EndIf
  ElseIf TerrainHeight(EntityX(x),EntityZ(x))<EntityY(x)+1
    movY(x)=-3
    If movX(x)>0
 movX(x)=4
    ElseIf movX(x)<0
 movX(x)=-4
    EndIf
  Else
    movY(x)=0
  EndIf
  
  MoveEntity(x,movX(x),movY(x),0)
Next
  
  ;LightColor(1,RGB(Random(255),Random(255),Random(255))) 
  ExamineMouse()
  CameraLocate(0,CameraX(0),800,CameraZ(0)) 
  KeyX=0
  KeyY=0
  If MouseX()=0
    KeyX = -#CameraSpeed 
    ElseIf MouseX()>=(ScreenWidth-2)
      KeyX = #CameraSpeed 
    EndIf
    
    If MouseY()=0 
      KeyY = -#CameraSpeed 
    ElseIf MouseY()>=(ScreenHeight-2) 
      KeyY = #CameraSpeed 
    EndIf
    
    ExamineKeyboard()
    MouseX = 0
    If KeyboardPushed(#PB_Key_Pad4)
      MouseX=#CameraSpeed/2
  ElseIf KeyboardPushed(#PB_Key_Pad6)
    MouseX=-#CameraSpeed/2
  EndIf
  MouseY=0
  If KeyboardPushed(#PB_Key_Pad2)
    MouseY=-#CameraSpeed/2
  ElseIf KeyboardPushed(#PB_Key_Pad8)
    MouseY=#CameraSpeed/2
  EndIf
  
  If KeyboardPushed(#PB_Key_Up)
    KeyY=-#CameraSpeed*2
  ElseIf KeyboardPushed(#PB_Key_Down)
    KeyY=#CameraSpeed*2
  EndIf
  
  If KeyboardPushed(#PB_Key_Left)
    KeyX=-#CameraSpeed*2
  ElseIf KeyboardPushed(#PB_Key_Right)
    KeyX=#CameraSpeed*2
  EndIf


    Height.f = TerrainHeight(CameraX(0), CameraZ(0))
    If MouseWheel()>0
    FOV - 1 : If FOV < 20:FOV=20:EndIf
  CameraFOV(0,FOV):EndIf
  If MouseWheel()<0
    FOV + 1 : If FOV > 160:FOV=160:EndIf
  CameraFOV(0,FOV):EndIf
  RotateCamera(0, MouseX, MouseY, RollZ)
  MoveCamera(0, KeyX, 0, KeyY)
  ;RotateCamera(1, MouseX, 0, RollZ)
  ;MoveCamera  (1, KeyX, -KeyY, 0)
  RenderWorld()
  Screen3DStats()
      If KeyboardPushed(#PB_Key_F12)
      GrabSprite(2,0,0,ScreenWidth,ScreenHeight)
      SaveSprite(2,"Screenshot.bmp")
      FreeSprite(2)
    EndIf
  If MouseButton(1)=1
    If mark=0
      mark=1
      startX=MouseX()
      startY=MouseY()
      For x=1 To #max
        marked(x)=0
      Next
    EndIf
    
    StartDrawing(TextureOutput(0))
    DrawImage(UseImage(10),0,0)
    DrawingMode(4)
    Box(startX,startY,MouseX()-startX,MouseY()-startY,RGB(0,255,0))
    StopDrawing()
    
    
  Else
    mark=0
  EndIf 
  StartDrawing(TextureOutput(0))
  ;DrawImage(UseImage(10),0,0)
  Circle(CameraX(0),CameraZ(0),10)
  StopDrawing()
  StartDrawing(ScreenOutput())
  ;DrawImage(UseImage(1),MouseX(),MouseY())
  For x=0 To 10
  Line(MouseX(),MouseY(),50+x,50,RGB(0,255,0))
  Line(MouseX(),MouseY(),10+x,40+x,RGB(0,255,0))
  Line(MouseX(),MouseY(),40+x,10+x,RGB(0,255,0))
  Next
  DrawingMode(1)
  FrontColor(255,255,255)
  Locate(1,1)
  DrawText("X:"+Str(CameraX(0)))
  Locate(1,20)
  DrawText("Y:"+Str(CameraY(0)))
  Locate(1,40)
  DrawText("Z:"+Str(CameraZ(0)))
  Locate(1,60)
  DrawText("MausX:"+Str(MouseX()))
  Locate(1,80)
  DrawText("MausY:"+Str(MouseY()))
  Locate(1,100)
  DrawText("FPS:"+Str(frame))
  StopDrawing()
  ;DisplayTransparentSprite(1,MouseX(),MouseY())
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf 
End
Dateien dazu gibt´s hier.

Was alles nicht geht:
1.Wenn ich die Textur über die bestehende schreibe, ist sie spiegelvergehrt, weshalb die datei textur_g existiert (gespiegelt, kann aber doch nicht sein, oder?)
2.Den schwarzen Punkt habe ich eigentlich immer in der Bildschirmmmitte erwartet, es istcameraX und Z, aber der Punkt macht komisches!
3.Der Güne Einheitenmarkierkasten ist irgendwo (das hat sicher was mit cos und sin zu tun, oder), wenn man das bild dreht
4.Gibt es sowas wie entyty collision? (Um die roboter zu markieren?)
5. Mit welchem Programm kann man animierte meshes erstellen?
6.Mit wieviel fps läuft das im durschschnitt? (also bei euch)
7.Warum geht das licht nicht?

Danke Schonmal für die hilfe, vor alle in den Punkten 1-4

P.S.: Wenn lycos Probleme macht, einfach auf meiner homepage wc.rar in die adressleiste tippen (hinter mitglied.lycos.de/benpicco)
Ich überlege ernsthaft, den anbieter zu wechseln...
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

habt ihr nicht zufällig ne idee, was ich machen könnte... :|
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Beitrag von Eclipse »

Versuch mal den Code auf die Stellen, wo du glaubst, dass dort die
Fehler liegen, zu begrenzen.

Zu 5. : Nimm Milkshape.
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

Ok, zu 1.:

Code: Alles auswählen

    StartDrawing(TextureOutput(0))
    DrawImage(UseImage(10),0,0)
    DrawingMode(4)
    Box(startX,startY,MouseX()-startX,MouseY()-startY,RGB(0,255,0))
    StopDrawing()
image 10 ist die gespiegelte Textur (textur_g.jpg), aber das kann doch nicht sein, das ich die textur 2x speichern muss?
2.:

Code: Alles auswählen

  StartDrawing(TextureOutput(0))
  Circle(CameraX(0),CameraZ(0),10)
  StopDrawing()
Das macht einen schwarzen Punkt auf der Textur, ich wollte mich so besser zurechtfinden können und herausfinden, wo cameraX und Z wirklich sind. Aber was herauskommt, verwirrt mich, geben cameraX und Z doch den sichtberwicxh wieder (oder?), und wenn der punkt nicht mehr zu sehen ist...
3.:

Code: Alles auswählen

  If MouseButton(1)=1
    If mark=0
      mark=1
      startX=MouseX()
      startY=MouseY()
      For x=1 To #max
        marked(x)=0
      Next
    EndIf
    
    StartDrawing(TextureOutput(0))
    DrawImage(UseImage(0),0,0)
    DrawingMode(4)
    Box(startX,startY,MouseX()-startX,MouseY()-startY,RGB(0,255,0))
    StopDrawing()
Das ist wohl auf das Punktproble zurückzuführen...
4.:
Naja, hat was mit 3. zu tun, und da das nicht funktioniert, weil ich mit 2. ein Problem hab, hab ich hier auch noch keine idee...
5.:
Wo gibt´s das?
6.:
Nur so informativ...
7.:

Code: Alles auswählen

    CreateLight(0, RGB(0,0,255), 400.0, 0, 0)  
    CreateLight(1, RGB(255,0,0), -100.0, 0, 0) 
Ich seh da irgendwie nichts...

Danke schonmal für die Hilfe!
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Eclipse
Beiträge: 99
Registriert: 04.06.2005 18:09

Beitrag von Eclipse »

benpicco hat geschrieben: 5.:
Wo gibt´s das?
Hier: http://www.swissquake.ch/chumbalum-soft/index.html
Ist Trial. Kostet aber nur 20$.
benpicco hat geschrieben: 7.:

Code: Alles auswählen

    CreateLight(0, RGB(0,0,255), 400.0, 0, 0)  
    CreateLight(1, RGB(255,0,0), -100.0, 0, 0) 
Ich seh da irgendwie nichts...
Da gibts auch nichts zu sehen. Mit Light ist kein Stern oder sowas gemeint
sondern eine Lichtqelle(unsichtbar) die dazu da ist um zum Beispiel Schatten zu erzeugen.
benpicco hat geschrieben: Das macht einen schwarzen Punkt auf der Textur, ich wollte mich so besser zurechtfinden können und herausfinden, wo cameraX und Z wirklich sind. Aber was herauskommt, verwirrt mich, geben cameraX und Z doch den sichtberwicxh wieder (oder?), und wenn der punkt nicht mehr zu sehen ist...
Wie kommst du auf Sichtbereich?
Sie geben die Position der Camera (also deine eigene) an.
Fazit: CameraX und Z sind dort wo du bist

PS:Wenn du nicht genau weißt was ein Befehl bewirkt, dann guck
in der Hilfe Nach. Hilft (wie der Name schon sagt) immer. :allright: :allright:
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

Eclipse hat geschrieben:
benpicco hat geschrieben: 7.:

Code: Alles auswählen

    CreateLight(0, RGB(0,0,255), 400.0, 0, 0)  
    CreateLight(1, RGB(255,0,0), -100.0, 0, 0) 
Ich seh da irgendwie nichts...
Da gibts auch nichts zu sehen. Mit Light ist kein Stern oder sowas gemeint
sondern eine Lichtqelle(unsichtbar) die dazu da ist um zum Beispiel Schatten zu erzeugen.
Mein ich doch, ich seh trotzdem nichts!
benpicco hat geschrieben: Das macht einen schwarzen Punkt auf der Textur, ich wollte mich so besser zurechtfinden können und herausfinden, wo cameraX und Z wirklich sind. Aber was herauskommt, verwirrt mich, geben cameraX und Z doch den sichtberwicxh wieder (oder?), und wenn der punkt nicht mehr zu sehen ist...
Wie kommst du auf Sichtbereich?
Sie geben die Position der Camera (also deine eigene) an.
Fazit: CameraX und Z sind dort wo du bist
Dann müsste ic aber manchmal außerhalb des Bildschirms sein :roll:
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Antworten