Jump to content

[Tutorial] Renegade X - Vehicle Rigging


Havoc89

Recommended Posts

  • Former Developers

Hey folks,

I know it's been a while, but I've been chipping away at the vehicle rigging tutorial. I am still in the middle of recording it, but I wanted to put up the first 2 chapters right away. Chapter 3 is currently being compressed, and will be up tomorrow night hopefully. I have a lot left to record, but at least you guys can start to follow along.

Youtube playlist:

I will update this post as more chapters have been uploaded.

UPDATE: Part 5 is up! I dont know when part 6 will be going up, I still have to record it. I will keep you guys posted.

  • Thanks 1
Link to comment
Share on other sites

watched both videos.. seems very good and understandable :D even for a german :cool:

quite so far its easier than i thought..

and the most important question.. why is the sueprtank not a hidden/spawnable tank in the game?

after i saw it.. i had a vision.. a vision of a tank who shoots 1 hit kill rainbows :P

but another question.. at the udk mid tank.. there are on the chain weels backwards such supressors.. how are they to "weight"?

Link to comment
Share on other sites

  • Former Developers

Part 3 is up folks. I dont know when Part 4 will be up as I have yet to record it. I will keep you all posted.

but another question.. at the udk mid tank.. there are on the chain weels backwards such supressors.. how are they to "weight"?

Sorry, I'm not sure I understand what exactly you're asking.

Link to comment
Share on other sites

  • Totem Arts Staff
Part 3 is up folks. I dont know when Part 4 will be up as I have yet to record it. I will keep you all posted.

but another question.. at the udk mid tank.. there are on the chain weels backwards such supressors.. how are they to "weight"?

Sorry, I'm not sure I understand what exactly you're asking.

I think he's talking about if they treads on the medium tank are weighting the medium tank down and how

Link to comment
Share on other sites

  • Former Developers

I'll see what I can do to help explain buildings. I'll also try and prepare an example file that was meant to be included in the sdk for the max file.

Any who, part 5 which covers programming is now up and running. Last part still need to be recorded which covers fine tweaking all of the parameters to get the vehicle playing the way you want it to.

Link to comment
Share on other sites

havoc another question. to the 3d modellig area :D

do u have any good tutorial.. or know some for making a good texturing of objects?

how u maybe know im making a RA2 mod. At the moment i work on the vehicles.. Chronominer and Grizzly Tank.

I know "fast" unwrap objekts .. and i can probably paint them in mudbox. But ur textures has many details more in the maps. f.e. nails, plates and so on. This give a huge more realistic look on the stuff :D

just by the way hehe :D

Link to comment
Share on other sites

  • 2 months later...
  • 3 weeks later...

So heres another question..

i made my tank now. with ur tuts.. now im at the part to make the animtree.

my problem is that some stuff is "changed" in the udk.

so when im copying the med tank anims to my tank.. and add the turret rotate to my tank.. then the turret targets into the Y axis.. not the X axis like before.

then i playd with the constrains. in ur video u checked pitch roll . when i do this in my udkeditor.. nothing happens. first when im check yaw and dischecked the other ones.. then my constraints work.

another similar problem is the turret pitch.

i set ur vaulues like in tut but nothing happens. first as i set values on the ROLL area.. the "gunbarrel" moves up and down.

so whats the problem on my tank?

Link to comment
Share on other sites

  • 6 months later...

I have followed the tutorials step by step, but when I recompile (in 32Bit) I get errors and my SDK just breaks..

Some differences are that I don't use an Anim Set, because my repairfacility doesn't need animations, I add particles with Kismet and change the MIC when a vehicle is on top of it. (I just basicly need the thing to sit there and have a health bar and be destroyable, and when destroyed, to no longer call the Kismet.)

Here's a screenshot of the compiling:

5gFEzfL.png

I didn't change anything in Rx_PlayAreaVolume.uc or any other class, I only added my Rx_Defence_RepairFacility.uc

Here's the code:

class Rx_Defence_RepairFacility extends Rx_Defence
   placeable;

