Terrain laden

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

 

masterman123

BeitragMi, Jan 20, 2010 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
er hat geschrieben es kommt keine fehlermeldung,mdave

Dottakopf

BeitragDo, Jan 21, 2010 8:57
Antworten mit Zitat
Benutzer-Profile anzeigen
@blitzking


also langsam wirds nervig... Spiel mal ein bisschen mehr herum. Das Mesh ist auf jeden Fall geladen worden und ist auch vorhanden. Lediglich die Camera ist falsch positioniert,bzw. das Mesh falsch skalliert...

wenn du die camera auf 0,0,0 erstellst und dein Mesh auch auf 0,0,0 erstellst, ist es nur logisch das die camera irgendwo im mesh oder unter dem mesh steht. Oder sie schaut in die falsche richtung.

Probiere mal den code:

Code: [AUSKLAPPEN]

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

camera=CreateCamera()
moveentity camera,0,10,-5

light=CreateLight()

terrain=LoadMesh ("C:\Users\Benjamin\Desktop\landscape.3ds")
ScaleEntity terrain,0.05,0.05,0.05
entitycolor terrain,255,0,0


While Not KeyDown(1)

                 If KeyDown ( 31)=True Then MoveEntity camera,0,0,-0.1

                 pointentity camera,terrain

UpdateWorld
RenderWorld
Flip
Wend




einfach mit pointentity auf das mesh pointen, und jetzt viel rumbewegen ! irgendwann muss das mesh zu sehen sein.
Rechtschreibfehler gelten der allgemeinen Belustigung!

Midimaster

BeitragDo, Jan 21, 2010 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube Mastermann hat recht: der steht mit der Camera unterhalb des Terrain.

Also soll er Camera rauf/runter einbauen und vor allem eine Drehung dee Camera. Nur so kann der das Terrain suchen.

BlitzBasic: [AUSKLAPPEN]
MoveEntity camera,0,50,0  ; oder 500...oder 5000
While Not KeyDown(1)
If KeyDown ( 17)=True Then MoveEntity camera,0,1,0
If KeyDown ( 31)=True Then MoveEntity camera,0,-1,0
If KeyDown ( 30)=True Then TurnEntity camera,0,1,0
If KeyDown ( 32)=True Then TurnEntity camera,0,1,0

UpdateWorld
RenderWorld
Flip
Wend


Wäre nicht auch ein AmbientLight() während der Suche besser? Möglicherweise steht auch sein Licht unter dem Terrain!
 

vanjolo

BeitragDo, Jan 21, 2010 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, erledigt, sorry hab nicht den ganzen thread gelesen.
 

blitzking

BeitragFr, Jan 22, 2010 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es jetzt geschafft meine landschaft zu laden und sie wird auch angezeigt,aber teilweise schwarz
Code: [AUSKLAPPEN]
Graphics3D 640,480,32,2
SetBuffer BackBuffer()

pivot=CreatePivot()

camera=CreateCamera(pivot)


light=CreateLight()
RotateEntity light,90,0,0

terrain=LoadMesh ("D:\Benni_Daten\Media\Blitz3d\Mesh\Insel.3ds")
PositionEntity terrain,0,0,MeshDepth(terrain)*2

While Not KeyDown(1)

   Local x_speed#,y_speed#
   
   x_speed=(MouseXSpeed()-x_speed)/3+x_speed
   y_speed=(MouseYSpeed()-y_speed)/3+y_speed
   MoveMouse 320,240
   TurnEntity camera,+y_speed,0,0
   TurnEntity pivot,0,-x_speed,0

If KeyDown ( 17)=True Then MoveEntity camera,0,0,1
If KeyDown ( 31)=True Then MoveEntity camera,0,0,-1
If KeyDown ( 30)=True Then MoveEntity camera,-1,0,0   
If KeyDown ( 32)=True Then MoveEntity camera,1,0,0

RenderWorld
Flip
Wend
End
 

masterman123

BeitragFr, Jan 22, 2010 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
mach mal ne texture drauf,ob es dann auch noch ist
tex=loatexture("...")
entitytexture terrain,tex,0,0

