KEine animation??

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Xalon

Betreff: KEine animation??

BeitragFr, Dez 24, 2004 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,bei dem code kommt immer:"Entity has no animation"
und "Animate beine,1,3,geh,6" wird makiert

WARUM?
Code: [AUSKLAPPEN]
Graphics3D 1024,768,0,1
t=CreateTimer(60)
SetBuffer BackBuffer()
camera=CreateCamera()
gsch#=0.5
gsch1#=0.6





to1=LoadAnimMesh("kampf.b3d")
beine=searchentity("beine",to1)
geh=LoadAnimSeq(beine,"mann.b3d")




Animate beine,1,3,geh,6
PositionEntity camera,0,25,-60


While Not KeyHit(1)
    If KeyDown (200) MoveEntity To1,0,0,gsch
    If KeyDown (208) MoveEntity To1,0,0,-gsch
    If KeyDown (205) MoveEntity to1,gsch,0,0
    If KeyDown (203) MoveEntity to1,-gsch,0,0
    If KeyDown (30) MoveEntity to1,0,gsch,0
    If KeyDown (44) MoveEntity to1,0,-gsch,0 
   
    If KeyDown (31) TurnEntity to1,gsch1,0,0
    If KeyDown (45) TurnEntity to1,-gsch1,0,0
   
    If KeyDown (46) TurnEntity to1,0,gsch1,0
    If KeyDown (47) TurnEntity to1,0,-gsch1,0
   
    If KeyDown (32) TurnEntity to1,0,0,-gsch1
     If KeyDown (33) TurnEntity to1,0,0,gsch1
 UpdateWorld
 RenderWorld
 WaitTimer t
 Flip
Wend

ClearWorld
End






Function searchEntity(name$,me)
;wenn nach meinem Namen gesucht wird dann gebe "mich" zurück
If EntityName(me) = name$ Then Return me

;alle meine Kinder zählen
n = CountChildren(me)
For i=1 To n
;kind holen
child = GetChild(me,i)
;kind fragen (rekursion)
ret = searchEntity(name$,child)
;wenn das kind sagt "ich bins" dann die Antwort zurückgeben
If ret Then Return ret
Next
Return False
End Function

 


Xalon
 

GeGenesis

BeitragFr, Dez 24, 2004 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Die beine haben anscheinent keine animation Rolling Eyes Rolling Eyes Rolling Eyes

Xalon

BeitragFr, Dez 24, 2004 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber warum net ist meine frage.ich hab doch:

Code: [AUSKLAPPEN]

geh=LoadAnimSeq(beine,"mann.b3d")


Xalon

Vertex

BeitragFr, Dez 24, 2004 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur so nebenbei, warum besnutzt du nicht FindChild?
vertex.dreamfall.at | GitHub

Xalon

BeitragFr, Dez 24, 2004 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Die function hab ich aus dem forum.Kann mir keiner antworten?

Vertex

BeitragSa, Dez 25, 2004 3:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Childs die du da suchst sind Pivots bzw. die Bones/Joints in dein Modeller. Diese haben keine Animation, nur das mit LoadAnimMesh geladene Entity selber hat eine Animation. Und die Funktion aus dem Board ist schwachsinn. Benutze einfach FindChild.
mfg olli
vertex.dreamfall.at | GitHub

Xalon

BeitragSa, Dez 25, 2004 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Also geht des net(oder ich habs falsch verstanden Wink ),oder?

Klaas hat Folgendes geschrieben:
Bones kann man nicht einzeln anfügen.
Man kann nur Körper mit Boneanimation laden.

So eine Struktur sind dann folgendermaßen aus

Hülle (das ist der eigentliche Körper)
|-- Hüfte (jetzt kommen nur noch Bones)
|-- unterer Körper
| |--linkes bein
| | |-- etc. rest vom Bein abwärts
| |
| |--rechtes bein
| | |-- etc. rest vom Bein abwärts
| |
|-- oberer Körper
| |-- Brust
| | |-- linker Arm
| | |-- rechter Arm

etc. etc .

jeder Vertex der Hülle wird nun an ein oder mehrere Bones angehängt und verformt sich mit der Drehung/Bewegung des Bones.

mit diesem Code kannst du nun eine gewissen Bone finden


BlitzBasic:
Code: [AUSKLAPPEN]

FUNCTION searchEntity(name$,me)
;wenn nach meinem Namen gesucht wird dann gebe "mich" zurück
IF ENTITYNAME(me) = name$ THEN RETURN me

;alle meine Kinder zählen
n = COUNTCHILDREN(me)
FOR i=1 TO n
;kind holen
child = GETCHILD(me,i)
;kind fragen (rekursion)
ret = searchEntity(name$,child)
;wenn das kind sagt "ich bins" dann die Antwort zurückgeben
IF ret THEN RETURN ret
NEXT
RETURN FALSE
END FUNCTION



b3d = loadAnimMesh("meinB3D.b3d")
linkerArmBone = searchEntity("linkerArm",b3d)

wenn du nun ein passendes Animationsmuster für "linkerArm" und seine Childs hast kannst du einfach:

linkerArmAnim = LoadAnimSeq(linkerArm,"meineAnim.b3d")
Animate linkerArm,1,1,linkerArmAnim

... aber ...
die Animation ("das B3d file") darf nur bei linkerArm anfangen sonst passt die Animation natürlich nicht.

Das ist ganz schön ein gefummel .... du mußt selber ein wenig experementieren !


Xalon

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group