PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Patronen ausblenden, Waffenanimation


Frankyman
14.05.2010, 19:18
Hallo Leute.

Folgendes Problemchen:

Ich möchte die patronene beim schießen eines granatwerfers Ausblenden.
Eigentlich genauso wie die G36, M2 etc das in Arma2 auch machen.

Die animationsource ist dafür in den configs "revolving"

In der Model.cfg sind alle Bullets bereits definiert.

dies ist dann der eintrag in der class animation:
class bullet001
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet001";
axis="";
minValue = -1;
maxValue = 0;
minPhase = -1;
maxPhase = 0;
hideValue = 0.999;
};


nun scheint die source "revolving" einen wert von 0-1 zu liefern.
Wobei 1 magazine voll und 0 leer zu bedeuten scheinen.

Unter dieser config bleibt der Gurt unsichtbar. Meines erachtens ja klar, weill der wert -0.999 ja nie erreicht wird.

Das selbe problem tritt auch bei einer anderen Gelegenheit auf, und zwar dem Modell wechsel der Dammagereifen.

Die Ursache der beiden probleme scheint aber die selbe zu sein.
Wobei ich dann bei der reifen problematik dann das verschieben und versetzen/spiegeln etc der axen als lösung probiert habe, welches auch keinen erfolg hatte.

ich bin also für alle weiteren Lösungsansätze dankbar.

Mfg
Frankyman

modEmMaik
15.05.2010, 12:07
Oha... das weckt Erinnerungen.. :zahn:

Für A2 hab' ich das alles noch nicht im Detail ausprobiert, aber in der G82 (http://armed-assault.de/downloads/modemmaiks-g82.html) solltest Du die unbin Version finden. Darin sollte die Animation für den Verschluss drin sein, die auf dem gleichen Prinzip beruht (ebenso das Magazin). Ich hoffe mal, ich hab' das damals richtig gemacht...

Ansonten sollte sich Robert Hammer da einigermassen auskennen...
:angel:

Frankyman
15.05.2010, 12:14
Danke maik,

ich denke das ich den Fehler bzw die richtige einstellungen gefunden habe.

Sowohl das ausblenden der munition(patronen) als auch die "platte reifen" Animation inkl wechsel des models zu einem "destrukt Wheel" scheinen nun zu funktionieren.
Ich habe es noch nicht umfassend getestet, nur so mal nachgesehen.
werden es dann heute Abend noch mal genauer testen, ob sich nicht wo anders eine neue baustelle aufgetan hat.

Wenn gewünscht kann ich ja dann mal die config etc posten.

modEmMaik
15.05.2010, 12:32
Zu spät...
*hust* ich hab' mal meinen alte Rechner entstaubt
(Sagt das blos nicht I&C) :zahn:

In der G82 hab' ich das über die isEmpt Source gemacht, die rückmeldet, wenn ein Magazin leer ist (beim Werfer sollte da eigentlich auch funzen).

model.cfg upload pastebin.com (http://pastebin.com/ptnDm1pF)

Bei Waffen, die mehrere Muzzles haben, muss man wohl oder übel auf UserAnim's ausweichen, um die Animation noch mit den passenden Magazinen / Waffen zu verbinden. Wie z.B. beim Bradley in der config für den MainGunRecoil:
};
class AnimationSources {
class smurfc_m2a2_MainGunReload {
source = "reload";
weapon = smurfc_bushmaster;
};
...

Frankyman
15.05.2010, 15:10
hey Maik ,
Danke für die config.
ist zwar nicht genau das was ich brauche, bringt mich aber auf eine idee. :D

nach flüchtigem review habe ich keine neuen baustellen gefunden.

Die platten reifen in Arma2 inkl. modellwechsel zu "destrukt Wheel"

Bohemia Interactive Forums - View Single Post - Arma 2 track and tire dammages (http://forums.bistudio.com/showpost.php?p=1594647&postcount=12)

So in etwa habe ich das dann auch gemacht.
Der Fehler bei mir waren schlicht.

SourceAddress = "mirror"; hat gefehlt

bei der Patronen sache war es das gleiche.
ziel dieser Animation ist es die einzelnen Patronen in einem Gurt oder einem Magazin auszublenden, wenn sie verschossen werden.

model.cfg
class animations

class bullet012
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet012";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.625;
//axisOffset = -1;
};

class bullet011
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet011";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue =0.65625;
axisOffset = -1;
};

