Streams
Radiomeddelanden
gQ guide: Grundläggande animationer
Inlägg skrivet av Granquist den 2010-04-01 20:58
Det första vi skall göra är att skapa en text fil som heter model.cfg Det är animationernas "config" fil kan vi kalla det.

Model.cfg består av två delar, "skelett" och "animations".
Skelett kan man säga är hur delar hör ihop och ser ut ungefär såhär om vi vill göra med en kropp.

"kropp",""
"arm","kropp",
"hand",arm",
"fingrar", "hand"


Det betyder att kroppen rör sig, men helt oberoende av andra. Armen kan röra sig på sitt sätt, men sitter "fast i kroppen". Handen sitter kan röra sig själv men sitter fast i armen osv.

I spelet rent praktiskt kan man säga att brukar se ut såhär för en stridsvagn.

"förarens_lucka",""
"torn",""
"eldrör","torn"
"skyttens_lucka","torn"


Hur än tornet snurrar kommer ju förarens lucka vara på samma ställe, men däremot eldröret och skyttens lucka sitter på tornet, därför skall dessa länkas.

Under animationerna sen beskrivs "kortfattat" hur saker skall röra sig. T ex tornet skall snurra 360 grader och "loopas". Medans eldröret kan åka upp och ned, ingen loop.

För dessa två kan koden se ut så här:


class main_trav {
type = "rotationY";
source = "mainTurret";
selection = "main_trav";
axis = "main_trav_axis";
memory = 1;
sourceAddress = "loop";
minValue = "rad -360";
maxValue = "rad +360";
angle0 = "rad -360";
angle1 = "rad 360";
};

class main_elev {
type = "rotationX";
source = "mainGun";
selection = "main_elev";
axis = "main_elev_axis";
memory = 1;
sourceAddress = "clamp";
minValue = "rad -8.5";
maxValue = "rad 50";
angle0 = "rad -8.5";
angle1 = "rad 50";
};




Tanken med denna guiden är inte att vi skall bli experter på att kopiera mina exempel utan lära oss och förstå.
Därför tar vi en titt lite nämre på följande.

type = "rotationX"; Hur skall den animeras, skall den rotera runt, åka upp och ned.
source = "mainGun"; Vad skall starta animationen, denna är kopplad till huvudkanonen.
selection = "main_elev"; Vilken del som rör sig på modellen
axis = "main_elev_axis"; Runt vad snurrar den.
memory = 1; Ligger punkterna i memorylod? 1 = true, 0 = false.
sourceAddress = "clamp"; Clamp är vanligast och loop.

Rekommenderad läsning för referens är:

http://community.bistudio.com/wiki/Model_Config

Här hittar de olika variablerna som kan användas för t ex source.

Nu återgår vi till våran båt och radarn, vi öppnar modellen, markerar den del som skall vara rader och döper till radar. Enkelt och logiskt, yes :)


I skelett behöver vi skriva dit att radarn skall röra på sig. Ser ut såhär.

class CfgSkeletons
{
class sfp_strb90_skelett
{
isDiscrete = 1;
skeletonInherit = "";
skeletonBones[] =
{
"radar", ""
};
};
};

För själva animationen finns nu en svårighet. Hur animera radarn, vi kan inte koppla den till speed och ha den snurrande baserat på vår hastighet. Här får man vara lite finurlig, ett knep är att koppla den till klockan, rättare sagt "minutvisaren". Sådan kod kan se ut så här:

class CfgModels {
class sfp_strb90
{
sectionsInherit = "";
sections[] = {""};
skeletonName = "sfp_strb90_skelett";
class Animations {

class radar {
type = "rotationY";
source = "clockMinute";
selection = "radar";
axis = "radar_axis";
memory = 0;
sourceAddress = "loop";
//minValue = "0";
//maxValue = "0.001";
angle0 = "0";
angle1 = "960* rad 360";
};
};
};



En annan guide som är väldigt lärorik är:

http://community.bistudio.com/wiki/ArmA:_How_to_animate_a_model
Kommentarer
Det finns inga kommentarer.
Skriv en kommentar
Du måste logga in för att skriva en kommentar.
Logga in
Användarnamn
Lösenord


Inte registrerad användare?
Klicka här för att registrera dig.

Förlorat lösenordet?
Begär ett nytt här.
Servers