Md2 Animation Läuft nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Flausch96

Betreff: Md2 Animation Läuft nicht

BeitragSo, Jul 17, 2011 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,

Hab ein Problem mit der animation von md2 Dateien. Warum bekomm ich die Animation nicht zu Laufen ?
Das objekt ist aus dem samples order, und in dem beispiel dort Läuft die Animation (simple Md2 Animation)

Hier ist mein Code :
BlitzBasic: [AUSKLAPPEN]
Graphics3D 640,480,1
SetBuffer BackBuffer()


Camera = CreateCamera()
PositionEntity camera,5000,500,5000
CameraRange Camera, 0.1, 10000000


terrain = LoadTerrain("Terrain\Höhenkarte.bmp")
PositionEntity terrain,0,0,0
ScaleEntity terrain,30,350,30

light = CreateLight(2)
PositionEntity light,0,0,0
LightRange light,60000

Sky = CreateSphere(32)
PositionEntity sky,0,1000,0
ScaleEntity sky,100000,100000,100000
FlipMesh sky
EntityOrder sky,100

wasser = CreatePlane()
PositionEntity Wasser,0,150,0


pivotCharacter = CreatePivot()
Mensch = LoadMD2("objekte\Mensch.md2",pivotCharacter)
PositionEntity Mensch,EntityX(camera),EntityY(camera),EntityZ(camera)+1
EntityParent Mensch, Camera
ScaleEntity Mensch,0.01,0.01,0.01




terraintextur = LoadTexture("terrain\terraintextur.bmp")
EntityTexture terrain, terraintextur


Skytextur = LoadTexture("Texturen\sky.bmp")
EntityTexture sky, Skytextur


Repeat



While Not KeyHit(1)
If KeyDown(205) = 1 Then TurnEntity camera, 0, -11, 0
If KeyDown(203) = 1 Then TurnEntity camera, 0, 11, 0
If KeyDown(208) = 1 Then MoveEntity camera, 0, 0, -1.1
If KeyDown(200) = 1 Then MoveEntity camera, 0, 0, 1.1
x# = EntityX(camera)
y# = EntityY(camera)
z# = EntityZ(camera)
terra_y# = TerrainY(terrain, x#, y#, z#) + 5
PositionEntity camera, x#, terra_y#, z#


TurnEntity Sky,0,0.08,0

;Hier ist warscheinlich der Fehler

AnimateMD2 Mensch,1,1,0,1


RenderWorld
Flip
Wend
Until KeyHit(1)
End

Lobby

BeitragSo, Jul 17, 2011 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Es fällt sofort auf, dass BlitzBasic: [AUSKLAPPEN]
AnimateMD2 Mensch,1,1,0,1

in jedem Schleifendurchgang aufgerufen wird, sodass das Frame ständig auf 0 gesetzt wird. Dies ist eher suboptimal, da Du so von der Animation wenig sehen dürftest. Wie wäre es, AnimateMD2 vor der Hauptschleife einmal auszuführen?
Ferner scheint kein UpdateWorld vorhanden zu sein, welches für die Ausführung von Animationen allerdings essentiell wäre.
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

Flausch96

BeitragSo, Jul 17, 2011 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ok habe jetzt AnimateMd2 Mensch,1,1,0,1 vor die Hauptschleife gepackt und ubdate World hinzugefügt. klappt aber immer noch nicht. Crying or Very sad Crying or Very sad Crying or Very sad
 

pinochino

BeitragSo, Jul 17, 2011 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Die schleifen sind auch lustig xD

BlitzBasic: [AUSKLAPPEN]
Repeat  ; 1 schleife start



While Not KeyHit(1) ; 2 schleife start
If KeyDown(205) = 1 Then TurnEntity camera, 0, -11, 0
If KeyDown(203) = 1 Then TurnEntity camera, 0, 11, 0
If KeyDown(208) = 1 Then MoveEntity camera, 0, 0, -1.1
If KeyDown(200) = 1 Then MoveEntity camera, 0, 0, 1.1
x# = EntityX(camera)
y# = EntityY(camera)
z# = EntityZ(camera)
terra_y# = TerrainY(terrain, x#, y#, z#) + 5
PositionEntity camera, x#, terra_y#, z#


TurnEntity Sky,0,0.08,0

;Hier ist warscheinlich der Fehler

AnimateMD2 Mensch,1,1,0,1


RenderWorld
Flip
Wend ;2 schleife ende
Until KeyHit(1) ; 1 schleife ende
End


Warum ?
lg

Flausch96

BeitragSo, Jul 17, 2011 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hab jetz die while-wend schleife entfernt. Aber immer noch das gleiche problem.
 

pinochino

BeitragSo, Jul 17, 2011 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann dir bei deinem Problem leider nicht weiterhelfen, fand nur die 2 Schleifen einfach merkwürdig, hatten die denn irgendeinen Sinn ? Smile