class bullet010
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet010";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.6875;
axisOffset = -1;
};

class bullet009
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet009";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.71875;
axisOffset = -1;
};

class bullet008
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet008";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.75;
axisOffset = -1;
};

class bullet007
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet007";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.78125;
axisOffset = -1;
};

class bullet006
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet006";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.8125;
axisOffset = -1;
};

class bullet005
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet005";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.84375;
axisOffset = -1;
};

class bullet004
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet004";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.875;
axisOffset = -1;
};

class bullet003
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet003";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.90625;
axisOffset = -1;
};

class bullet002
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet002";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.9375;
axisOffset = -1;
};

class bullet001
{
type="hide";
source="revolving";
memory = 0;
animPeriod = 0;
selection="bullet001";
axis="";
minValue = -1;
maxValue = 0;
SourceAddress = "mirror";
hideValue = 0.96875;
};

Es handelt sich hierbei um einen Gurt mit 32 Patronen ( man kann auch dazu magazine sagen)
Tatsache ist: der gurt ist das magazine.

Vehicle.cfg
class Animationsources

class Revolving {
source = "revolving";
weapon = "gmw";
//initPhase = 0;
};


revolving hat dem augenschein nach den Wert 1 , wenn das magazine voll ist.
Ist der wert 0 startet der magazine reload.

Daraus ergibt sich: Eine patrone ist also 1/32 = 0,03125
Bullet001 ist die erste Patrone vom Verschluss aus gesehen.
Bullet012 ist die letzte Patrone des sichtbaren Gurtes.

Wenn man das ganze ohne "SourceAddress = "mirror";" macht, und dabei die "minValue = -1;maxValue = 0;" nimmt, bleiben alle Patronen unsichtbar, weil ja nur werte von 0 bis 1 kommen.
Wendet man dann " min zu 0 und max zu 1 " werden die Patronen beim schießen eingeblendet statt zu verschwinden.
Was ja auch logisch ist.
bullet001 hat ja "hideValue = 0.96875; " somit bei vollem mag unsichtbar, da ja 1 gegeben ist.

1 - 0,03125 = 0,96875 -----> der hideValue von der ersten Patrone.

So geht das dann immer weiter, bis man alle sichbaren Patronen erfasst hat.
Der Wert veringert sich dann immer um 0,03125 zum vorherigen Patronen "HideValue" wert.

Es ist also ratsam erstmal mit positiven werten zu arbeiten, auch wenn dann ingame die patronen einblenden statt ausblenden.
So kann man gut sehen, ob man alle Patronen erfasst hat.
danach setzt man die "Minvalue und maxvalue " werte in den negativen bereich und wendet die " SourceAddress = "mirror"; " an.
Und siehe da, der effekt hat sich gedreht, und der scheiß geht so wie er soll.

zum Schluß dann noch die skeleton
"bullet012","murmel3",
"bullet011","murmel2",
"bullet010","murmel2",
"bullet009","murmel2",
"bullet008","murmel1",
"bullet007","murmel1",
"bullet006","allbullets",
"bullet005","allbullets",
"bullet004","allbullets",
"bullet003","allbullets",
"bullet002","allbullets",
"bullet001","allbullets",

Die "Murmel " selektions sind zur gurtanimation der bewegung( verdrehen des gutes beim drehen vom Geschütz)
Die "allbullets" zum wackeln des gurtes beim repetieren.
man kann Die "bullets" auch von "mainGun" ableiten.

Ich möchte aber noch betonen, das ich in der Regel keine Ahnung davon habe.
Die Erklärungen basieren auf beobachtung und selber zusammenreimen.

Wichtig ist nur,das es geht.
Wenn es einer richtig und korrekt erklären kann und will, so soll er/sie es tun.
Würde meinem Verständnis der sache bestimmt zuträglich sein. :D