model nur auf tastendruck animieren
Übersicht

aave13Betreff: model nur auf tastendruck animieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
moin,
habn problem, und zwar: ich will ein animiertes b3d model nur animieren lassen, wenn eine taste gedrückt wird. sobald sie losgelassen wird, soll es wieder aufhören zu animieren. dabei soll aber das model nur die frames 1-14 abspielen und danach wieder von 1 abspielen (bis 14 usw.). also die frames 1-14 stellen nen gang dar. wenn ich also die nach vorne taste drücke, dann soll die bewegung (nur 1-14 ; es gibt 300 frames^^) im loop abgespielt werden. mfg |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
siehe ql:loadanimmesh
ql:animate ql:extractanimseq ql:setanimtime |
||
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 |
aave13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, aber kann mir einer bitte ein beispiel prog schreiben, ich versteh das bis jetzt leider noch nicht, danke ![]() mfg |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest selbst eines schreiben und bei eventuellen Problemen nach genau diesen Fragen.
Es ist immer besser es selbst zu versuchen, denn grade aus Fehlern lernt man sehr viel. Ich selbst bin nicht grade die große Leuchte in 3D, aber ich erklär Dir mal wie ich das mit den Befehlen verstanden hab. Vielleicht funktioniert das so, aber keine Garantie: zunächst einmal lädst du mit Loadanimmesh Dein model und legst die Textur drüber (loadtexture, entitytexture). nun mittels extractanimseq Die Frames deiner Animation extrahieren (also Frame 0 - 13 oder 1-14, versuch es). Der Rückgabewert ist die Nummer der Animationssequenz. Für andere enthaltene Sequenzen gehst du analog vor. Nun kannst Du mittels animate dein model animieren (wenn Taste gedrückt und nicht animiert, dann animate...), wobei wahrscheinlich in einer loop das beste ist. Lies dir die Parameter durch und spiel damit rum. Wenn die Taste losgelassen wird musst Du nochmal animate machen, allerdings als stop-befehl (vorgehen wie oben...) Da ich nicht weiß ob animate eine Sequenz automatisch auf das erste Frame zurücksetzt hab ich noch setanimtime hinzugefügt, da ich vermute dass Du damit das Frame einstellen kannst. Ein 3D-Freak könnte Dir das sicher besser beantworten, aber mal im ernst: es kostet dich vielleicht 10 Minuten ein Testprogramm zu schreiben, also versuch es. Spiel mit den Befehlen rum. Studier die Beispiele in der Onlinehilfe. Viel Erfolg. |
||
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 |
aave13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
super danke... das wollte ich direkt nach dem post auch machen, war aber dann zu müde. egal, ich versuch das jetzt mal und poste es, vielleicht könnt ihr mir dann besser helfen! ![]() Code: [AUSKLAPPEN] ;##### - start - #####
Graphics3D 800,600,32,0 SetBuffer BackBuffer() ;##### - camera - ##### camera=CreateCamera() PositionEntity camera,0,3,0 ;##### - ninja - ##### ninja=LoadAnimMesh("ninja.b3d") PositionEntity ninja,0,0,3 ScaleEntity ninja,0.3,0.3,0.3 EntityParent camera,ninja ;##### - terrain - ##### terrain=CreateTerrain(16) ;##### - standart-animation(stand) - ##### ninja_stand=ExtractAnimSeq(ninja,1,14) Animate ninja,1,0.5 ;##### - main-loop - ##### While Not KeyHit(1) ;##### - movement-ninja - ##### key_up=KeyDown(200) key_down=KeyDown(208) key_left=KeyDown(203) key_right=KeyDown(205) If key_up=1 Then MoveEntity ninja,0,0,0.2 If key_down=1 Then MoveEntity ninja,0,0,-0.1 If key_left=1 Then TurnEntity ninja,0,1,0 If key_right=1 Then TurnEntity ninja,0,-1,0 ;##### - standart-animation - ##### ;ExtractAnimSeq(ninja,1,14) ;##### - ende - ##### UpdateWorld RenderWorld Flip Wend End so, das sieht jetzt folgendermaßen aus: dieser ninja soll immer die standartbewegung (frames 184-300) haben. wenn aber eine taste gedrückt wird (sagen wir die up taste), dann soll er eine loop bewegung (frames 1-14 [gehen]) machen. dasselbe mit zurückgehen und springen, aber das ergibt sich dann von selber, wenn ich das mit der uptaste (gehen) gerafft habe. aber bei mir funktioniert das noch nicht mit extractanimseq, womit ich einzelne frames (z.b. 1-14) rauspicken kann... hoffe ihr versteht mein vorhaben und könnt mir helfen mfg |
||
aave13 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab mir das nochmal angeguckt:
Code: [AUSKLAPPEN] ;##### - start - #####
Graphics3D 800,600,32,0 SetBuffer BackBuffer() ;##### - camera - ##### camera=CreateCamera() PositionEntity camera,0,3,0 ;##### - ninja - ##### ninja=LoadAnimMesh("ninja.b3d") PositionEntity ninja,0,0,3 ScaleEntity ninja,0.3,0.3,0.3 EntityParent camera,ninja ;##### - terrain - ##### terrain=CreateTerrain(16) ;##### - extrahierte animsequenzen - ##### anim_walk=ExtractAnimSeq(ninja,1,14) jump=ExtractAnimSeq(ninja,94,102) ;##### - main-loop - ##### While Not KeyHit(1) ;##### - movement-ninja - ##### Animate ninja,1,0.1,jump key_up=KeyDown(200) key_down=KeyDown(208) key_left=KeyDown(203) key_right=KeyDown(205) If key_up=1 Then MoveEntity ninja,0,0,0.2 If key_up=1 Then Animate ninja,1,0.1,anim_walk If key_down=1 Then MoveEntity ninja,0,0,-0.1 If key_left=1 Then TurnEntity ninja,0,1,0 If key_right=1 Then TurnEntity ninja,0,-1,0 ;##### - standart-animation - ##### ;##### - ende - ##### UpdateWorld RenderWorld Flip Wend End da funzt das schon auf tastendruck ne andere animation als die standartanimation(jump, nur aus testgründen^^), aber da spielt der jeweils nur das erste frame ab, so: standart:bewegungslos, frame 94 bei tastendruck : bewegungslos, frame 1 der animiert dann garnicht... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group