Rigging tank models for ArmA 2 |
Rigging tank models for ArmA 2 |
Mar 29 2014, 00:32
Post
#1
|
|
New Member Group: Members Posts: 7 Joined: 29-March 14 Member No.: 10,416 |
I have searched no less than six forums, Google, and Youtube for nearly a week now with no success. I am trying to add some new tanks to ArmA 2. I cannot find any information anywhere about how to set up the bones and/or attachment points. Does anyone here know of a tutorial that will explain this?
|
|
|
Mar 29 2014, 14:52
Post
#2
|
|
Gee, I wish we had one of them doomsday machines. Group: Moderators Posts: 2,037 Joined: 13-November 06 From: Wales Member No.: 155 |
Download one of the sample model packages (click here) and look at the tanks in that. It's probably easiest to name the selections in Oxygen.
If you're not familar with the idea of naming selections, have a read of this - it's for OFP, but the basic idea is the same. You'll also need to define the axis for moving parts in the memory LOD (again, if you're confused, look at the sample models - they explain it better than I ever could ) For a basic tank, you'll want a model.cfg that looks like this: CODE class CfgSkeletons { class Vehicle; class TankBase: Vehicle { skeletonInherit="Vehicle"; skeletonBones[]= { "kolL1","", "kolL2","", "kolL3","", "kolL4","", "kolL5","", "kolL6","", "kolL7","", "kolL8","", "kolP1","", "kolP2","", "kolP3","", "kolP4","", "kolP5","", "kolP6","", "kolP7","", "kolP8","", "podkoloL1","", "podkoloL2","", "podkoloL3","", "podkoloL4","", "podkoloL5","", "podkoloL6","", "podkoloL7","", "podkoloL8","", "podkoloP1","", "podkoloP2","", "podkoloP3","", "podkoloP4","", "podkoloP5","", "podkoloP6","", "podkoloP7","", "podkoloP8","", "koloL1","podkoloL1", "koloL2","podkoloL2", "koloL3","podkoloL3", "koloL4","podkoloL4", "koloL5","podkoloL5", "koloL6","podkoloL6", "koloL7","podkoloL7", "koloL8","podkoloL8", "koloP1","podkoloP1", "koloP2","podkoloP2", "koloP3","podkoloP3", "koloP4","podkoloP4", "koloP5","podkoloP5", "koloP6","podkoloP6", "koloP7","podkoloP7", "koloP8","podkoloP8", "ukaz_rychlo","", "ukaz_rychlo2","", "ukaz_rpm","", "ukaz_radar","", "hodinova","", "minutova","", "kompas","", "ukazsmer","", "damageHide","", "podkoloL1_hide","podkoloL1", "podkoloL2_hide","podkoloL2", "podkoloL3_hide","podkoloL3", "podkoloL4_hide","podkoloL4", "podkoloL5_hide","podkoloL5", "podkoloL6_hide","podkoloL6", "podkoloL7_hide","podkoloL7", "podkoloL8_hide","podkoloL8", "podkoloP1_hide","podkoloP1", "podkoloP2_hide","podkoloP2", "podkoloP3_hide","podkoloP3", "podkoloP4_hide","podkoloP4", "podkoloP5_hide","podkoloP5", "podkoloP6_hide","podkoloP6", "podkoloP7_hide","podkoloP7", "podkoloP8_hide","podkoloP8" }; }; class Tank: TankBase { skeletonInherit="TankBase"; skeletonBones[]= { "OtocVez","", "OtocHlaven","OtocVez", "OtocVelitele","OtocVez", "OtocHlavenVelitele","OtocVelitele", "poklop_driver","", "poklop_commander","OtocVelitele", "poklop_gunner","OtocVez", "damageVez","OtocVez" }; }; }; class Rotation; class CfgModels { class Vehicle; class Tank: Vehicle { sectionsInherit="Vehicle"; sections[]= { "zadni svetlo", "brzdove svetlo", "PasOffsetP", "PasOffsetL", "telo", "pas_L", "pas_P", "motor", "vez", "zbran", "clan", "clan_sign", "loader_turret" }; skeletonName="Tank"; class Animations { // destruct BASE START class MainTurret_destructY { type="rotationY"; source="damage"; //damage //test selection="OtocVez"; axis="osaveze"; animPeriod=0; minValue=0.99; maxValue=1; angle0=0; angle1="rad 15"; }; class MainGun_destructX:MainTurret_destructY { type="rotationX"; selection="OtocHlaven"; axis="osahlavne"; angle1="rad -10"; }; class MainGun_destructY:MainGun_destructX { type="rotationY"; angle1="rad +5"; }; class MainGun_destructZ:MainGun_destructX { type="rotationZ"; angle1="rad +5"; }; class OtocVelitele_destruct:MainTurret_destructY { selection="OtocVelitele"; type="rotation"; axis="osavelitele"; angle1="rad -25"; }; class OtocHlavenVelitele_destructX:MainTurret_destructY { selection="OtocHlavenVelitele"; type="rotation"; axis="OsaHlavneVelitele"; angle1="rad -20"; }; class OtocHlavenVelitele_destructY:OtocHlavenVelitele_destructX { type="rotationY"; angle1="rad +5"; }; class OtocHlavenVelitele_destructZ:OtocHlavenVelitele_destructX { type="rotationZ"; angle1="rad -3"; }; // destruct BASE END class damageHide { type="hide"; source="damage"; selection="damageHide"; }; class HatchDriver { type="rotation"; source="hatchDriver"; selection="poklop_driver"; axis="osa_poklop_driver"; animPeriod=0; angle0=0; angle1="rad -100"; }; class IndicatorSpeed { type="rotation"; source="speed"; selection="ukaz_rychlo"; axis="osa_rychlo"; memory=1; animPeriod=0; minValue=0; maxValue=16.670000; angle0=0; angle1="rad -240"; }; class IndicatorSpeed2 { type="rotation"; source="speed"; selection="ukaz_rychlo2"; axis="osa_rychlo2"; memory=1; animPeriod=0; minValue=0; maxValue=16.670000; angle0=0; angle1="rad -240"; }; class IndicatorRPM { type="rotation"; source="rpm"; selection="ukaz_rpm"; axis="osa_rpm"; memory=1; animPeriod=0; minValue=0; maxValue=1; angle0=0; angle1="rad -340"; }; class Radar { type="rotation"; source="time"; selection="ukaz_radar"; axis="osa_radar"; memory=1; minValue=0; maxValue=2; sourceAddress="loop"; angle0=0; angle1="rad 360"; }; class IndicatorTurret { type="rotation"; source="turretDir"; selection="ukazsmer"; axis="osa_ukazsmer"; memory=1; animPeriod=0; minValue=0; maxValue=6.283185; angle0=0; angle1="rad 360"; }; class WatchHour { type="rotation"; source="clockHour"; selection="hodinova"; axis="osa_time"; memory=1; animPeriod=0; angle0=0; angle1="rad 360"; }; class WatchMinute { type="rotation"; source="clockMinute"; selection="minutova"; axis="osa_time"; memory=1; animPeriod=0; angle0=0; angle1="rad 360"; }; class Wheel_kolL1 { type="rotationX"; source="wheelL"; selection="kolL1"; axis=""; memory=1; animPeriod=0; angle0=0; angle1="rad -360"; sourceAddress="loop"; }; class Wheel_koloL1: Wheel_kolL1 { selection="koloL1"; }; class Wheel_podkoloL1 { type="translationY"; source="damper"; selection="podkoloL1"; axis=""; memory=1; animPeriod=0; minValue=-1000; maxValue=1000; }; class Wheel_kolP1: Wheel_kolL1 { source="wheelR"; selection="kolP1"; }; class Wheel_koloP1: Wheel_koloL1 { source="wheelR"; selection="koloP1"; }; class Wheel_podkoloP1: Wheel_podkoloL1 { selection="podkoloP1"; }; class Wheel_kolL2: Wheel_kolL1 { selection="kolL2"; }; class Wheel_kolL3: Wheel_kolL1 { selection="kolL3"; }; class Wheel_kolL4: Wheel_kolL1 { selection="kolL4"; }; class Wheel_kolL5: Wheel_kolL1 { selection="kolL5"; }; class Wheel_kolL6: Wheel_kolL1 { selection="kolL6"; }; class Wheel_kolL7: Wheel_kolL1 { selection="kolL7"; }; class Wheel_kolL8: Wheel_kolL1 { selection="kolL8"; }; class Wheel_kolP2: Wheel_kolP1 { selection="kolP2"; }; class Wheel_kolP3: Wheel_kolP1 { selection="kolP3"; }; class Wheel_kolP4: Wheel_kolP1 { selection="kolP4"; }; class Wheel_kolP5: Wheel_kolP1 { selection="kolP5"; }; class Wheel_kolP6: Wheel_kolP1 { selection="kolP6"; }; class Wheel_kolP7: Wheel_kolP1 { selection="kolP7"; }; class Wheel_kolP8: Wheel_kolP1 { selection="kolP8"; }; class Wheel_koloL2: Wheel_koloL1 { selection="koloL2"; }; class Wheel_koloL3: Wheel_koloL1 { selection="koloL3"; }; class Wheel_koloL4: Wheel_koloL1 { selection="koloL4"; }; class Wheel_koloL5: Wheel_koloL1 { selection="koloL5"; }; class Wheel_koloL6: Wheel_koloL1 { selection="koloL6"; }; class Wheel_koloL7: Wheel_koloL1 { selection="koloL7"; }; class Wheel_koloL8: Wheel_koloL1 { selection="koloL8"; }; class Wheel_koloP2: Wheel_koloP1 { selection="koloP2"; }; class Wheel_koloP3: Wheel_koloP1 { selection="koloP3"; }; class Wheel_koloP4: Wheel_koloP1 { selection="koloP4"; }; class Wheel_koloP5: Wheel_koloP1 { selection="koloP5"; }; class Wheel_koloP6: Wheel_koloP1 { selection="koloP6"; }; class Wheel_koloP7: Wheel_koloP1 { selection="koloP7"; }; class Wheel_koloP8: Wheel_koloP1 { selection="koloP8"; }; class Wheel_podkoloL2: Wheel_podkoloL1 { selection="podkoloL2"; }; class Wheel_podkoloL3: Wheel_podkoloL1 { selection="podkoloL3"; }; class Wheel_podkoloL4: Wheel_podkoloL1 { selection="podkoloL4"; }; class Wheel_podkoloL5: Wheel_podkoloL1 { selection="podkoloL5"; }; class Wheel_podkoloL6: Wheel_podkoloL1 { selection="podkoloL6"; }; class Wheel_podkoloL7: Wheel_podkoloL1 { selection="podkoloL7"; }; class Wheel_podkoloL8: Wheel_podkoloL1 { selection="podkoloL8"; }; class Wheel_podkoloP2: Wheel_podkoloP1 { selection="podkoloP2"; }; class Wheel_podkoloP3: Wheel_podkoloP1 { selection="podkoloP3"; }; class Wheel_podkoloP4: Wheel_podkoloP1 { selection="podkoloP4"; }; class Wheel_podkoloP5: Wheel_podkoloP1 { selection="podkoloP5"; }; class Wheel_podkoloP6: Wheel_podkoloP1 { selection="podkoloP6"; }; class Wheel_podkoloP7: Wheel_podkoloP1 { selection="podkoloP7"; }; class Wheel_podkoloP8: Wheel_podkoloP1 { selection="podkoloP8"; }; class podkoloL1_hide_damage: damageHide { selection="podkoloL1_hide"; }; class podkoloL2_hide_damage: damageHide { selection="podkoloL2_hide"; }; class podkoloL3_hide_damage: damageHide { selection="podkoloL3_hide"; }; class podkoloL4_hide_damage: damageHide { selection="podkoloL4_hide"; }; class podkoloL5_hide_damage: damageHide { selection="podkoloL5_hide"; }; class podkoloL6_hide_damage: damageHide { selection="podkoloL6_hide"; }; class podkoloL7_hide_damage: damageHide { selection="podkoloL7_hide"; }; class podkoloL8_hide_damage: damageHide { selection="podkoloL8_hide"; }; class podkoloP1_hide_damage: damageHide { selection="podkoloP1_hide"; }; class podkoloP2_hide_damage: damageHide { selection="podkoloP2_hide"; }; class podkoloP3_hide_damage: damageHide { selection="podkoloP3_hide"; }; class podkoloP4_hide_damage: damageHide { selection="podkoloP4_hide"; }; class podkoloP5_hide_damage: damageHide { selection="podkoloP5_hide"; }; class podkoloP6_hide_damage: damageHide { selection="podkoloP6_hide"; }; class podkoloP7_hide_damage: damageHide { selection="podkoloP7_hide"; }; class podkoloP8_hide_damage: damageHide { selection="podkoloP8_hide"; }; class damageVez: damageHide { selection="damageVez"; }; }; }; class mymodelname: Tank {}; }; (Obviously, change "mymodelname" to the name of your model. Ie, if you're named your model "Mytank.p3d", you'll want to have "class Mytank: Tank {};" for that line) -------------------- The Rules - Nothing too complicated, follow these and we'll have no problems.
Moderation Feedback Thread - Tell everyone how much you Site Issues Thread - Complain about site issues here. We might even fix them! Community Chatter Thread - Furthest Mud-sling gets a free subscription to "JdB Monthly". QUOTE(Major Mike Shearer) We can categorically state that we have not released man-eating badgers into the area. QUOTE(Brace Belden) A machine gun is like a woman, I don’t understand it, I’m afraid of it, and one day I’ll accidentally be killed by one. |
|
|
Apr 1 2014, 03:41
Post
#3
|
|
New Member Group: Members Posts: 7 Joined: 29-March 14 Member No.: 10,416 |
So I don't have to add a crapton of bones in 3Ds Max?
|
|
|
Apr 1 2014, 10:24
Post
#4
|
|
Gee, I wish we had one of them doomsday machines. Group: Moderators Posts: 2,037 Joined: 13-November 06 From: Wales Member No.: 155 |
There's probably is a way you can do it in 3Ds Max, but Oxygen's made to do this sort of thing, so...
-------------------- The Rules - Nothing too complicated, follow these and we'll have no problems.
Moderation Feedback Thread - Tell everyone how much you Site Issues Thread - Complain about site issues here. We might even fix them! Community Chatter Thread - Furthest Mud-sling gets a free subscription to "JdB Monthly". QUOTE(Major Mike Shearer) We can categorically state that we have not released man-eating badgers into the area. QUOTE(Brace Belden) A machine gun is like a woman, I don’t understand it, I’m afraid of it, and one day I’ll accidentally be killed by one. |
|
|
Apr 8 2014, 02:16
Post
#5
|
|
New Member Group: Members Posts: 7 Joined: 29-March 14 Member No.: 10,416 |
Good. That's all I really needed to know. Thanks!
|
|
|
Apr 11 2014, 01:15
Post
#6
|
|
New Member Group: Members Posts: 7 Joined: 29-March 14 Member No.: 10,416 |
Actually. Is there any way to make an ArmA 2 tank not able to neutral steer? Like instead of spinning in place it skid-steers?
|
|
|
Apr 11 2014, 11:44
Post
#7
|
|
Gee, I wish we had one of them doomsday machines. Group: Moderators Posts: 2,037 Joined: 13-November 06 From: Wales Member No.: 155 |
I don't think so. I'm pretty sure that sort of thing is hardcoded.
(You might be able to emulate the effect by using the wheeled base class and having a very tight turning circle, but IIRC you can't get track textures working then. Though I may be thinking of ArmA.1, there. Iron Front has working half-tracks using the wheeled model, and I don't think they changed the engine that much from ArmA.2) -------------------- The Rules - Nothing too complicated, follow these and we'll have no problems.
Moderation Feedback Thread - Tell everyone how much you Site Issues Thread - Complain about site issues here. We might even fix them! Community Chatter Thread - Furthest Mud-sling gets a free subscription to "JdB Monthly". QUOTE(Major Mike Shearer) We can categorically state that we have not released man-eating badgers into the area. QUOTE(Brace Belden) A machine gun is like a woman, I don’t understand it, I’m afraid of it, and one day I’ll accidentally be killed by one. |
|
|
Apr 13 2014, 05:12
Post
#8
|
|
New Member Group: Members Posts: 7 Joined: 29-March 14 Member No.: 10,416 |
I don't think so. I'm pretty sure that sort of thing is hardcoded. (You might be able to emulate the effect by using the wheeled base class and having a very tight turning circle, but IIRC you can't get track textures working then. Though I may be thinking of ArmA.1, there. Iron Front has working half-tracks using the wheeled model, and I don't think they changed the engine that much from ArmA.2) Either I44 or Hell in the Pacific also have working halftracks that drive as "trucks." I'm trying to bring over a bunch of tanks from the game World of Tanks. My intention was to convert every single one (eventually), but I want them to drive correctly. I wonder if I can trick the game engine into putting forward drive onto the track that would normally be going "backwards" during a neutral steer, thereby countering the reverse drive, for those tanks that aren't supposed to have that ability? Also, something else I just thought of. How hard is it to set up a non-missile-based artillery unit to use the artillery computer system? This post has been edited by Carnaxus: Apr 13 2014, 05:13 |
|
|
Apr 19 2014, 00:08
Post
#9
|
|
New Member Group: Members Posts: 7 Joined: 29-March 14 Member No.: 10,416 |
*nudge*
|
|
|
Apr 19 2014, 11:40
Post
#10
|
|
Gee, I wish we had one of them doomsday machines. Group: Moderators Posts: 2,037 Joined: 13-November 06 From: Wales Member No.: 155 |
Please don't bump threads. If people don't know the answer, asking repeatedly isn't going to help.
-------------------- The Rules - Nothing too complicated, follow these and we'll have no problems.
Moderation Feedback Thread - Tell everyone how much you Site Issues Thread - Complain about site issues here. We might even fix them! Community Chatter Thread - Furthest Mud-sling gets a free subscription to "JdB Monthly". QUOTE(Major Mike Shearer) We can categorically state that we have not released man-eating badgers into the area. QUOTE(Brace Belden) A machine gun is like a woman, I don’t understand it, I’m afraid of it, and one day I’ll accidentally be killed by one. |
|
|
Apr 26 2014, 07:24
Post
#11
|
|
New Member Group: Members Posts: 7 Joined: 29-March 14 Member No.: 10,416 |
Probably should have mentioned I was only doing one bump then was gonna let it die, though I really really do hope someone out there has an answer. Last post barring anyone knowing the answer.
|
|
|
Lo-Fi Version | Time is now: 27th May 2024 - 02:02 |