[B3D]Animation

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: [B3D]Animation

BeitragSa, Jun 20, 2009 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich habe ein Mesh mit Animation.
Auf Tastendruck "W" soll diese abgespielt werden. Klappt.
Aber wenn ich loslasse, bleibt diese Animation bei genau diesem Frame stehen.
Sie soll aber auf Frame 0 gesetzt werden.

Wie mache ich das?

Hier ein Code Ausschnitt:
Code: [AUSKLAPPEN]
   If KeyDown(17) Then
      MoveEntity player,0,0,.1
      If Not Animating(player) Then
         Animate player,1,.3,1,1
      EndIf
   EndIf
   If KeyDown(31) Then
      MoveEntity player,0,0,-.1
      If Not Animating(player) Then
         Animate player,1,-0.3,1,1
      EndIf      
   EndIf
   If KeyDown(30) Then MoveEntity player,-.1,0,0
   If KeyDown(32) Then MoveEntity player,.1,0,0
   
   If Not (KeyDown(17) Or KeyDown(31)) Then Animate player,0,0,0,0


Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Chrise

Betreff: Re: [B3D]Animation

BeitragSa, Jun 20, 2009 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Befehl Animate player,0,0,0,0
stimmt meiner Meinung nach nicht. Weil ein Parameter auf Stop gestellt ist.
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

N0X

BeitragSa, Jun 20, 2009 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, weil dort die Animation gestoppt wird.
(If NOT KeyDown ...)
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%
 

mDave

BeitragSa, Jun 20, 2009 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

   If Not (KeyDown(17) Or KeyDown(31)) Then SetAnimTime player,0


Sollte so klappen.

N0X

BeitragSa, Jun 20, 2009 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke!
Klappt ohne Probleme! Very Happy

//Edit:
Jetzt möchte ich eine Idle-Animation einbauen. (d.h. wenn nichts gedrückt wird, eine Animation im Loop durchlaufen lassen.)
Das habe ich schonmal versucht, bin daran aber gescheitert.
Wie mache ich das?
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

ToeB

BeitragSa, Jun 20, 2009 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Du unterteilst die animation in 2 Teile, eimal die animation an sich und den teil, wie die figur ausehen soll wenn sie steht. Das ganze tut man mit ExtractAnimSeq :
Code: [AUSKLAPPEN]
Dim seq(1)
seq(0) = ExtractAnimSeq(0,1) ; Stehen, Frame 0-1 ist normal
seq(1) = ExtractAnimSeq(1,5) ; Laufen, Frame 1-5 durch 1-n ersetzten (n=Animationslänge)


Jetzt animierst du das ganze mit Animate :

Code: [AUSKLAPPEN]
If KeyDown(17) ; "W"
If AnimSeq(mesh) <> Seq(1) ; wenn die abgespielte Sequenz nicht der Laufen sequenz entspricht
Animate mesh,1,0.3,Seq(1)
EndIf
Else ;wenn keine taste gedrückt
If AnimSeq(mesh) <> Seq(0) ; wenn die abgespielte Sequenz nicht der stehen sequenz entspricht
Animate mesh,1,0.3,Seq(0)
EndIf
EndIf


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

EwokonCrack

BeitragSa, Jun 20, 2009 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie funktionieren meine animationen nicht?! Hab den selben code benutzt und es will einfach nicht funktionieren.. arbeite da schon seit tagen dran und kriegs nicht hin. ich erstelle per interpolationskurve eine animation in blender; exportiere als *.b3d und lade den mesh mit loadanimmesh. wenn ichs jetzt animieren will passiert ganz einfach nichts.

*Edit: funktioniert auch mit keyframes nicht: entity has no animation
  • Zuletzt bearbeitet von EwokonCrack am Sa, Jun 20, 2009 16:47, insgesamt 2-mal bearbeitet

Chrise

BeitragSa, Jun 20, 2009 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
kp ob diese "interpolations"kurven exportiert werden oO
Wandle doch mal in Keyframes um oder machs gleich mit Keyframes.
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

Tankbuster

BeitragSa, Jun 20, 2009 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Animierst du das Mesh mit Bones, oder nur mit so Pos/Scale/Rot ?
Twitter
Download Jewel Snake!
Windows|Android

N0X

BeitragSa, Jun 20, 2009 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt mal wieder zum eig. Problem.
Klappt mit dem Code von ToeB nicht, da er die Animationen nicht abspielt. (Sieht danach aus als würde er nur den 1.Frame zeigen und nicht weiter machen, danach schaltet er wieder in den Idle-Modus)
Wieso das jetzt?
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Tankbuster

BeitragSa, Jun 20, 2009 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du denn auch geschrieben Zitat:
ExtractAnimSeq(Entity%,0,1)


ToeBs code kann nämlich nicht 1 zu 1 übernommen werden ^^


Wenn das nicht funktioniert, versuch mal sowas, einfach nur um zu testen, ob die Animationen überhaupt gehen:


Code: [AUSKLAPPEN]
Graphics3D 800,600,0,0
SetBuffer(Backbuffer())
Cam=Createcamera():MoveEntity Cam,0,0,-10
Light=Createlight()

Entity=LoadAnimMesh("Blub.b3d")
ExtractAnimSeq(Entity,1,20)
Animate Entity,......
While Not Keydown(1)


RenderWorld()
Flip
Wend
Twitter
Download Jewel Snake!
Windows|Android
  • Zuletzt bearbeitet von Tankbuster am So, Jun 21, 2009 11:01, insgesamt einmal bearbeitet
 

EwokonCrack

BeitragSo, Jun 21, 2009 10:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine animation ist eine simple rot/loc animation..

N0X

BeitragSo, Jun 21, 2009 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Na klar!
So doof bin ich jetzt auch nicht Razz
Und die Ani's klappen sonst super!
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Tankbuster

BeitragSo, Jun 21, 2009 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Nja, ich würde Animationen immer anders bewerkstelligen. Das mit AnimSeq(mesh) ist doch viel zu kompliziert ^^

Ich mach das immer so:

Code: [AUSKLAPPEN]

[...]
old_anim=anim

anim=1 ;das wäre z.b. die Stehen-Animation, die immer kommt, wenn man keine Taste drückt ;)
If KeyDown(200) Then anim=2  ;Zum Beispiel die Laufen animation
If MouseDown(1) Then anim=1 ;Und das zum Beispiel als Angriffs-Animation

If anim<>old_anim Then Animate mesh,bla,bla,anim ;Und hier wird nur geschaut, ob sich die Animation geändert hat, und die neue wird -wenn dem so ist- gestartet.
[...]


Das ist natürlich nur ein Beispiel, aber so sollte man es meiner Meinung nach machen. Die Animation wird nur abgespielt, wenn sich die Animation an sich ändert. Mehr will man ja nicht
Twitter
Download Jewel Snake!
Windows|Android

N0X

BeitragFr, Jun 26, 2009 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Geil, das klappt bestens!
Danke!

Sorry für späten Post.
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group