Renegade Public Forums
C&C: Renegade --> Dying since 2003â„¢, resurrected in 2024!
Home » Renegade Discussions » Mod Forum » I need help from people who know how to model vechicles
I need help from people who know how to model vechicles [message #80157] Wed, 14 April 2004 22:21 Go to next message
jonwil is currently offline  jonwil
Messages: 3557
Registered: February 2003
Karma: 0
General (3 Stars)

how do wheels and tank treads work?
I am working on a program that will load a w3d file of a wheeled or tracked vechicle and will show it driving (with proper wheel movement). Its for a project for university Smile.

But I need to know which bones to manipulate and how to manipulate them to get the correct wheel movement. (for the project, we have to show something that obays the laws of physics and stuff, hence the need to have the wheels moving)

As to why I am doing it this way, this feature will be part of a w3d viewer app. The other advantage is that I dont have to make any 3d models Razz


Jonathan Wilson aka Jonwil
Creator and Lead Coder of the Custom scripts.dll
Renegade Engine Guru
Creator and Lead Coder of TT.DLL
Official member of Tiberian Technologies
I need help from people who know how to model vechicles [message #80161] Wed, 14 April 2004 22:30 Go to previous messageGo to next message
Dante
Messages: 1039
Registered: February 2003
Karma: 0
General (1 Star)
install the renegade public tools


look in your RenegadePublicTools\HowTo\Vehicles\Mammoth\

there ya go


I need help from people who know how to model vechicles [message #80164] Wed, 14 April 2004 22:46 Go to previous messageGo to next message
Deactivated is currently offline  Deactivated
Messages: 1503
Registered: February 2003
Karma: 0
General (1 Star)
http://renhelp.co.uk/?tut=15
http://renhelp.co.uk/?tut=33

Quote:

How To Set Up a Renegade Vehicle

By Greg Hjelstrom


Introduction

Renegade uses a form of rigid body dynamics to simulate a wide variety of vehicles. All of the geometric characteristics of a vehicle are determined directly from a model which is exported from 3ds-max. For example, the number, placement, and behavior of any wheels in the vehicle is determined by the set of “bones” in the model. Many wheel configurations can be defined by the model: front-wheel drive, four-wheel steering, all-wheel drive, tank tracks, etc can all be set up. Parameters such as the mass, engine strength, and suspension stiffness are set in the Renegade level editor.

Balance

The first thing to do is to position your vehicle model such that its center of mass is at the origin in MAX. In the X-Y plane, the CM (center of mass) should usually be placed exactly at the centroid of all of the wheels in the vehicle. If the CM behind this point, the vehicle will lean backwards on its suspension, if it is in front of this point, it will lean forward, etc. In the Z axis, the CM should be placed some distance below the center of the object to help prevent tipping over when turning corners.

Collision Detection (WorldBox)

As is the case with all objects in Renegade, you can use separate meshes for projectile collision detection and physical collision detection. In the case of vehicles you have to use a single OBBox named "WorldBox" for physical collision detection. (Note: physical collision detection is used when the object is moving in the world, projectile collision detection is used when the code is determining whether bullets hit the vehicle). For projectile collision detection, just use some representative meshes from your model. The WorldBox OBBox must be linked to the origin of the vehicle, and be aligned with the world axes. It should also be as small as possible while still containing the wheels and bulk of the body of the vehicle. The physics code in renegade collides with objects in a buffer zone near the surface of the worldbox so it should not completely contain the model. Below is a screenshot of a WorldBox. Note how the WorldBox does not extend all the way to the front, top or back of the vehicle.
· It should be named exactly "WorldBox" (or "WorldBox.00" when part of an LOD model)

· It should only exist in the top LOD of your vehicle

· It should be set up to export as an OBBox

· It should be Hidden

· It should have its Physical and Camera collision settings enabled

· It should be the only object in the vehicle model with Physical and Camera collision enabled

· It should be as small as possible while still containing the wheel contact patches in their initial position (more on this later).

Wheels
Wheels are defined by adding bones with a particular naming convention into your model. All vehicles, including VTOL aircraft, have wheels. At the bare minimum, there must be two bones per wheel; one to define the contact point of the wheel and one to define the center of rotation of the wheel. The code will use the pivot points of the wheel bones to determine the following things: the initial position of the wheel, the radius of the wheel, the axis that the suspension travels along, and the axis that the wheel rotates about. The two basic bones needed by each wheel are the "WheelP" (wheel position) bone, and the "WheelC" (center) bone.
Below is a view of a wheel from the Humm-Vee model (with the WheelP bone selected). Note that the z-axis points along the direction of travel of the suspension and the x-axis points forward. Also, the pivot point of the WheelP bone must be contained inside the world-box. The initial position of all wheels should be at their extreme topmost point; imagine that the vehicle has just fallen off a skyscraper and landed directly on its wheels.
Attached to the wheel position bone, you need a bone which defines the center of rotation of the wheel; the WheelC bone. Below is a view of a wheel with both bones set up. Again, the important axis is the z-axis, it points along the axis of rotation of the wheel; in the "Top" viewport in Max, the z-axis should be pointing down your monitor (for all four wheels).
The graphical representation of the wheel is then attached to the WheelC bone and will rotate and translate as the vehicle is simulated. The simulation pays no attention to the graphical representation of the wheel or even whether it exists or not. The hierarchical linkage for a simple wheel should look like the one below. Note that the WheelC bone is attached to the WheelP bone; not the other way around.
The 'E' at the end of each of the names above is a flag signifies that this particular wheel applies the engine force at its contact point. Through this naming convention you can create four-wheel drive, front-wheel drive, or rear-wheel drive wheels. Other flags that are available include:

· S - The wheel will turn when the vehicle changes its steering parameter.

· I - The wheel will turn in the opposite direction of the vehicle's steering parameter (rear wheel steering).

· E - The wheel will exert the engine force at its contact point

· L - The wheel is part of the left track of a tracked vehicle

· R - The wheel is part of the right track of a tracked vehicle

· F - The wheel is "fake"; it will graphically move with the vehicle but no forces are computed.

The complete naming convention for a wheel bone is below. The name always starts with the word 'Wheel', followed by a single character and a two digit number (e.g. WheelP00). Following the digits, any of the above flags can be added.

Wheel {P,C,T,F} {00} [S] [I] [E] [L] [R] [F]

Here are some examples of valid wheel bone names:

· WheelP00ES - The contact point of wheel 00 which has the engine force and steering applied to it
· WheelC05 - The rotation axis of wheel 05 which only exerts a suspension force and rolls with the vehicle


Advanced Wheel Settings

You may notice that there are two more types of wheel bones that have not been described yet. These bones can be used to create wheels whose suspension moves in a manner more complex than simply translating along the z-axis of the WheelP bone. First I'll show an example of a translational constraint using a WheelT bone. This example is from the front wheel of the Nod Recon Bike:
The presence of the WheelT bone in a wheel hierarchy causes the wheel to translate along the Z-axis of the WheelT bone rather than the contact point bone. This is used for the front tire of the Nod Recon Bike.
The rear wheel of a Recon Bike rotates along an arm. This can be accomplished by using a WheelF bone. Below is a picture of that situation. The WheelF bone will be rotated about its Y-axis to maintain contact between the wheel and the ground (see the picture for how to set it up). This is probably the most complex type of wheel to create... Look at the Nod Recon Bike for reference.
· Each wheel should have a bone named WheelPxx and WheelCxx (where xx is a two digit number)

· All wheel bones should have all W3D options disabled except for Export Transform

· The wheels should be positioned at their extreme topmost position (smashed into the vehicle) and their contact points must be contained inside the world box of the vehicle.

· The hierarchy should look like this: Origin->WheelP->WheelC->Graphical Wheel

· The Z axis of all WheelP bones should point along the direction of travel of the suspension

· The X axis of all WheelP bones should point towards the front of the vehicle (direction of rolling)

· The Z axis of all WheelC bones should point along the axis of rotation of the wheel (typically down in the Top viewport)

· All wheel bones should have their flags set (append an 'E' to the wheels that are attached to the engine, append an 'S' to the wheels that steer, etc)


Turrets

Vehicles can have turrets which can fire weapons. The turret aiming motion is generated by the game code as long as certain bones are present in the model. There are three types of bones involved in controlling a turret. The 'Turret' bone will be rotated to set the turret's 'heading'. The 'Barrel' bone will be rotated to set the tilt of the weapon. And the 'Muzzle' bone will be used as the location to create projectiles from. Below is a picture of a the turret from the GDI Mammoth Tank:
In the above picture, you can see that there are several muzzle bones. There can be up to two MuzzleA bones and up to two MuzzleB bones. The 'A' bones are used for the primary weapon of the vehicle and the 'B' bones are used for the secondary weapon of the vehicle. All of the bones follow the convention that their axes should be aligned with the world axes; Z is up, X points towards the front of the vehicle, Y points to the left of the vehicle. If you create your boxes in the 'Top' viewport, they will be oriented in this fashion automatically. One improvement over the linkage shown above would be to attach the V_Barrels mesh as a child of their Muzzle bones because the game engine automatically applies a recoil to the muzzle bone (attaching them in that way would cause the meshes to recoil when the weapon is fired).
· The model should contain a 'Turret' bone, a 'Barrel' bone, and one or more muzzle bones (up to two MuzzleA and two MuzzleB bones)

· The bones should be connected in the hierarchy shown above.

· Visible meshes in the model should attach to the appropriate bones so that they move when the game logic controls the turret (i.e. the turret mesh should be attached to the turret bone so that it will rotate properly)

· All of the bones should have their pivot points aligned with the world axes.

· All bones should have Export Transform enabled and Export Geometry disabled.
Engine Special Effects
VTOL vehicles can control bones to display engine effects. Here are some examples of engine effects:

· The flame on the Orca engine lengthens when the vehicle accelerates or climbs (EngineFlame)

· The Orca engine rotates forward and back as the vehicle accelerates or decelerates (EngineAngle)

· The rotors on helecopters spin when they are in flight (Rotor)

Any bone present in the model which starts with the name "EngineFlame" will translate along its Z-axis along with the vehicle's acceleration. Any bone present which starts with the name "EngineAngle" will rotate about its Z-axis. In the screenshot below, the EngineAngle bone for one of the Orca engines is selected. Below it is the EngineFlame bone and not shown is a skin which has vertices attached to both bones and stretches as the EngineFlame translates.

Helicopter vehicles can use the EngineAngle bone to tilt their rotors as they fly forwards and backwards. In addition, they can contain 'Rotor' bones which will spin about their Z-axis when in flight. The parameters for how much these bones rotate and translate are all controlled through settings in the level editor.

· "EngineAngle" bones will rotate about their Z axis

· "EngineFlame" bones will translate along their Z axis

· "Rotor" bones will constantly spin about their Z axis while the object is in flight
As a vehicle becomes damaged, the game code can un-hide particular bones in your model. This can be used to show damage by attaching emitters to those bones since emitters in the model will start emitting when the bone they are attached to becomes un-hidden. There is support for three stages of damage, activated when the model reaches 25%, 50%, and 75% damage. When the model loses 25% of its health, all bones whose names begin with DAMAGE25 will be un-hidden. Once the object has lost 50% of its health, all bones whose names begin with DAMAGE50 will also become un-hidden. And when it has lost 75%, the DAMAGE75 bones will un-hide.
I need help from people who know how to model vechicles [message #80208] Thu, 15 April 2004 05:48 Go to previous messageGo to next message
SomeRhino is currently offline  SomeRhino
Messages: 260
Registered: February 2003
Karma: 0
Recruit
When the vehicle is moving forward, the WheelC bones rotate positively on the Z axis (so the pivots on wheelC bones have to be rotated 90 degrees along the Y axis so the X axis is pointing upright in Max). The WheelC bones are linked to WheelP bones, which translate along their Z axis to create suspension, unless more complicated suspension bones are used. I can give you a Max file when I get off work tonight if you remind me, Jon, if you want to see how a wheeled vehicle is set up.

I need help from people who know how to model vechicles [message #80225] Thu, 15 April 2004 06:38 Go to previous messageGo to next message
jonwil is currently offline  jonwil
Messages: 3557
Registered: February 2003
Karma: 0
General (3 Stars)

ok, thanks for the info.
Once I get to the point of needing this stuff, I can look into it further Smile


Jonathan Wilson aka Jonwil
Creator and Lead Coder of the Custom scripts.dll
Renegade Engine Guru
Creator and Lead Coder of TT.DLL
Official member of Tiberian Technologies
I need help from people who know how to model vechicles [message #80646] Fri, 16 April 2004 05:21 Go to previous messageGo to next message
Deactivated is currently offline  Deactivated
Messages: 1503
Registered: February 2003
Karma: 0
General (1 Star)
SomeRhino

The WheelC bones are linked to WheelP bones, which translate along their Z axis to create suspension, unless more complicated suspension bones are used. I can give you a Max file when I get off work tonight if you remind me, Jon, if you want to see how a wheeled vehicle is set up.


Use WWSkin to create suspension. Select the verticles you want to make move up and down and set WheelP bone as the controller object.
I need help from people who know how to model vechicles [message #82319] Wed, 21 April 2004 22:55 Go to previous message
Dante
Messages: 1039
Registered: February 2003
Karma: 0
General (1 Star)
nice copy Seaman

Previous Topic: door hast strage behavior - please help
Next Topic: scripts.dll 1.6 is almost ready
Goto Forum:
  


Current Time: Fri Dec 27 12:51:46 MST 2024

Total time taken to generate the page: 0.00951 seconds