Problem beim Animieren
Übersicht

KurzerBetreff: Problem beim Animieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Leute!
Wir (ein kumpel + ich) haben zur Zeit ein Problem beim Animieren, bzw. mehrere. Wir haben in einer .b3d Datei mehrere Animationen gespeichert (Frame 1-8 ist Laufen, 8-13 springen usw. usw.). Eines unserer Problem besteht darin, das die Figur beim vorwärts bzw. Rückwärtslaufen immer die ganze Animation (Frame 1 bis 13) und nicht nur die Laufani (Frame 1 bis 8) abspielt. Beim Springen dann ergibt es sich ein 2. Problem. Im 3D Programm (Blender) sind es 6 Frames. Wenn ich die Figur hier aber springen lasse spielt Blitz 3D gerade mal ein Frame ab und das geht so schnell, dass man es kaum sehen kann. Was können wir ändern, damit wird die beiden Probleme nicht mehr haben? Hier ist mal der Code: Code: [AUSKLAPPEN] Graphics3D 640,480,0,2
SetBuffer BackBuffer() main_cam=CreateCamera() CameraViewport main_cam,0,0,640,480 main_light=CreateLight(2,main_cam) LightRange main_light,50 Global objekt=LoadAnimMesh("Figur_Ani2.b3d") objekt_y=0 PositionEntity main_cam,0,0,0 PositionEntity main_cam,0,0,-1.5 ExtractAnimSeq objekt,1,8 ExtractAnimSeq objekt,9,13 anim_speed#=0.0 sprung_timer = 0 Repeat If KeyDown(30) ;forward If anim_speed<=0 anim_speed=0.05 Animate objekt,1,anim_speed EndIf Else If KeyDown(44) ;backward If anim_speed>=0 anim_speed=-0.05 Animate objekt,1,anim_speed EndIf Else ;stop animating anim_speed=0 Animate objekt,0,anim_speed=0 EndIf If KeyHit(57) And objekt_y<1 And objekt_y>-1 Then Animate objekt, 0, 0.02 ,0.51 EndIf If objekt_y > 0 Then objekt_y = objekt_y -1 EndIf If KeyDown(203) Then TurnEntity objekt,0,2,0 If KeyDown(205) Then TurnEntity objekt,0,-2,0 UpdateWorld() RenderWorld() Text 0,0,"Benutze Pfeiltasten und -A- und -Y-!" Flip Until KeyHit(1) End Mfg. Kurzer & Denny |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, du gibts die Sequenz bei Animate garnicht an. :O
http://www.blitzbase.de/befehle3d/animate.htm |
||
DennY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ The_Nici
Danke, nach eingehenderen Studien auf BlitzBase.de haben wir es dann rausgefunden. Code: [AUSKLAPPEN] .............. ;die Teilanimation entpacken Ani_Run = ExtractAnimSeq (objekt,1,8) Ani_Jump = ExtractAnimSeq (objekt,8,13) Repeat If KeyDown(30) ;forward If anim_speed<=0 anim_speed=0.05 Animate objekt,1,anim_speed, Ani_Run, 2 EndIf Else If KeyDown(44) ;backward If anim_speed>=0 anim_speed=-0.05 Animate objekt,1,anim_speed, Ani_Run, 2 EndIf Else If KeyDown(57) Then ;jump If anim_speed>=0 anim_speed=-0.05 Animate objekt,3,0.05, Ani_Jump, 2 EndIf Else ;stop animating anim_speed=0 Animate objekt,0,anim_speed=0 EndIf UpdateWorld() RenderWorld() Flip Until KeyHit(1) End Wir haben auch garnicht beachtet, dass Code: [AUSKLAPPEN] ExtractAnimSeq einen Wert zurückliefert.
|
||
Kurzer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo! Ich bins mal wieder! =)
Ich habe mal wieder ein kleines Problem mit einer Animation. Eigendlich ist es kein richtiges Problem, es ist eher ein Schönheitsfehler. Wenn die Spielfigur sich aus dem Stand dreht, so trampelt sie ein bisschen auf dem Boden rum, das Problem ist jetzt aber, dass sie, wenn sie die Animation neustarten soll (weil die Spielfigur sich ja weiterdreht), beginnt sie plötzlich ruckartig. Ich nehme an, dass liegt an de"Wartezeit" zwischen den Animationswiedergaben. Kann man dieses Effekt irgendwie wegmachen? Hier ein kleiner Codeausschnitt: Code: [AUSKLAPPEN] Else If KeyDown(203) ;left
TurnEntity objekt,0,1.5,0 If anim_speed<=0 anim_speed=0.1 Animate objekt,1,anim_speed, Ani_Turn, 0 EndIf |
||
Kurzer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, ich hab mir das nochmal genau angeguckt, und mir ist aufgefallen, das beim 2. Abspielen jede Animationen (auch laufen) ruckartig beginnt ... wie kann man das nur machen, das die schön hinterienader abgespielt werden ohne diese "Ruckler"?
Achja: Das ändern des Parameters von 'Animate' bewirkt gar nix ... |
||
![]() |
FreetimeCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Heyho,
Ich weiß nicht ob ihr drauf geachtet habt, aber in Blender habt ihr die Ani gesamt: 1-13 ani1: 1-8 ani2: 8-13 in BB wäre das dann: gesamt: 0-12 ani1: 0-7 ani2: 7-12 Das liegt daran, das Blender den frame 0 nicht kennt und immer bei 1 anfängt. Der Exporter setzt alles einen frame "zurück" (oder BB, ich weiß es nicht) Also fanen alle Animationen einen Frame früher an. Da liegt das Problem: Beim Loop wird immer ein frame von einer falschen Animation gespielt. Einfach die Werte anpassen. Dann sollte es funktionieren. (Hatte letztens das selbe Problem ![]() |
||
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte: Dexterity Ball (100%) Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz (ehemals Uboot) PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA |
Kurzer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
FreetimeCoder hat Folgendes geschrieben: Heyho,
Ich weiß nicht ob ihr drauf geachtet habt, aber in Blender habt ihr die Ani gesamt: 1-13 ani1: 1-8 ani2: 8-13 in BB wäre das dann: gesamt: 0-12 ani1: 0-7 ani2: 7-12 Das liegt daran, das Blender den frame 0 nicht kennt und immer bei 1 anfängt. Der Exporter setzt alles einen frame "zurück" (oder BB, ich weiß es nicht) Also fanen alle Animationen einen Frame früher an. Da liegt das Problem: Beim Loop wird immer ein frame von einer falschen Animation gespielt. Einfach die Werte anpassen. Dann sollte es funktionieren. (Hatte letztens das selbe Problem ![]() Danke, das war das Problem! Du hast mir (uns) sehr geholfen ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group