Mesh in Terrain
- Programie
- Beiträge: 1280
- Registriert: 06.08.2005 22:56
- Computerausstattung: https://www.sysprofile.de/id160800
- Wohnort: Gernsbach
- Kontaktdaten:
Mesh in Terrain
Hi,
Ich wollte heute mal anfangen ein kleines Spiel zu programmieren.
Ja jetzt die Frage, wie bekomme ich ein Mesh in einen Terrain rein?
Ich wollte heute mal anfangen ein kleines Spiel zu programmieren.
Ja jetzt die Frage, wie bekomme ich ein Mesh in einen Terrain rein?
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
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.
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
- Programie
- Beiträge: 1280
- Registriert: 06.08.2005 22:56
- Computerausstattung: https://www.sysprofile.de/id160800
- Wohnort: Gernsbach
- Kontaktdaten:
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
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.
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
- Programie
- Beiträge: 1280
- Registriert: 06.08.2005 22:56
- Computerausstattung: https://www.sysprofile.de/id160800
- Wohnort: Gernsbach
- Kontaktdaten:
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
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)
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?
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
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