CopyEntity => Speicherauslastung viel zu hoch!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Dice of Darkness

Betreff: CopyEntity => Speicherauslastung viel zu hoch!

BeitragFr, Mai 08, 2009 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich bin noch recht neu in Sachen 3D-Programmierung und hab heute mal versucht, ein Objekt (eine Palme) mehrmals auf meinem Terrain zu platzieren mittels CopyEntity. Das Problem ist nur, dass mein Rechner schon bei einer (!) neu erstellten Palme komplett in die Knie geht und total anfängt zu ruckeln...

Hier der Code:
Code: [AUSKLAPPEN]
Graphics3D 1024,768,16,1
SetBuffer BackBuffer()

Global light = CreateLight(1)
Global spotlight = CreateLight(3)
Global camera = CreateCamera()

Global palmtree = LoadMesh("Palmtree.3ds")
Global palmtree_2 = LoadMesh("Palmtree.3ds")
Global mushroom = LoadMesh("Mushroom.3ds")
Global sky = LoadMesh("Sky_sphere.3ds")
Global laken = LoadMesh("Laken.3ds")

Global Heightmap = LoadTerrain("Heightmap_Test.bmp")
Global Back_tex = LoadTexture("Back.bmp")
EntityTexture Heightmap,Back_tex

PositionEntity palmtree,1,0,1
PositionEntity palmtree,10,0,10
PositionEntity mushroom,2,0,2
PositionEntity sky,4,0,4
PositionEntity laken,12,0.1,5
PositionEntity camera,10,3,10
RotateEntity camera,0,135,0
RotateEntity sky,0,135,0

PositionEntity spotlight,1,0,1

While Not KeyHit(1)

   UpdateWorld()
   RenderWorld()
   MoveObject()
   KeyCheck()
   PlaceEntities()

Flip
Wend    
End


Function MoveObject()

If KeyDown(200) Then ;up
   ;MoveEntity object1,0,0,-0.1
   MoveEntity camera,0,0,0.1
   MoveEntity sky,0,0,0.1
ElseIf KeyDown(208) Then ;down
   ;MoveEntity object1,0,0,0.1
   MoveEntity camera,0,0,-0.1
   MoveEntity sky,0,0,-0.1
ElseIf KeyDown(203) Then ;left
   ;TurnEntity object1,0,0.7,0
   TurnEntity camera,0,0.7,0
   TurnEntity sky,0,0.7,0
ElseIf KeyDown(205) Then ;right
   ;TurnEntity object1,0,-0.7,0
   TurnEntity camera,0,-0.7,0
   TurnEntity sky,0,-0.7,0
ElseIf KeyDown(57) Then ;space
   MoveEntity camera,0,0.1,0
   MoveEntity sky,0,0.1,0
ElseIf KeyDown(28) Then ;enter
   MoveEntity camera,0,-0.1,0
   MoveEntity sky,0,-0.1,0
EndIf

End Function


Function KeyCheck()

Color 255,255,255
Text 0,0,"[Pfeiltaste Oben] => nach vorne"
Text 0,15,"[Pfeiltaste Unten] => nach hinten"
Text 0,30,"[Pfeiltaste Rechts] => Rechtsschwenk"
Text 0,45,"[Pfeiltaste Links] => Linksschwenk"
Text 0,60,"[Space] => Hochfahren"
Text 0,75,"[Enter] => Runterfahren"

End Function


Function PlaceEntities()

;For i = 1 To 1
CopyEntity(palmtree)
PositionEntity palmtree,15,0,15
;Next

End Function


An dem Objekt selbst kann es kaum liegen, denn ich habe (=>siehe Code) nur so zum Test ein zweites Objekt mit dem Namen "palmtree_02" erstellt, das also genau das gleiche Objekt ist wie die erste Palme ("palmtree"), und da funktioniert es einwandfrei (das war also mein Test, ob es daran liegen würde, dass das Objekt mehrmals platziert wird, was aber nicht weiter problematisch war).

Kann es sein, dass ich den Befehl irgendwie falsch verwende oder einen ganz anderen Fehler drin habe? Ich habe schon versucht, mit der Suche eine Lösung zu finden, aber da wurde immer nur empfohlen, eher "CopyEntity" als "CopyMesh" zu verwenden, woraus ich leider nicht so ganz schlau wurde...

Wär echt nett, wenn ihr mir helfen könntet! Smile

mfg Dice of Darkness




PS: Achso, noch etwas ist mir aufgefallen: Ich habe die Kamera so ausgerichtet, dass sie am Anfang auf die "per Hand" erstellte Palme ausgerichtet ist. Wenn ich die Kamera dann drehe, läuft alles noch ruckelfrei, bis die neu erstellte Palme im Bild sichtbar wird; dann ruckelt es auf einmal...
Gratis Spiele, Musik, Tools

Xeres

Moderator

BeitragSa, Mai 09, 2009 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kopierst die Palme ca. 60 mal in der Sekunde so wie es jetzt aussieht -> das hält kein Rechner wirklich lange aus. PlaceEntities() vor die Hauptschleife wäre besser Wink
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Dice of Darkness

BeitragSa, Mai 09, 2009 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Super vielen Dank Xeres, das mit der Hauptschleife hatte ich nicht bedacht (und ich hab schon befürchtet, ich müsste in Zukunft jedes Objekt, das mehr als einmal vorkommt, neu benennen und platzieren Embarassed )

Danke nochmal Very Happy!
Gratis Spiele, Musik, Tools

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group