1 registered members (Akow),
1,361
guests, and 9
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: bone animation
[Re: sebbi91]
#280893
07/24/09 15:04
07/24/09 15:04
|
Joined: Aug 2003
Posts: 7,439 Red Dwarf
Michael_Schwarz
Senior Expert
|
Senior Expert
Joined: Aug 2003
Posts: 7,439
Red Dwarf
|
you have to animate the body parts seperatly. i.e:
walk_legs, walk_torso, walk_head stand_legs, stand_torso, stand_head, etc, if not, you will get that weird adding of angles
"Sometimes JCL reminds me of Notch, but more competent" ~ Kiyaku
|
|
|
Re: bone animation
[Re: Michael_Schwarz]
#280894
07/24/09 15:21
07/24/09 15:21
|
Joined: Jun 2008
Posts: 402 Germany
sebbi91
OP
Senior Member
|
OP
Senior Member
Joined: Jun 2008
Posts: 402
Germany
|
the problem is i did what you say! every animation is seperatly and only animate one bodypart!
the basic animation "stand" animates only the body!(arms and head don't appear) and if i add one Animation all works fine! (left arm is seperatly animated too)
But if i animate 2 ADD animations at the same time i got this horrible angle bug!
Cant get it working since 4 days!
3D-Gamestudio A8 - Commercial
|
|
|
Re: bone animation
[Re: sebbi91]
#280911
07/24/09 16:24
07/24/09 16:24
|
Joined: Sep 2006
Posts: 99 BS, Germany
Storm_Mortis
Junior Member
|
Junior Member
Joined: Sep 2006
Posts: 99
BS, Germany
|
hi, also zum einen würde ich dir empfehlen nur Ober- und Unterterkörper seperat zu animieren, sonst sieht das sehr unnatürlich aus. Du weist sicher ... aufgerichteter "stehender" brustkorb, kniehende beine und waffe aufheben ... sztock im hintern und so^^ besser also eine aufheb anim ation für den gesammten oberkörper. zum 2. - ich weiß nicht wie dein modell und die animationen aussehen, aber du musst in jedem fall darauf achten das wenn du einen teil des körpers per addition animieren möchtest, das alles andere in der ausgangsstellung ist und bleibt. bei addierung werden ja alle winkel und posiotionen addiert. und zwar zum jetzigen wert. wenn du alles so gemacht hast, sei bitte nicht beleidigt, dachte nur besser es zu erwähnen falls es nicht so sein sollte ansonsten probiere mal das bone "resetten" fals du das noch nicht probiertest, gugg einfach ins handbuch für einzelheiten. hoffe dir hilft irgendwas hiervon^^
Last edited by Storm_Mortis; 07/24/09 16:25.
it found a voice ... now it needs a body
|
|
|
Re: bone animation
[Re: Storm_Mortis]
#281080
07/25/09 12:22
07/25/09 12:22
|
Joined: Jun 2008
Posts: 402 Germany
sebbi91
OP
Senior Member
|
OP
Senior Member
Joined: Jun 2008
Posts: 402
Germany
|
Keine Angst ich bin nicht beleidigt ^^ Allerdings ist es genau so wie du geschrieben hast! Ich erklär es jetzt mal ganz genau auf deutsch(bin nicht so gut in englisch) Also Ich habe einen Spieler welcher standartmäßig 2 Animationen abspielt! "Stand" und "walk" bei der stand animation wird nur der Brustkorb animiert und bei der walkanimation nur die Beine! Genau wie du gesagt hast, damit es natürlicher aussieht ^^ so!weiter gehts! Mein Spieler besteht aus nur einem Modell und deswegen muss ich Arme,Kopf und Beine einzeln animieren was ich mit bone animationen und Bone rotate mache! Früher hatte ich seperate Modelle welche ich dann einzeln ansteuern konnte! Heute benutze ich wegen dem Realismus und besseren aussehen das Bone manipulationsprinzip! In meinem Spiel kann der Spieler sich entscheiden welche Waffe er in welche Hand nimmt, so wie damals in Halo2 für die Xbox! daher muss auch beim aufheben jeder Arm einzeln animiert werden was ich mit ANM_ADD mache! Dabei wird NUR der Arm bewegt Brustkorb Kopf und Beine bleiben unverändert animiert! wenn der Spieler nun die Waffe aus dem holster nimmt animiert er logischerweise ja nur den linken arm da er sie ja auch mit der linken Hand eingesteckt hat! Wie bereits erwähnt funktioniert dieses Prinzip relativ gut! Nun kommt das Problem! Hat der Spieler allerdings 2 Waffen aufgesammelt muss er ja logischerweise den linken arm via ANM_ADD und den rechten Arm via ANM_ADD animieren, damit beide Arme sich die für sie bestimmten waffen holen! Und da scheint mein Script einen Fehler zu haben! Denn erst wenn ich beide Arme gleichzeitig animiere verdrehen sich beide Arme komisch! der Befehl Bone_reset (welcher bei der einmaligen animation notwendig war) zeigte hier allerding keine besonders große wirkung! Meine Frage an alle die jetzt mitgelesen haben: hat jemand irgendein funktionierendes Script wo: -eine Basisanimation abegspielt wird -und 2 Zusatzanimtionen ZEITGLEICH hinzugefügt werden! oder kann jemand helfen mein Script zu korrigieren! Hier eine ausführlichere Variante aus meinem Script
function interactionssystem_p2() { /////////////////////////////////////////////////////////////// // define the Interactionsrange .... //add here a Interactionssystem(weappickup,Objekt pickup)
///ANIMATE Weapon take //////////////////////// //CALL HERE THE WEAP TAKE [ONE-HAND-WEAPONS] ////////////////////////
//left1 if(slot_active_p2==1&&slotchange_var_p2==1&&slot1_lefthand_used_p2==1&&slot1_righthand_used_p2==0) { ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right");//delete this entry later
//TAKE //NOTE: PICKUP adn Take animation is the same if(take_left_anim<100) { ent_animate(my,"t_leftehw_h",take_left_anim, ANM_ADD); // animiere das Modell (benutze "turn") take_left_anim+=8*time_step; } if(take_left_anim>=100) { //BUG-Line ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right");//delete this entry later // take_left_anim=100; position_slot1_leftweap_p2=1; ent_animate(my,"h_leftehw",1, ANM_ADD); // animiere das Modell (benutze "turn") } if(arm_left_angle_p2.tilt!=camera2.tilt&&take_left_anim==100)//&&take_ehw_anim >=80 { ent_bonerotate(my,"arm_up_left",arm_left_angle_p2); arm_left_angle_p2.tilt+=30*time_step; } if(arm_left_angle_p2.tilt>=camera2.tilt+80&&take_left_anim==100)//&&take_ehw_anim >=80 { arm_left_angle_p2.tilt=camera2.tilt+80; } } //PUTAWAY ///////// if(slot_active_p2==0&&slotchange_var_p2==1&&slot1_lefthand_used_p2==1&&slot1_righthand_used_p2==0&&take_left_anim>0) { if(arm_left_angle_p2.tilt>=0) { ent_bonerotate(my,"arm_up_left",arm_left_angle_p2); arm_left_angle_p2.tilt-=30*time_step; } if(arm_left_angle_p2.tilt<=0)//animate th take proces with tilt° { arm_left_angle_p2.tilt=0; //animate_put_ehw=0; } if(take_left_anim>0&&arm_left_angle_p2.tilt<=0) { ent_bonereset_branch(my,"arm_up_right");//delete this entry later ent_bonereset_branch(my,"arm_up_left"); ent_animate(my,"t_leftehw_h",take_left_anim, ANM_ADD); // animiere das Modell (benutze "turn") take_left_anim-=8*time_step; } if(take_left_anim<=33.33) { position_slot1_leftweap_p2=2; } if(take_left_anim<=0 && arm_left_angle_p2.tilt==0) { take_left_anim=0; position_slot1_leftweap_p2=2; } } /////////////////////////////////////////////////////////////// //right1 if(slot_active_p2==1&&slotchange_var_p2==1&&slot1_righthand_used_p2==1&&slot1_lefthand_used_p2==0) { ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right");//delete this entry later
//TAKE //NOTE: PICKUP adn Take animation is the same if(take_right_anim<100) { ent_animate(my,"t_rightehw_h",take_right_anim, ANM_ADD); // animiere das Modell (benutze "turn") take_right_anim+=8*time_step; } if(take_right_anim>=100) { //BUG-Line ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right");//delete this entry later
// take_right_anim=100; position_slot1_rightweap_p2=1; ent_animate(my,"h_rightehw",1, ANM_ADD); // animiere das Modell (benutze "turn") } if(arm_right_angle_p2.tilt!=camera2.tilt&&take_right_anim==100)//&&take_ehw_anim >=80 { ent_bonerotate(my,"arm_up_right",arm_right_angle_p2); arm_right_angle_p2.tilt+=30*time_step; } if(arm_right_angle_p2.tilt>=camera2.tilt+80&&take_right_anim==100)//&&take_ehw_anim >=80 { arm_right_angle_p2.tilt=camera2.tilt+80; } } //PUTAWAY ///////// if(slot_active_p2==0&&slotchange_var_p2==1&&slot1_righthand_used_p2==1&&take_right_anim>0&&slot1_lefthand_used_p2==0) { if(arm_right_angle_p2.tilt>=0) { ent_bonerotate(my,"arm_up_right",arm_right_angle_p2); arm_right_angle_p2.tilt-=30*time_step; } if(arm_right_angle_p2.tilt<=0)//animate th take proces with tilt° { arm_right_angle_p2.tilt=0; //animate_put_ehw=0; } if(take_right_anim>0&&arm_right_angle_p2.tilt<=0) { ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right");//delete this entry later
ent_animate(my,"t_rightehw_h",take_right_anim, ANM_ADD); // animiere das Modell (benutze "turn") take_right_anim-=8*time_step; } if(take_right_anim<=33.33) { position_slot1_rightweap_p2=2; } if(take_right_anim<=0 && arm_right_angle_p2.tilt==0) { take_right_anim=0; position_slot1_rightweap_p2=2; } }
//HERE IS IT HTE PROBLEM KOMBINATION /////////////////////////////////////////////////////////////// //left1 &right1 if(slot_active_p2==1&&slotchange_var_p2==1&&slot1_lefthand_used_p2==1&&slot1_righthand_used_p2==1) { ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right");
//TAKE //NOTE: PICKUP and Take animation is the same if(take_left_anim<100) { ent_animate(my,"t_leftehw_h",take_left_anim, ANM_ADD); ent_animate(my,"t_rightehw_h",take_left_anim, ANM_ADD); take_left_anim+=8*time_step; } if(take_left_anim>=100) { //BUG-Line ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right");//delete this entry later // take_left_anim=100; position_slot1_leftweap_p2=1; position_slot1_rightweap_p2=1; ent_animate(my,"h_leftehw",1, ANM_ADD); // animiere das Modell (benutze "turn") ent_animate(my,"h_rightehw",1, ANM_ADD); // animiere das Modell (benutze "turn") } if(arm_left_angle_p2.tilt!=camera2.tilt&&take_left_anim==100)//&&take_ehw_anim >=80 { ent_bonerotate(my,"arm_up_left",arm_left_angle_p2); arm_left_angle_p2.tilt+=30*time_step; } if(arm_left_angle_p2.tilt>=camera2.tilt+80&&take_left_anim==100)//&&take_ehw_anim >=80 { arm_left_angle_p2.tilt=camera2.tilt+80; } //right angles if(arm_right_angle_p2.tilt!=camera2.tilt&&take_left_anim==100)//&&take_ehw_anim >=80 { ent_bonerotate(my,"arm_up_right",arm_right_angle_p2); arm_right_angle_p2.tilt+=30*time_step; } if(arm_right_angle_p2.tilt>=camera2.tilt+80&&take_left_anim==100)//&&take_ehw_anim >=80 { arm_right_angle_p2.tilt=camera2.tilt+80; } } //PUTAWAY ///////// if(slot_active_p2==0&&slotchange_var_p2==1&&slot1_lefthand_used_p2==1&&slot1_righthand_used_p2==1&&take_left_anim>0) { if(arm_left_angle_p2.tilt>=0&&arm_right_angle_p2.tilt>=0) { arm_left_angle_p2.tilt-=30*time_step; arm_right_angle_p2.tilt-=30*time_step; ent_bonerotate(my,"arm_up_left",arm_left_angle_p2); ent_bonerotate(my,"arm_up_right",arm_right_angle_p2); } if(arm_left_angle_p2.tilt<=0&&arm_right_angle_p2.tilt<=0)//animate th take proces with tilt° { arm_left_angle_p2.tilt=0; arm_right_angle_p2.tilt=0; } if(take_left_anim>0&&arm_left_angle_p2.tilt<=0) { ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right");//delete this entry later
ent_animate(my,"t_leftehw_h",take_left_anim, ANM_ADD); // animiere das Modell (benutze "turn") ent_animate(my,"t_rightehw_h",take_left_anim, ANM_ADD); // animiere das Modell (benutze "turn") take_left_anim-=8*time_step; }
if(take_left_anim<=33.33) { position_slot1_leftweap_p2=2; position_slot1_rightweap_p2=2; } if(take_left_anim<=0 && arm_left_angle_p2.tilt==0 && arm_right_angle_p2.tilt==0) { take_left_anim=0; position_slot1_leftweap_p2=2; position_slot1_rightweap_p2=2; }
}
//add her the weapons postions, it means //position_slot1_leftweap_p2=1 //weapon is in the Hand //position_slot1_leftweap_p2=2 //weapon is in the Holster }
//some other arguments and functions ....
action player2() { p2=me; my.scale_x=0.09; my.scale_y=0.09; my.scale_z=0.09;
set(my,POLYGON|CAST); my.emask|=ENABLE_SHOOT|ENABLE_BLOCK|ENABLE_IMPACT|ENABLE_ENTITY; vec_for_bone(head_angle_p2,my,"head");//set an ANGLE for the Head rotation vec_for_bone(breast_angle_p2,my,"breast");//set an ANGLE for the Head rotation camera2.pan=0; camera2.tilt=0; camera2.roll=0; my.push=5; my.health =100; my.stamina =100; my.fat =0; my.force =1; my.muscles =1; my.jumphigh = 39; my.ground=1;
var jump_possible=0;//allow only to jump if the player stands on the ground var jumpcounter=0;//count the high the player is jumped var jump_block=0;//the player has to wait a moment var power_jump=4; //if the Player walks he could jump higher
draw_textmode("arial",1,15,100); //This sets the text messagesgind of Player2 while(p2.health>0) { health_p2=my.health; //calculate my.skills to vars for digits and outcast functions ground_p2=my.ground; /////////////////////////////////////////////////////////////// // DEFINES the Movement first /////////////////////////////////////////////////////////////// human_gravity();
if((key_enter==1&&my.ground==1&&jump_block==0)||(jump_possible==1))//selvholding { jump_possible=1; }
if(jump_possible==1&&jumpcounter<=my.jumphigh) { jumpcounter+=power_jump; jump_block=50; my.distanz_z=3*time_step; if(key_cuu) { power_jump=2.75; my.distanz_x=8*(key_cuu)*time_step; } else{power_jump=4;} } else { jump_possible=0; jumpcounter=0; my.distanz_x=5*(key_cuu-key_cud)*time_step; my.distanz_y=5*(key_cul-key_cur)*time_step; my.distanz_z=time_step*my.force_z; jump_block-=1; if(jump_block<=0) { jump_block=0; } }
distanz_p2.x=my.distanz_x; distanz_p2.y=my.distanz_y; distanz_p2.z=my.distanz_z; c_move(my,distanz_p2,nullvector,IGNORE_PASSABLE|IGNORE_PUSH |GLIDE);
/////////////////////////////////////////////////////////////// // DEFINES the Animations /////////////////////////////////////////////////////////////// //important-first animate the body and the legs before //animating the head or the arms
if(key_cuu-key_cud) { ent_animate(my, NULL, 0, 0); walkanim_p2 += 6 * time_step; ent_animate(my, "walk", walkanim_p2, ANM_CYCLE); } else { ent_animate(my, NULL, 0, 0); standanim_p2 += 1 * time_step; ent_animate(my, "stand ", standanim_p2, ANM_CYCLE); } if(key_cul-key_cur) { ent_animate(my, NULL, 0, 0); walkanim_p2 += 6 * time_step; ent_animate(my, "walk", walkanim_p2, ANM_CYCLE); / }
if(key_e==1) { ent_bonereset_branch(my,"arm_up_left"); ent_bonereset_branch(my,"arm_up_right"); pushanim_p2 +=6 *time_step; ent_animate(my, "punch", pushanim_p2, ANM_ADD); } if(!key_e) { pushanim_p2=0; }
/////////////////////////////////////////////////////////////// // DEFINES the Angles ///////////////////////////////////////////////////////////////
camera2.pan-=8*(mouse_force.x)*time_step; camera2.tilt+=8*(mouse_force.y)*time_step; p2.pan=camera2.pan; head_angle_p2.roll=0; head_angle_p2.pan=0; head_angle_p2.tilt=camera2.tilt; ent_bonereset(my,"Head"); ent_bonerotate(my,"Head",head_angle_p2);
if(camera2.tilt>=90) { camera2.tilt=90; } //The Player shouldn't see behind him self if(camera2.tilt<=-81) { camera2.tilt=-81; }//The Player shouldn't see through him self //IMPORTANT Add all other Definitions and Funktions (Weapons) AFTER the Movement //because the Weapons need an aktually Position to set
//This functions are for Salvemode,Automatic,halfautomatik if(mouse_left==1) { lefthand_firemode_p2+=1; lefthand_firemode_p2 = maxv(lefthand_firemode_p2,0); } if(mouse_left==0) { lefthand_firemode_p2=1; } if(mouse_right==1) { righthand_firemode_p2+=1; righthand_firemode_p2 = maxv(righthand_firemode_p2,0); } if(mouse_right==0) { righthand_firemode_p2=1;}
interactionssystem_p2(); vec_for_vertex(camera2.x,p2,735);
wait(1); } }
Sorry für den Aufsatz aber ich hoffe das es etwas gebracht hat und mir jemand helfen kann wenn ich mein Problem besser schildere! Ich persönlich glaube es liegt am Script und nicht die Animation! Danke schon mal für die Hilfe ^^
Last edited by sebbi91; 07/25/09 12:56.
3D-Gamestudio A8 - Commercial
|
|
|
Re: bone animation
[Re: hopfel]
#281084
07/25/09 12:46
07/25/09 12:46
|
Joined: Jun 2008
Posts: 402 Germany
sebbi91
OP
Senior Member
|
OP
Senior Member
Joined: Jun 2008
Posts: 402
Germany
|
ist es noch! Schau mal unter Player2() da ist ein grün markiertes stück script das sind die Grundanimationen von den ich rede und weiter unten wird via interactionssystem_p2(); die zusatzanimationen eingebunden (rot markiert)
Also eine Grundanimation besteht auf jeden Fall! (denk ich)
Trotzdem danke für dein Versuch^^
3D-Gamestudio A8 - Commercial
|
|
|
Re: bone animation
[Re: hopfel]
#281088
07/25/09 13:13
07/25/09 13:13
|
Joined: Jun 2008
Posts: 402 Germany
sebbi91
OP
Senior Member
|
OP
Senior Member
Joined: Jun 2008
Posts: 402
Germany
|
sorry aber macht keinen großen Unterschied!
3D-Gamestudio A8 - Commercial
|
|
|
Re: bone animation
[Re: hopfel]
#281112
07/25/09 15:46
07/25/09 15:46
|
Joined: Sep 2006
Posts: 99 BS, Germany
Storm_Mortis
Junior Member
|
Junior Member
Joined: Sep 2006
Posts: 99
BS, Germany
|
alos ich hatte soetwas mal, hatte oberkörper, unterkorper und dann noch einzelne kleine anims dazuaddiert. aber ic hhabe kein plan wo ich das habe, ist eh wenn auf meinem gerade grafikkarte losem rechner -.-
aber bei mir tats super, mein char konnte halt beim laufen oder schlagen noch was sagen mit gedsichtsanimationen die per anm_add gemacht waren...
sollte ich es noch aufem notebook haben, lasse ich es dir zukommen, aber ich glaube hier ist es nicht...
und sry, zeit deinen code zu korigieren habe ich leider nicht...
it found a voice ... now it needs a body
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|