Midimaster

BeitragFr, Jan 22, 2010 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Möglicherweise stehst Du mit der Kamera zu weit weg oder mitten in einem Berg? Ist das schwarz in richtung Bildschrmrand? oder gibt es Löcher im Mesh?
 

blitzking

BeitragFr, Jan 22, 2010 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub du hattest recht,dass ich in einem bergstehe
aber wie mache ich einen Hintergrund und dass die ego-prespektive richtig funktioniert
 

masterman123

BeitragFr, Jan 22, 2010 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
mit der kamera guckt in der hilfe nach kamera
da ist nebel
und hintergrundfarbe und sowas

Nicdel

BeitragFr, Jan 22, 2010 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
CameraClsColor, CameraFogColor

Zur Egoshootersteuerung gibt's ne Menge im Codearchiv, verwende die Forensuche.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

blitzking

BeitragFr, Jan 22, 2010 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
nochmal zum terrain
egal was ich mache es wird zwar angezeigt aber nicht ganz
kann mir mal einer nen code schicken wie er .3ds terrains lädt?
 

masterman123

BeitragFr, Jan 22, 2010 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
du machst das eig richtig,mch mal das meshdepth weg

Dottakopf

BeitragSa, Jan 23, 2010 11:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

ich glaub du hattest recht,dass ich in einem bergstehe
aber wie mache ich einen Hintergrund und dass die ego-prespektive richtig funktioniert




ich weis nicht irgendwie habe ich das Gefühl, du solltest dich nochmal von vorne an mit 3D beschäftigen(damit meine ich durcharbeiten).


Arrow Wie läd man Objekte richtig
Arrow Wie werden diese verwaltet/gehandelt
Arrow Bewegung in der 3D Welt, inkl. Kollision

Arrow und vorallem ganz wichtig! immer erst selber probieren, Genau Analysieren(evt. auch skizzen machen, das hilft wirklich). Dann einen Eintrag machen, mit code, und evt mit Bild.


Die Suche ist zwar nicht perfekt, aber zum Thema ego shooter camera(First Person) findet man echt viel.

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Midimaster

BeitragSa, Jan 23, 2010 12:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn deine Figur auf den Terrain steht, kann es sein, dass die Camera noch mitten im Berg ist. Ändert sich denn irgendwas, wenn du mal mit der Camera fliegst?

in die Repeat/Until:

MoveEntity Camera 0,1,0
 

Krischan

BeitragSa, Jan 23, 2010 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
blitzking hat Folgendes geschrieben:
nochmal zum terrain
egal was ich mache es wird zwar angezeigt aber nicht ganz
kann mir mal einer nen code schicken wie er .3ds terrains lädt?

Hab da mal schnell was zusammengebastelt. Das Terrain wird zunächst auf 1.0 mittels Fitmesh normalisiert/zentriert und dann auf die feste Grösse von 1024x1024 skaliert, was mit den Kameraeinstellungen harmonisiert. Das ist praktisch, wenn das Terrain eine zunächst unbekannte Dimension hat, so holt man es auf eine für die Szene passende Grösse. Dazu noch eine Freecam und das wars eigentlich auch schon. Zum Terrain ist noch zu sagen, dass evt. die Normals geflippt sein können, dann entweder NACH dem Laden noch Flipmesh terrain oder EntityFX Terrain,1+16 verwenden - ausserdem sollten natürlich die UV-Koordinaten schon gesetzt sein wenn man eine Textur verwenden möchte.

Steuerung mit Maus und Pfeiltasten, SPACE = Wireframe.

Download [758KB 7zip SFX]
user posted image

Hier der simple Code:

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2

Global GameSpeed%=60
Global Screenwidth%=GraphicsWidth()
Global Screenheight%=GraphicsHeight()
Global FramePeriod%=1000/GameSpeed
Global FrameTime%=MilliSecs()-FramePeriod
Global DeltaTimeOld%

; Kamera
cam=CreateCamera()
CameraRange cam,1,1024
PositionEntity cam,0,0,0
CameraClsColor cam,150,200,255
CameraFogColor cam,150,200,255
CameraFogMode cam,1
CameraFogRange cam,1,1024
RotateEntity cam,0,90,0