DefaultProperties
{
TeamID=1
//========================================================\\
//************** Vehicle Physics Properties **************\\
//========================================================\\


   Health=1000
   bLightArmor=false
   bCollideWorld = false
   Physics=PHYS_None

   CameraLag=0.1 //0.2
   LookForwardDist=200
   HornIndex=1
   COMOffset=(x=0.0,y=0.0,z=-55.0)

PeripheralVision=-1.0

   bUsesBullets = false
   bIgnoreEncroachers=True
   bSeparateTurretFocus=false
   bCanCarryFlag=false
   bCanStrafe=false
   bFollowLookDir=false
   bTurnInPlace=false
   bCanFlip=False
   bHardAttach=true

   MaxDesireability=0.8
   MomentumMult=0.7

   AIPurpose=AIP_Defensive


//========================================================\\
//*************** Vehicle Visual Properties **************\\
//========================================================\\


   Begin Object Name=CollisionCylinder
       CollisionHeight=60.0
       CollisionRadius=260.0
   End Object
   CylinderComponent=CollisionCylinder    

   Begin Object name=SVehicleMesh
       SkeletalMesh=SkeletalMesh'RX_DEF_RepairFacility.Mesh.SK_DEF_RepairFacility'
       //AnimTreeTemplate=AnimTree'RX_DEF_RepairFacility.Anims.AT_DEF_Turret'
       PhysicsAsset=PhysicsAsset'RX_DEF_RepairFacility.Mesh.RX_DEF_RepairFacility_Physics'
   End Object

   DrawScale=1.0

VehicleIconTexture=Texture2D'RX_DEF_Turret.UI.T_VehicleIcon_Turret'
MinimapIconTexture=Texture2D'RX_DEF_Turret.UI.T_MinimapIcon_Turret'


//========================================================\\
//*********** Vehicle Seats & Weapon Properties **********\\
//========================================================\\


/* 
Seats(0)={(GunClass=class'Rx_Defence_Turret_Weapon',
               GunSocket=(MuzzleFlashSocket),
               TurretControls=(TurretPitch,TurretRotate),
               GunPivotPoints=(TurretYaw,TurretPitch),
               CameraTag=CamView3P,
               CameraBaseOffset=(Z=-100),
               CameraOffset=-300,
               SeatIconPos=(X=0.5,Y=0.33),
               MuzzleFlashLightClass=class'Rx_Light_Tank_MuzzleFlash'
               )}
*/


//========================================================\\
//********* Vehicle Material & Effect Properties *********\\
//========================================================\\


   BurnOutMaterial[0]=MaterialInstanceConstant'RX_DEF_RepairFacility.Materials.MI_RepairFacility_Destroyed'
   BurnOutMaterial[1]=MaterialInstanceConstant'RX_DEF_RepairFacility.Materials.MI_RepairFacility_Destroyed'

   DefaultPhysicalMaterial=PhysicalMaterial'RX_DEF_RepairFacility.Materials.PhysMat_RepairFacility'

   VehicleEffects(0)=(EffectStartTag=DamageSmoke,EffectEndTag=NoDamageSmoke,bRestartRunning=false,EffectTemplate=ParticleSystem'RX_FX_Vehicle.Damage.P_EngineFire_Thick',EffectSocket=DamageFire01)
VehicleEffects(1)=(EffectStartTag=DamageSmoke,EffectEndTag=NoDamageSmoke,bRestartRunning=false,EffectTemplate=ParticleSystem'RX_FX_Vehicle.Damage.P_EngineFire_Thick',EffectSocket=DamageFire02)


   BigExplosionTemplates[0]=(Template=ParticleSystem'RX_FX_Munitions2.Particles.Explosions.P_Explosion_Vehicle_Huge')
   BigExplosionSocket=VH_Death

//========================================================\\
//*************** Vehicle Audio Properties ***************\\
//========================================================\\


   Begin Object Class=AudioComponent Name=ScorpionEngineSound
       SoundCue=SoundCue'RX_VH_MediumTank.Sounds.Med_IdleCue'
   End Object
   EngineSound=ScorpionEngineSound
   Components.Add(ScorpionEngineSound);

}

Maybe I missed something really obvious but even when I remove my class from the class folder I can't get the SDK back to normal again so that really makes it difficult to find and/or fix my problem

Link to comment
Share on other sites

I have followed the tutorials step by step, but when I recompile (in 32Bit) I get errors and my SDK just breaks..

Maybe I missed something really obvious but even when I remove my class from the class folder I can't get the SDK back to normal again so that really makes it difficult to find and/or fix my problem

I know how to fix this. I'll post it tomorrow. I got a backup for you for the scripts only. I also fuck ed my SDK like this multiple times. You'll be fine

Link to comment
Share on other sites

Ok nice, and don't worry about the script backup, I still have the sdk .zip file in my downloads folder. (will move it to my backup harddrive to save space).

When I get this fixed I'm also going to retexture it, since my skills have improved over the year.

Link to comment
Share on other sites

Okay, so here's the solution:

1. After you've placed the backup back into place, search ..\UDKGame\Config\DefaultEngineUDK.ini

In there, search this part:

[unrealEd.EditorEngine]

EditPackagesOutPath=..\..\UDKGame\Script