lg
 

PhillipK

BeitragSo, Jul 17, 2011 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Siehst du denn deinen 'Mensch' überhaupt?
BlitzBasic: [AUSKLAPPEN]
terra_y# = TerrainY(terrain, x#, y#, z#) + 5
PositionEntity camera, x#, terra_y#, z#


das macht mich stutzig. wenn du fps hoch genug sind, ist im nu nixmehr zu sehen, da die kamera pro schleifendurchlauf um 5 Einheiten nach oben gesetzt wird. Bzw evtl runter, keine ahnung wie rum Very Happy Na jedenfalls, wenn dein programm zu schnell läuft, ist garnichts sichtbar.

Ansonsten, wie bereits angemerkt wurde,
BlitzBasic: [AUSKLAPPEN]
AnimateMD2 Mensch,1,1,0,1

das könnte der fehler sein.
Wenn du das jeden schleifenaufruf ausführst, so wird die animation 1x pro Frame auf den selben frame gesetzt - es geschieht einfach garnichts.

Laut hilfe ist der Standart start-frame 1. Vielleicht kann das auch ein fehler sein Smile Ich denke, ein versuch kann nicht schaden.

Ansonsten benötigen wir ein bisschen mehr, was zusammen mit dem Mesh steht. Vielleicht findet sich da ja noch ein fehlerchen Smile

Mfg, Phillipk

Flausch96

BeitragSo, Jul 17, 2011 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Werde ich morgen mal testen. Schreib euch dann ob's geklappt hat.

Sir Gauss der III

BeitragSo, Jul 17, 2011 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
kleine korrektur:

Zitat:
BlitzBasic:
BlitzBasic: [AUSKLAPPEN]

terra_y# = TerrainY(terrain, x#, y#, z#) + 5
PositionEntity camera, x#, terra_y#, z#



setzt nicht pro Schleifendurchgang die Camera nach oben - Terra_y erhält pro Durchgang nur die Terrainhöhe plus 5 (anders wäre es so: terra_y# = terra_y# + TerrainY(terrain, x#, y#, z#) + 5)


Wenn du rein gar nichts von dem Typ siehst, kann es daran liegen dass der Kameraabstand nicht stimmt (du also zu nah und somit IN dem Menschen steckst.

AnimateMD2 solltest du nochmals anschauen. Insbesondere die Parameter die zu übergeben sind.

AnimateMD2 Mesh , Modus , Geschw , Start , ENDE
Du spielst immer nur 2 Frames der bewegung ab. ich bin mir relativ sicher, dass das Objekt mehr hat. Evtl. ist die bewegung also nur zu gering als dass du sie wahrnehmen kannst.

Gruss Sir Gauss
 

PhillipK

BeitragMo, Jul 18, 2011 4:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Sir Gauss der III hat Folgendes geschrieben:
kleine korrektur:

Zitat:
BlitzBasic:
BlitzBasic: [AUSKLAPPEN]

terra_y# = TerrainY(terrain, x#, y#, z#) + 5
PositionEntity camera, x#, terra_y#, z#



setzt nicht pro Schleifendurchgang die Camera nach oben - Terra_y erhält pro Durchgang nur die Terrainhöhe plus 5 (anders wäre es so: terra_y# = terra_y# + TerrainY(terrain, x#, y#, z#) + 5)


Wenn du rein gar nichts von dem Typ siehst, kann es daran liegen dass der Kameraabstand nicht stimmt (du also zu nah und somit IN dem Menschen steckst.

AnimateMD2 solltest du nochmals anschauen. Insbesondere die Parameter die zu übergeben sind.

AnimateMD2 Mesh , Modus , Geschw , Start , ENDE
Du spielst immer nur 2 Frames der bewegung ab. ich bin mir relativ sicher, dass das Objekt mehr hat. Evtl. ist die bewegung also nur zu gering als dass du sie wahrnehmen kannst.

Gruss Sir Gauss


Oh entschuldigt, da war ich wohl müde.
Beim groben drüberlesen sah es nach Terrainhöhe an XYZ um 5 erhöhen, cam auf terrainhöhe setzen. Im nächsten durchlauf wieder.

Dieses Missverständnis tut mir leid und danke an Sir Gauss der III, das mein fehler aufgefallen ist, bevor ich Flausch96 zum falschen grübeln gebracht habe Smile

Flausch96

BeitragMo, Jul 18, 2011 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, habe nun die Parameter von AnimateMd2 geändert :
BlitzBasic: [AUSKLAPPEN]
AnimateMD2 Mensch,1,.19,14,0


Die Aninmation wird aber immer noch nicht abgespielt.

Sir Gauss der III

BeitragDi, Jul 19, 2011 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
vertausch mal die letzten beiden zahlen ...(start, ende der Animation)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group