; Terrain laden, auf 1 normalisieren und auf 1024 skalieren
terrain=LoadMesh("terrain.3ds")
FitMesh terrain,-0.5,-0.5,-0.5,1,1,1,1
ScaleEntity terrain,1024,1024,1024
EntityFX terrain,1

MoveMouse Screenwidth/2,Screenheight/2

While Not KeyHit(1)
   
   ; Frametween calculation
   Local FrameElapsed%,FrameTicks%,FrameTween#,t%
   Repeat FrameElapsed=MilliSecs()-FrameTime Until FrameElapsed
   FrameTicks=FrameElapsed/FramePeriod
   FrameTween=Float(FrameElapsed Mod FramePeriod)/Float(FramePeriod)
   
   ; Frametween loop
   For t=1 To FrameTicks
      
      ; Frametween Captureworld
      FrameTime=FrameTime+FramePeriod : If t=FrameTicks Then CaptureWorld
      
      ; SPACE = Wireframe
      If KeyHit(57) Then wf=1-wf : WireFrame wf
      
      ; Kamerabewegung
      FreeCam(cam,85,1)
      
      UpdateWorld
      
   Next
   
   RenderWorld FrameTween
   
   Text 0,0,"Tris: "+TrisRendered()
   Text 0,15,"Pos:  "+EntityX(cam)+"X "+EntityY(cam)+"Y "+EntityZ(cam)+"Z"
   
   Flip 0
   
Wend

End

Function FreeCam(camera%,maxpitch#=85.0,movespeed#,rotspeed#=16.666,rotfloat#=8.0)
   
   Local movex#,movez#,dx#,dy#,dk#,dt%,t%
   Local pitch#
   
   ; Pfeiltaste = Bewegen
   movex=KeyDown(205)-KeyDown(203)
   movez=KeyDown(200)-KeyDown(208)
   
   ; weiche Bewegung
   t=MilliSecs() : dt=t-DeltaTimeOld : DeltaTimeOld=t : dk=Float(dt)/rotspeed
   dx=(Screenwidth/2-MouseX())*0.01*dk : dy=(Screenheight/2-MouseY())*0.01*dk
   TurnEntity camera,-dy,dx*0.1*dk*rotfloat,0
   
   ; Pitch begrenzen
   pitch=EntityPitch(camera,1) : If pitch>maxpitch Then pitch=maxpitch Else If pitch<-maxpitch Then pitch=-maxpitch
   
   ; Kamera drehen und bewegen
   RotateEntity camera,pitch,EntityYaw(camera,1),0,1   
   MoveEntity camera,movex*movespeed,0,movez*movespeed
   
End Function
 

blitzking

BeitragSa, Jan 23, 2010 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mir dein terrain demo geholt und auch mal mein terrain darin ausprobiert, aber es wird wieder wie in meinem eigenen programm nur teilweise angezeigt

Nicdel

BeitragSa, Jan 23, 2010 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du dein Terrain-Model mal im Archiv hochladen?
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

blitzking

BeitragSa, Jan 23, 2010 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab es hochgeladen schau unter der beschreibung terrain
der name der datei is Insel.3ds

Nicdel

BeitragSa, Jan 23, 2010 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Da gibt es tatsächlich Stellen ohne Triangles. Also ein Fehler in deinem Terrainerstellungsprogramm.

PS: 33000 Tris sind für ein Terrain ziemlich viel. Schau mal, ob du da was reduzieren kannst Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

Krischan

BeitragSa, Jan 23, 2010 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja, die Datei ist selbst fehlerhaft und hat vermutlich zu viele Vertices / Polygone - Du solltest Dich mal mit dem Polygon-Limit von 3DS-Dateien beim Export beschäftigen. In meinem Screenshot kannst Du sehen, dass das Terrain nur teilweise geladen ist, ausserdem sind die Normals geflippt, d.h. in der Form nur von unten sichtbar (es sei denn man benutzt EntityFX 16).

user posted image

Hier zum Vergleich mein Terrain:

user posted image

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group