Seite 1 von 1

CreateTerrain Problem (Gelöst)

Verfasst: 22.04.2006 12:17
von Quaxi
Hallo,
ich versuche mich gerade das erste mal an einer kleinen 3D Anwendung und wollte den CreateTerrain Befehl benutzen. Allerdings ernte ich damit immer nur einen schwarzen Bildschirm. Wenn ich ihn auskommentiere wird die eingebaute SkyBox normal angezeigt.
Die SkyBox hab ich selber gezeichnet, die terrain Daten sind aus dem mitgelieferten PureBasic Beispiel entnommen. Hier der Code:

Code: Alles auswählen

InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()

Enumeration
  #CAMERA
EndEnumeration

OpenScreen(1024,768,32,"3D-Test")

Add3DArchive("Data\", #PB_3DArchive_FileSystem)

ClearScreen(0,0,0)

CreateCamera(#CAMERA, 0,0,100,100)
CameraLocate(#CAMERA, 128, 25, 128)

AmbientColor(RGB(255,255,255))

CreateMaterial  (0, LoadTexture(0, "terrain_texture.jpg"))
AddMaterialLayer(0, LoadTexture(1, "terrain_detail.jpg"), 1)
CreateTerrain("terrain.png", MaterialID(0), 4, 0.6, 4, 4)

SkyDome("Sky.jpg",1)

Repeat
  ExamineKeyboard() : ExamineMouse()
  
  RotateCamera(#CAMERA, -MouseDeltaX(),0,0)
  RotateCamera(#CAMERA, 0,-MouseDeltaY(),0) 
  
  If KeyboardPushed(#PB_Key_Up) : MoveCamera(#CAMERA, 1,0,0) : ElseIf KeyboardPushed(#PB_Key_Down) : MoveCamera(#CAMERA, -1,0,0) : EndIf
  If KeyboardPushed(#PB_Key_Left) : MoveCamera(#CAMERA, 0,0,1) : ElseIf KeyboardPushed(#PB_Key_Right) : MoveCamera(#CAMERA, 0,0,-1) : EndIf
  
  RenderWorld()
  
  StartDrawing(ScreenOutput())
  FrontColor(255,100,100) : DrawingMode(1) 
  Locate(0,0) : DrawText("Camera: X="+Str(CameraX(#CAMERA)) + " Y="+Str(CameraY(#CAMERA))+" Z="+Str(CameraZ(#CAMERA)))
  Locate(0,12) : DrawText("FPS="+StrF(Engine3DFrameRate(0), 1))
  StopDrawing()
  
  FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape)

End
EDIT:-
Sodele, nun bin ich doch noch selbst darauf gekommen. Anscheinend ist es wichtig das man die Kamera erst nach dem CreateTerrain erstellt. Zummindest hats bei mir dann funktioniert.

Verfasst: 30.10.2006 19:18
von double7
Vielen Dank, dieses Problem bereitete mir schon ´ne Weile Kopfschmerzen. Hast Recht, die Position der Initialisierung der Kamera ist ausschlaggebend. :allright: