Mesh in Terrain

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Mesh in Terrain

Beitrag von Programie »

Hi,

Ich wollte heute mal anfangen ein kleines Spiel zu programmieren.
Ja jetzt die Frage, wie bekomme ich ein Mesh in einen Terrain rein?
BildBildBildBild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ganich
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

doch du nimmst ein mesh und steckst es ins terrain.
I´a dllfreak2001
Benutzeravatar
Kurono
Beiträge: 44
Registriert: 28.10.2006 15:03
Wohnort: Mineral Town
Kontaktdaten:

Beitrag von Kurono »

<) *gruntz
PB 3.94
Harvest Moon 4Ever!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

zur erklärung:
ein mesh ist eine sammlung von dreidimensionalen vektoren.
ein terrain baut auf ein zweidimensionales height-field auf.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Ich denke Programmie möchte nen Mesh im terrain.
Also erstellt er nen Etity mit seinem gewünschten Mesh und platziert es im Terrain. Da gibbet auch nen Befehl in PB mit dem die Terrainhöhe an der Position herausfindet. Fertig mesh im terrain.

Ansonsten bastellt ers das Terrain selber als Mesh. Mit Milkshape geht das auch sehr einfach weil der auch mit Heightmaps arbeiten kann.
Allerdings wird es dann komplizierter ne einfache Kollision zu erzeugen.
I´a dllfreak2001
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von Programie »

Kannst du mir mal einen Beispielcode reinschreiben?

(Das Terrain-Beispiel aus der Hilfe + Mesh?)
BildBildBildBild
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Jap so gehts
Nimm ein Terrain und erstell dann nen Entity da ladest dann den Mesh rein. Wie im Beipielcode zum Mesh.
Und das Terrainheight() ist ja im Terrainbeipiel drin für die Kamera.


Leider habe ich grad keinen pb4 tauglichen code da aber die Beipiele beschreiben doch alles.
Spiel mal mit den Beispielen herum.
I´a dllfreak2001
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von Programie »

Er muss zum verstehen ja nicht PB4 tauglich sein. Kannst du mir ein Beispiel für PB3.94 oder so posten?

PS: Frohes neues Jahr
BildBildBildBild
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Nagut hab mal die Beispiele zusammen gepackt.

Ist auch PB4-Code und kannst den Kramm auch laufen lassen wenn du den Code im Exampleordner speicherst. (Der Example-Content muss vorhanden sein)

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - Terrain
;
;    (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 5

IncludeFile "Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()
  Add3DArchive("Data\"          , #PB_3DArchive_FileSystem)
  Add3DArchive("Data\Skybox.zip", #PB_3DArchive_Zip)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    LoadMesh   (0, "Robot.mesh");-Mesh laden
    
    AmbientColor(RGB(255,255,255))
    
    CreateMaterial  (0, LoadTexture(0, "Terrain_Texture.jpg"))
    AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), 1)
    CreateMaterial(2, LoadTexture(2, "r2skin.jpg")) ;-Material für Entity erstellen
    
    CreateTerrain("Terrain.png", MaterialID(0), 1, 1, 1, 4)
    
    CreateEntity(1, MeshID(0), MaterialID(2), 100,100,100) ;-Entity erstellen
    AnimateEntity(1, "Walk")
    
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 128, 25, 128)
    
    SkyDome("Clouds.jpg",10)
    ;-Entity X und Z position
    Global botx.f, botz.f
    botx = 300
    botz = 300
    Repeat
      Screen3DEvents()
            
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed 
        Else
          KeyX = 0
        EndIf
                  
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed 
        Else
          KeyY = 0
        EndIf
        ;-Entity bewegen
        If KeyboardPushed(#PB_Key_A)
          botz - 1
        ElseIf KeyboardPushed(#PB_Key_D)
          botz + 1
        EndIf
        If KeyboardPushed(#PB_Key_W)
          botx + 1
        ElseIf KeyboardPushed(#PB_Key_S)
          botx - 1
        EndIf

      EndIf

      If ExamineMouse()
        MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
        MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
      EndIf
      
      Height.f = TerrainHeight(CameraX(0), CameraZ(0))
      
      RotateCamera(0, MouseX, MouseY, RollZ)
      MoveCamera  (0, KeyX, -CameraY(0)+Height+8, KeyY)

      EntityLocate(1,botx,TerrainHeight(botx,botz),botz);-Entityposition festlegen  
      
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
  
End
An sich handelt es sich beim Terrain um einen Mesh der aber in Ogre nicht so gehandhabt werden kann. dafür kannst du dann mit Terrainheght einfach dein Entity platzieren.

In meinem Beispiel W S A D drücken um den Bot laufen zu lassen.
Das siehst du wie Terrainheight() funzt. Sieht sogar ziemlich realistisch aus mit der LAufanim.
Macht Bock nen Mechwrior-Klon zu basteln, oda?
I´a dllfreak2001
Antworten