model nur auf tastendruck animieren

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

aave13

Betreff: model nur auf tastendruck animieren

BeitragSa, Jul 15, 2006 0:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BladeRunner

Moderator

BeitragSa, Jul 15, 2006 8:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jul 15, 2006 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, aber kann mir einer bitte ein beispiel prog schreiben, ich versteh das bis jetzt leider noch nicht, danke Smile

mfg

BladeRunner

Moderator

BeitragSo, Jul 16, 2006 9:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jul 16, 2006 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Smile


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

BeitragSo, Jul 16, 2006 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
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...

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group