FRScriptOutputPath=..\..\UDKGame\ScriptFinalRelease

+EditPackages=UDKBase

+EditPackages=UTEditor

;ModEditPackages=MyMod

+ModEditPackages=RenX_RCam

+ModEditPackages=RenX_Game

+ModEditPackages=RenX_ExampleMutators

AutoSaveDir=..\..\UDKGame\Autosaves

InEditorGameURLOptions=?quickstart=1?numplay=1

Change "+ModEditPackages=RenX_Game" to be "+EditPackages=RenX_Game"

So, like this:

[unrealEd.EditorEngine]

EditPackagesOutPath=..\..\UDKGame\Script

FRScriptOutputPath=..\..\UDKGame\ScriptFinalRelease

+EditPackages=UDKBase

+EditPackages=UTEditor

+EditPackages=RenX_Game

;ModEditPackages=MyMod

+ModEditPackages=RenX_RCam

+ModEditPackages=RenX_ExampleMutators

AutoSaveDir=..\..\UDKGame\Autosaves

InEditorGameURLOptions=?quickstart=1?numplay=1

Now it will never compile RenX_Game anymore. (if you DO want to do that again, revert these actions)

Now, as for your code, there are some things that are missing. I'll explain myself:

1. Please set the TeamID to be a variable, so we can change the team ingame! You could create 2 classes, one for Nod one for GDI, but you can also just have 1 class and change the TeamID.

[Optional] Do you also wish to have this repairpad to be updated though kismet? If so, you'll also have to include a SeqAct that hooks up to your class Rx_Defence_RepairFacility.

2. Make sure the mesh is a variable! If it's not a variable we can't access the 'rendering override' tab ingame, so if other mappers wish to apply a different shader / texture to the repairpad due to environments or whatever, they can't.

So what I'd do is;

class Rx_Defence_RepairFacility extends Rx_Defence
   placeable;

var() repnotify TEAM TeamID;
var() SkeletalMeshComponent BuildingMesh;

DefaultProperties
{
  TeamID=1
//========================================================\\
//************** Vehicle Physics Properties **************\\
//========================================================\\


   Health=1000
   bLightArmor=false
   bCollideWorld = false
   Physics=PHYS_None

   CameraLag=0.1 //0.2
   LookForwardDist=200
   HornIndex=1
   COMOffset=(x=0.0,y=0.0,z=-55.0)

  PeripheralVision=-1.0

   bUsesBullets = false
   bIgnoreEncroachers=True
   bSeparateTurretFocus=false
   bCanCarryFlag=false
   bCanStrafe=false
   bFollowLookDir=false
   bTurnInPlace=false
   bCanFlip=False
   bHardAttach=true

   MaxDesireability=0.8
   MomentumMult=0.7

   AIPurpose=AIP_Defensive


//========================================================\\
//*************** Vehicle Visual Properties **************\\
//========================================================\\


   Begin Object Class=CylinderComponent Name=CollisionCmp
       CollisionHeight=60.0
       CollisionRadius=260.0
   End Object
  CollisionComponent = CollisionCmp
  CollisionCylinder  = CollisionCmp
  Components.Add(CollisionCmp)

   Begin Object class=SkeletalMeshComponent name=SVehicleMesh
       SkeletalMesh=SkeletalMesh'RX_DEF_RepairFacility.Mesh.SK_DEF_RepairFacility'
       //AnimTreeTemplate=AnimTree'RX_DEF_RepairFacility.Anims.AT_DEF_Turret'
       PhysicsAsset=PhysicsAsset'RX_DEF_RepairFacility.Mesh.RX_DEF_RepairFacility_Physics'
   End Object
Components.Add(SVehicleMesh)
BuildingMesh = SVehicleMesh

   DrawScale=1.0

  VehicleIconTexture=Texture2D'RX_DEF_Turret.UI.T_VehicleIcon_Turret'
  MinimapIconTexture=Texture2D'RX_DEF_Turret.UI.T_MinimapIcon_Turret'


//========================================================\\
//*********** Vehicle Seats & Weapon Properties **********\\
//========================================================\\


/* 
  Seats(0)={(GunClass=class'Rx_Defence_Turret_Weapon',
               GunSocket=(MuzzleFlashSocket),
               TurretControls=(TurretPitch,TurretRotate),
               GunPivotPoints=(TurretYaw,TurretPitch),
               CameraTag=CamView3P,
               CameraBaseOffset=(Z=-100),
               CameraOffset=-300,
               SeatIconPos=(X=0.5,Y=0.33),
               MuzzleFlashLightClass=class'Rx_Light_Tank_MuzzleFlash'
               )}
*/


//========================================================\\
//********* Vehicle Material & Effect Properties *********\\
//========================================================\\


   BurnOutMaterial[0]=MaterialInstanceConstant'RX_DEF_RepairFacility.Materials.MI_RepairFacility_Destroyed'
   BurnOutMaterial[1]=MaterialInstanceConstant'RX_DEF_RepairFacility.Materials.MI_RepairFacility_Destroyed'

   DefaultPhysicalMaterial=PhysicalMaterial'RX_DEF_RepairFacility.Materials.PhysMat_RepairFacility'

   VehicleEffects(0)=(EffectStartTag=DamageSmoke,EffectEndTag=NoDamageSmoke,bRestartRunning=false,EffectTemplate=ParticleSystem'RX_FX_Vehicle.Damage.P_EngineFire_Thick',EffectSocket=DamageFire01)
  VehicleEffects(1)=(EffectStartTag=DamageSmoke,EffectEndTag=NoDamageSmoke,bRestartRunning=false,EffectTemplate=ParticleSystem'RX_FX_Vehicle.Damage.P_EngineFire_Thick',EffectSocket=DamageFire02)


   BigExplosionTemplates[0]=(Template=ParticleSystem'RX_FX_Munitions2.Particles.Explosions.P_Explosion_Vehicle_Huge')
   BigExplosionSocket=VH_Death

//========================================================\\
//*************** Vehicle Audio Properties ***************\\
//========================================================\\


   Begin Object Class=AudioComponent Name=ScorpionEngineSound
       SoundCue=SoundCue'RX_VH_MediumTank.Sounds.Med_IdleCue'
   End Object
   EngineSound=ScorpionEngineSound
   Components.Add(ScorpionEngineSound);

}

