Animationsproblem
Übersicht

CarlTrottBetreff: Animationsproblem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe ein ähnliches Problem wie Bachi (ca. 9 Beiträge unter meinem). Ich habe das Problem in einer anderen Ecke dieses Forums schonmal angesprochen, bisher aber noch keine Lösung erhalten. Deshalb dachte ich mir, ich poste es nochmal hier. Vielleicht lesen es ja andere Leute und dem ein oder anderen fällt doch noch was ein... Also, erstmal der Code: (ihr braucht nur noch eine Textur für den Boden, um es bei euch laufen zu lassen) Code: [AUSKLAPPEN] Graphics3D 1280,1024,32,1 SetBuffer BackBuffer() ;;;Kamera camera=CreateCamera() RotateEntity camera,0,0,0 ;;;Licht light1=CreateLight() RotateEntity light1,90,0,0 light2=CreateLight() RotateEntity light2,90,0,0 ;;;Fläche plane=CreatePlane() PositionEntity plane, 0,0,0 ;;;Textur plane_tex=LoadTexture("Texturen\dgrey037.jpg") EntityTexture plane,plane_tex ScaleTexture plane_tex,10,10 While Not KeyHit (1) fdur# = 40 PositionEntity camera,0,10,0 If KeyHit (28) Then ;;; ENTER-Taste ;;;Zufallszahl auswählen SeedRnd MilliSecs() Zahl= Rand(1,2) If Zahl= 1 Then ;;;ANIMATION1 (30 Grad rechts) SetAnimKey camera,4000/fdur# PositionEntity camera,0,10,30 SetAnimKey camera,10000/fdur# SetAnimKey camera,11000/fdur# TurnEntity camera,0,-30,0 SetAnimKey camera,14000/fdur# SetAnimKey camera,15000/fdur# PositionEntity camera, 17.5,10,60.31088913 SetAnimKey camera, 22000/fdur# AddAnimSeq camera,22000/fdur# Animate camera,3 ElseIf Zahl=2 Then ;;;ANIMATION2 (30 Grad links) SetAnimKey camera,4000/fdur# PositionEntity camera,0,10,30 SetAnimKey camera,10000/fdur# SetAnimKey camera,11000/fdur# TurnEntity camera,0,30,0 SetAnimKey camera,14000/fdur# SetAnimKey camera,15000/fdur# PositionEntity camera, -17.5,10,60.31088913 SetAnimKey camera, 22000/fdur# AddAnimSeq camera,23000/fdur# Animate camera,3 EndIf EndIf UpdateWorld RenderWorld Text 0,20, "Zahl="+Zahl Text 0,40, "Camerayaw="+EntityYaw(camera) Text 0,80, "Animtime"+AnimTime#(camera) Text 0,100, "Millisekunden"+MilliSecs() Flip Wend End Zum Problem: Beim Drücken der ENTER-Taste soll zunächst per Zufall entweder die Zahl 1 oder 2 ausgewählt werden. Das klappt auch wunderbar (wie man am angezeigten Text erkennen dann). Dann soll, je nachdem welche Zahl ausgewählt wurde, eine von zwei Kamera-Animationen abgespielt werden. Sie sind ziemlich ähnlich, nur dass sich die Kamera bei der ersten Animation um 30 Grad nach rechts dreht und in der zweiten um 30 Grad nach links. Beim ersten ENTER spielt er auch die entsprechende Animation ab (also 30 Grad rechts, wenn die 1 ausgewählt wurde und 30 Grad links, wenn die 2 ausgewählt wurde). Wenn man jetzt aber nochmal ENTER drückt, wird zwar brav zufällig eine Zahl ausgewählt (s. Text), aber immer weiter die erste Animationsequenz abgespielt. Was kann man da machen? Ich glaube, das betrifft auch nur Animationen. Würde man auf diese Weise z.B. einen Gegenstand positionieren wollen, würde das problemlos gehen. Hab ich da irgendwas vergessen? Oder muss ich die Zahlen wieder löschen (fragt sich wie)? Oder liegt es vielleicht sogar daran, dass ich eine relativ alte BB-Version hab (vielleicht funktioniert es ja bei Leuten, die eine neuere Version haben)? Ich würd mich echt riesig über Ideen von euch freuen! |
||
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Carl,
Ich habs mir mal angeschaut, und leider kann ich die auch nicht sagen wo der Fehler liegt. Ich bin aber noch relativ neu dabei und habe noch null Erfahrung mit den Befehlen Animate und setAnimKey, deswegen kann ich dir leider nicht weiterhelfen. Was mich interessieren würde: Willst du einfach nur die Kamera bewegen? Dafür brauchst du diese Befehle gar nicht. Ich könnte mir nämlich vorstellen, das du Erfahrungen aus 'nem 3D Animationsprogramm auf Blitz überträgst und denkst, um etwas zu bewegen muss ich erst Keyframes erstellen und diese dann abspielen. |
||
CarlTrott |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ja, ich möchte nur die Kamera animieren. Mit welchen Befehlen könnte ich das denn sonst noch machen? Mir ist klar, dass ich über verschiedene Tastaturknöpfe auch die Kamera bewegen kann. Aber die Bewegung soll von alleine ablaufen (ohne, dass irgendwelche Steuerknöpfe gedrückt werden). Welche Befehle meinst du denn? Das würde ich damit dann gerne nochmal ausprobieren. Danke schonmal! |
||
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde dir empfehlen erstmal die grundlegenden Bewegungsbefehle auszuprobieren bis du sie komplett verstanden hast.
Das wären Positionentity,Translateentity,Moveentity,Scaleentity,Rotateentity und Turnentity. Baue eine Schleife, pack einen Cube rein und probiere die Befehle aus. Die Command Reference (F1) enthält zu jedem Befehl ein Beispiel. Wenn du die verstanden hast ( es ist wichtig, die Unterschiede zu verstehen, TurnEntity ist z.B. ganz anders als Rotateentity, auch wenn der Name anderes vermuten lässt), dann Versuche, sie gezielt zu benutzen um den Würfel das tun zu lassen was du willst, z.B. ein Viereck in der Luft beschreiben und sich dabei 3 mal um die X-Achse drehen. Wann welche Bewegung einsetzt und wie lange sie dauert, kannst du auf verschiedene Arten steuern. 1. Du lässt etwas x-mal geschehen, z.B. in einer For-Next Schleife 2. Du testest die Position des Cubes mit einer Bedingung, z.B. " If EntityX(cube) > 10 then Turnentity(cube... 3. Du machst das gleiche, aber testest die vergangene Zeit oder die Anzahl der Frames. Das wäre im Grunde nichts anderes als Keyframes setzen in einem Animationsprogramm. 4. Wenn das alles kein Problem mehr für dich darstellt, dann kannst du dich fortgeschritteneren Methoden der Bewegung zuwenden, im Codearchiv habe ich zum Beispiel eine Bezier Funktion für Butterweiche Kamerafahrten erstellt. Also, beschäftige dich erstmal mit den Grundlagen, es wird nicht lange dauern und du kannst jede Bewegung erzeugen die du willst ![]() |
||
CarlTrott |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
danke für die Tipps. Ich werd auf jeden Fall mal ausprobieren, mit diesen Befehlen die Kamerafahrt hinzukriegen (anders scheint es ja nicht zu gehen). Trotzdem nochmal ein Aufruf: Fällt wirklich keinem von euch was zu meinem eigentlichen Problem ein? (Was ist mit den Moderatoren?) ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Was ist mit den Moderatoren?
Sorry, nicht bös gemeint, aber wir sind auch nur Menschen und wissen zum einen nicht immer alles und zum anderen hat man auch nicht immer Lust sich mit allem intensiv zu beschäftigen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group