Link to comment
Share on other sites

Copied your script, launched editor without compile, repairpad didnt show up when I tried summoning it.

Restarted editor, this time I said yes to the compile because I tought that should fix it then > errors all over the place and UDK can't start again..

Can't I just send you the package with the repairpad instead?

Link to comment
Share on other sites

Copied your script, launched editor without compile, repairpad didnt show up when I tried summoning it.

Restarted editor, this time I said yes to the compile because I tought that should fix it then > errors all over the place and UDK can't start again..

Can't I just send you the package with the repairpad instead?

Sure

Link to comment
Share on other sites

  • Former Developers
@ Havoc. In Your tutorials you add the scripts and the stuff to the base game. Ruud told us yesterday that its much more usefull to make the scripts to a new mutator. maybe you will add this to the video?

That is something I don't know how to do. Someone else can probably help make sense of how to set it up via a mutator.

Link to comment
Share on other sites

  • Totem Arts Staff
5 hours ago, MBT808 said:

hey, was wondering, but would Renegade-X SDK support models created using 3DS max 2016?

I believe 3DS Max 2016 is not supported on UDK, but you probably can import models but it gives you an FBX error. Only older version (2011, 2012) are really supported.

 

UDK is a quite older engine, while game graphics still improve these days. 3DS Max 2016 is improved over the years and still does so each version UDK get's even more outdated :/

Link to comment
Share on other sites

On 2017-01-15 at 2:17 AM, TK0104 said:

I believe 3DS Max 2016 is not supported on UDK, but you probably can import models but it gives you an FBX error. Only older version (2011, 2012) are really supported.

 

UDK is a quite older engine, while game graphics still improve these days. 3DS Max 2016 is improved over the years and still does so each version UDK get's even more outdated :/

Ah, then 2017 isn't supported either. I was only asking cause I was considering fooling around with modelling the Tib Wars/Kanes wrath era vehicles for Ren-X but I wasn't sure if outside 3d modelling was supported.

 

Edited by MBT808
Link to comment
Share on other sites

7 hours ago, Havoc89 said:

I recently found ActorX Plugins for all versions of Max and Maya, including 2017. I've tested 3ds Max 2017 with the plugin and it works flawlessly!

You can donwload it from the site below:

http://www.gildor.org/smf/index.php/topic,1221.0.html

thanks, I'll give it a shot, where do you put the plugin might I ask? I threw it in the plug in folder, but I'm not sure how to get 3ds 2017 to identify it.

Link to comment
Share on other sites

  • 5 weeks later...

hey havoc89, I was wondering how you rigged the ventilators on certain vehicles to work in Ren-x. I'm working on the rigging for a Guardian APC in ren-x, but I wasn't sure how to rig the vents.

 

also, I'm unsure how to make part of the suspension work on the model I'm working on, I was wondering if you could help me out with that as well. its the front wheels "arm" in the attached image.

Guardian APC hull finished 2.jpg

Edited by MBT808
Link to comment
Share on other sites

  • Former Developers

What do you mean by ventilators?

As for the suspension, the rear tires are pretty straight forward. The only thing a little bit tricky would be the front tire suspension. I did something like this on the TS recon bike which you can check out. Or even the Stealth tank suspension. Essentially you want to use an invisible physical wheel a couple units in front of the front tire. This will be the actual wheel that is interacting physically, you will also need to make sure the radius of that wheel matches the wheel radius of the front.

The visible wheel will need to be a child of the suspension component, but will not be a physical wheel, instead it will only inherit the rotation from the invisible physical wheel which will solve the issue of the wheel spinning correctly.

To get the suspension to shift up and down correctly, you will need to apply a "Look At" skeletal controller so that this suspension bone is looking at the bone of the invisible wheel. Do this in max first so that you get the perfect alignment before doing the same in unreal.

With the look at constraint applied in unreal, the suspension bone will always point at the invisible physical wheel which will shift up and down based on it's location.

This trick works 100% of the time, and can give you some really convincing results.

Link to comment
Share on other sites

On 2017-02-27 at 8:17 PM, Havoc89 said:

What do you mean by ventilators?

As for the suspension, the rear tires are pretty straight forward. The only thing a little bit tricky would be the front tire suspension. I did something like this on the TS recon bike which you can check out. Or even the Stealth tank suspension. Essentially you want to use an invisible physical wheel a couple units in front of the front tire. This will be the actual wheel that is interacting physically, you will also need to make sure the radius of that wheel matches the wheel radius of the front.

The visible wheel will need to be a child of the suspension component, but will not be a physical wheel, instead it will only inherit the rotation from the invisible physical wheel which will solve the issue of the wheel spinning correctly.

To get the suspension to shift up and down correctly, you will need to apply a "Look At" skeletal controller so that this suspension bone is looking at the bone of the invisible wheel. Do this in max first so that you get the perfect alignment before doing the same in unreal.

With the look at constraint applied in unreal, the suspension bone will always point at the invisible physical wheel which will shift up and down based on it's location.

This trick works 100% of the time, and can give you some really convincing results.

so a dummy that goes in front of the wheel model about two or three units, attaches to the main dummy of the wheel and the suspension dummy is positioned/attached at both ends of the suspension arm before the main dummy of the model?(if I'm understanding this correctly) can I open the TS recon bike in 3ds and see all the rigging there to get a better idea?

 

I noticed the example model everything was one object(or so it seemed), my model is separated into parts(hull, wheels, the front arms, gun and its mount), should it all be one combined object for the rigging to work?

Ventilators are part of the ventilation on tanks or armored vehicles that work to extract the noxious fumes that build up within the combat compartment during battle from firing the main armaments. I was referring to the fans on top of the APC that make up the ventilation system.

Edited by MBT808
Link to comment
Share on other sites

  • Former Developers

You can actually place the dummy (Physical) wheel directly on top of the cosmetic (visible) wheel if you want to. Its more of a case by case scenario. Sort of depends on the arc your vehicle will have if you want. Usually having them directly on top will be just fine and no one will notice any subtle inaccuracies.

I've setup example diagrams, however I have exaggerated the position of the physical wheel bone for the purposes of explanation. Hope it helps!

 

AngledSuspensionSolution.jpg

AngledSuspensionSolution_Max.gif

AngledSuspensionSolution_Unreal.gif

Link to comment
Share on other sites

  • Former Developers

Chances are your order is reversed. In 3DS Max  you have to use the link tool and drag from child to parent.

The hierarchy should be the following:

Root
-- Wheel_Physical
-- Suspension
---- Wheel_Visible

Link to comment
Share on other sites

19 minutes ago, Havoc89 said:

Chances are your order is reversed. In 3DS Max  you have to use the link tool and drag from child to parent.

The hierarchy should be the following:

Root
-- Wheel_Physical
-- Suspension
---- Wheel_Visible

alright, that makes more sense.

also, you didn't answer this before, but should the model all be one object? I currently have the hull separate from the gun, wheel, and suspension.

Link to comment
Share on other sites

  • 7 months later...

didn't work! and by that I mean nothing spawned when I typed summon renx_game.rx_vehicle_predator did everything step by step I left out everything suspension since I messed up the original state the vehicle was supposed to be in max.  I also used unrealfrontend.exe (with the cake icon thing) I forget how I did it the last time but I spawned an empty invisible tank that I wasn't able to enter.  

Edited by [B]Veyron
Link to comment
Share on other sites

  • Agent unpinned this topic

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...