Track Building Tutorial 2.6
Track Building Tutorial 2.6
Table of Contents
rF is a very unique sim, in that it was designed from the ground up, not to sell its assets,
(cars, tracks, and their physics) but rather to sell its game engine, and serve as a modding
platform for us. That’s why the original content released was all fictional.
This guide is divided into four sections; the first explains the different file types and
describes of how to use them. The second section goes into detail about how to find solid
info on a given track. The third is a compilation of several track making guides. And
finally, I included guides on the nitty-gritty stuff to improve track quality.
This guide was originally available as a wiki, and has been rewritten for offline use. It’s
meant to be a complete compilation of as many useful references as possible into one
convenient, easy to use document.
• Some sections are from the ISI track making guide, others were copied off the old
Race Sim Central message boards, and noted as such.
File Descriptions
This simulator has a complex file structure at first glance, but the files are actually pretty
easy to work with if you are patient, and work on them one by one. The tradeoff to the
complexity is that they allow you to customize every detail to whatever you need. Most
of the files only need to be setup once, and when created properly, will work on the first
try. It takes practice though, so if everything doesn't work perfect the first time just be
patient until you get an understanding of everything.
This section is a useful reference of all the contents of the various files used for tracks.
MAS files
These are compressed files similar to zip files. They help reduce file size of the meshes
and textures, plus can be locked for copyright purposes.
Alternatively, you can generate them with 3D Max using the gMotor2 plug-in.
http://www.rfactor.net/downloads/utils/rFToolsPublicV2.rar
GMT files
These are the 3D geometry of the track. It is up to you to decide what program to use to
Creating the 3D mesh for you’re track. There are many software packages that you can
use to do this task, but by far the best way is with 3D Max. Its what the author uses, and
what ISI’s whole modding scheme pretty much is dependent upon.
Here’s one strategy if you are 3D Max deprived or if you have tons of experience with a
particular 3D editor and have a way to convert it to 3ds format. Make the geometry,
convert it to 3ds then import it to 3D Sim Ed or BTB, then from there convert it to a
GMT.
I suggest Max, or BTB for all 3D work, but have heard that Milkshape and zModeler
work ok too.
To use this plug-in, you will need Autodesk 3D Max 5 or higher. 3D Max is a
complex and expensive 3d editing program used by professional 3D artists and
game makers. You can find deals on it sometimes if you are a student, but for
most people it’s out of reach.
http://usa.autodesk.com/adsk/servlet/index?id=5659302&siteID=123112
GMT importer for 3ds max v0.8 is a plug-in that you can use to import rFactor
meshes and their materials into Max.
http://www.filefront.com/17848771/GMT2_Importer_v0.94.rar/
3DSimEd is another program that can edit rFactor's mesh files, and it can convert
other tracks from several other simulators too.
http://www.sim-garage.co.uk/
DDS Files
These are found in the (Trackname)Map.Mas files. They are textures (or pictures) used
for all surfaces of the track; be it road, grass walls or trees. You need to generate a bunch
of these to make you're track.
Painting is a skill all in its self, like modeling, and takes a lot of practice to make
realistic ones, so if you aren't ready for all that yet you can start with the ones
used by the original tracks. If you are gifted at painting and want something
unique for you're project, a paint program with DDS file support like Photo Shop
or Paint Shop Pro will be you’re best choice for editing.
Generating the files is pretty easy, although you have to learn how to use the
nVidia DDS plug-in along with a tutorial on how to use them and save
transparencies as a mask layer (for trees and windows).
http://developer.nvidia.com/object/nv_texture_tools.html
File Structure
Here's how the files are supposed to be laid out in the Locations folder. To start a track
project, you need to setup some new files. They can be ones from an existing track, or
generated from the ISI tools. The MAS, SCN, and AIW files can be made pretty much
completely with the tools, but the folders, GDB and CAM file are best started out with
existing track files and edited to your needs.
First you should make a new folder in the rFactor/Gamedata/Locations folder. I suggest
naming track after the track's official name, rather than the area/location, for menu
navigation ease, plus other tracks could be in the same area.
You can easily give the track multiple layouts using the same assets by make a subfolder
in your track’s directory , and then making a new folder for each additional version. They
can all share the same track geometry and texture files, but need to have separate AIW,
CAM, GDB, SCN and image files.
*Repeat for each additional course layout as well as the files below
//RACE SETTINGS
GarageDepth = 4.0
RacePitKPH = 80
NormalPitKPH = 80
Practice1Day = Friday
Practice1Start = 10:00
Practice1Duration = 60
Practice2Day = Friday
Practice2Start = 14:00
Practice2Duration = 60
Practice3Day = Saturday
Practice3Start = 9:00
Practice3Duration = 45
Practice4Day = Saturday
Practice4Start = 12:00
Practice4Duration = 45
QualifyDay = Saturday
QualifyStart = 14:00
QualifyDuration = 60
QualifyLaps = 12
WarmupDay = Sunday
WarmupStart = 9:00
WarmupDuration = 30
RaceDay = Sunday
RaceStart = 12:00
RaceLaps = 60
RaceTime = 120
//SCORETOWER SETTINGS
SettingsFolder = Grand Valley //The name of the folder used for setups for this track
SettingsCopy = Grip.svm
SettingsCopy = Grand Valley.svm
SettingsAI = Grand Valley.svm //Default setup used by AI
Qualify Laptime = 92.000
Race Laptime = 94.000
INSTANCE BREAKDOWN
Note: Files, paths, and instances are loaded 'once' in the order they are listed in the SCN
file; so things like material settings and textures are only loaded once, for the first GMT
that uses them. (IE: if there is a bug in the first instance's material settings, it will affect
all of the other ones that use that material, or fix instances further down the line, if it's
fine and the later ones are bad.)
INSTANCE NAMES
The name of the object, and can be any word or number combination. Its recommended
that you use a name that wont conflict with other assets used with the track, like car part
names commonly used, and never use he same name twice in the SCN, or only the first
will be loaded. Special names are used for various special objects like skies, lights, loose
stuff and timing, so also be sure not to use those names mistakenly.
Render=False Used for barriers you want to be hittable, but not seen.
Change=False Used for timing meshes, not sure what they do yet
COLLISION FLAGS
TRACK SOUNDS
Special2=(2) //is an Air horn (Randomly Plays ambient sounds from "air_horns_1.wav
~air_horns_3.wav")
Special2=(5) //used to be reverb (for under tunnels, etc.), but I'm pretty sure it doesn't
work anymore, as the sound library interface changed and we weren't using it ...
You also need to add these sounds to you're sounds folder for the effects to work:
http://forum.racesimcentral.com/attachment.php?attachmentid=432716&d=1187172112
Animations - This object is tagged so it will spin like a top, also read the Animations
section
Instance=RotateY10_blahblahblah.gmt
Moveable=True
MeshFile=RotateY10_blahblahblah.gmt CollTarget=False HATTarget=False
SHADOW DEFINITIONS
ShadowCaster=(Static, Solid, 256, 256) //Use for prominent track object so they project
a shadow on the track.
Solid, //Can be either Solid or Texture, depending on if the object uses a transparent
texture, like a tree, or solid if it is a structure, like a building, sign or light post
256, 256) //The texture or object can use one of several resolutions for its shadow detail,
i.e.; 64, 64 or 128, 128 or 256, 256 (higher resolutions will severely reduce performance,
so use them sparingly)
CUBEASF
FILES USED
Searchpath=. //List of all file paths (from the Locations folder). "Searchpath=. " is
refering to the Lacation folder
Searchpath=TOBAN
Searchpath=TOBAN_LONG
MASFile=COMMONMAPS.MAS //List of all MAS files used
MASFile=TOBAN.MAS
MASFile=TOBANMAP.MAS\line
VISUAL SETTINGS
(Also refer to the GDB Section for more LIGHTING AND SUN ANGLE
SETTINGS)
View=mainview
Clear=False
Color=(0, 0, 0)
Size=(1.00, 1.00) Center=(0.5, 0.5)
FOV=(77.75, 62.50)
Clipplanes=(0.50, 1500.00)
View=rearview
Clear=False
Color=(0, 0, 0)
Size=(1024.00, 64.00) Center=(512.00, 32.00)
FOV=(62.5, 62.5)
Clipplanes=(0.50, 150.00)
Groupmethod=LinkSingle
Ambientcolor=(100, 109, 136) //Lighting color for shadows
Fogmode=LINEAR FogIn=(200.00) FogOut=(5000.00) FogDensity=(0.20)
FogColor=(203, 214, 236) //Environmental fog
LIGHTS
- also read the Lights Section
Light=NightLight00 //Light used for night racing, turns on at dusk and off at dawn
Type=Omni Pos=(-223.159912, 11.439373, 12.055908) Range=(0.000000, 43.000000)
Active=True Intensity=(1.000000) Color=(255, 255, 255)
Light=TunnelLight00 //A light that is on all the time and specifically for lit tunnels
Type=Omni Pos=(-63.024208, 9.746458, -286.504927) Range=(0.000000, 30.000001)
Active=True Intensity=(1.000000) Color=(255, 255, 255)
Instance=NightLight67Glow //The mesh used for night light's emissive glow mesh
VisGroups=(36)
MeshFile=NightLight67Glow.gmt CollTarget=False HATTarget=False
SKYBOX
- also read the the SkyBox section
Moveable=True
MeshFile=skyboxi.gmt CollTarget=False HATTarget=False
Instance=Sky
Moveable=True
MeshFile=Sky.gmt CollTarget=False HATTarget=False
TIMING
-also read the CheckPoints Section
Instance=xfinish //Timing objects (start-finish line, checkpoint sectors, and pit sectors)
Render=False Change=False VisGroups=(32)
MeshFile=xfinish.gmt CollTarget=True HATTarget=False
Response=VEHICLE,TIMING
Instance=xpitin
Instance=xpitout
Instance=xsector1
Instance=xsector2
STARTING LIGHTS
- Also read the Starting Lights section
Instance=startglow
VisGroups=(32)
MeshFile=startglow.gmt CollTarget=False HATTarget=False
Instance=startlight
VisGroups=(32)
MeshFile=startlight.gmt CollTarget=False HATTarget=False
Instance=pitglowout
VisGroups=(32)
MeshFile=pitglowout.gmt CollTarget=False HATTarget=False
Instance=pitlightout
VisGroups=(32)
MeshFile=pitlightout.gmt CollTarget=False HATTarget=False
Instance=pitlightin
VisGroups=(32)
MeshFile=pitlightout.gmt CollTarget=False HATTarget=False
Instance=pitglowin
VisGroups=(32)
MeshFile=pitglowin.gmt CollTarget=False HATTarget=False
LOOSE OBJECTS
Instance=Cone36 //This is a cone that can be hit on the track (it needs to be named
"CONE, POST or SIGN" for it to work)
Moveable=True
MeshFile=Cone36.gmt CollTarget=True HATTarget=True ShadowCaster=(Dynamic,
Solid, 64, 64)
GARAGE DOORS
(Functional)
Instance=pdoor44 //The door of a garage. Disappears when a car is using this space.
VisGroups=(36)
MeshFile=pdoor44.gmt CollTarget=True HATTarget=False
This file controls the path that the AI and user's driving aids drive, the race groove, as
well as the locations of starting, pitting, and garage, positions.
Definition of terms:
I’ll take a sample waypoint from an AIW file, in this case Road Atlanta 2007.
Features section
Starting at the top of the AIW with the features section
[Features]
pitlanes=2
startinggrid=104
pitspots=52
garagespots=3
auxspots=8
pitlanes=1
I’m not sure if this setting is fully supported in rF, but it allows you to have more than
one pit lane per track
startinggrid =104
The maximum number of cars that can be used on the starting grid.
pitspots=52
The maximum number of pit box positions i.e. where the cars stop to change tires
garagespots=3
The number of garage positions. i.e. where the cars start from for practice.
auxspots=8
The number of auxiliary positions. i.e. where the pace car starts and is parked.
Grid section
Next up the grid section. Note that for the warmup lap to work properly then the AI
waypoints should correctly link to the grid positions – see later.
[GRID]
GridIndex=0
Pos=(-63.101,-0.446,-3.263)
Ori=(0.000,1.568,0.000)
GridIndex=1
Pos=(-57.143,-0.445,2.305)
Ori=(0.000,1.574,0.000)
GridIndex=0
Pos=(-63.101,-0.446,-3.263)
X,Y,Z position of the grid position where Y represents the vertical height of the grid
position
Ori=(0.000,1.568,0.000)
The direction the car points at position Pos. They represent the co-ordinates of a point on
the surface of a 3d sphere centered on 0,0,0 with radius 1 in the direction you want the
car to point.
Pits section
This is the pits section of the AIW. Note that this MUST be used in conjunction with
proper waypoints for the pit function to work.
[PITS]
TeamIndex=0
PitPos=(47.247,-0.446,40.812)
PitOri=(0.007,1.582,0.000)
GarPos=(0,-30.767,-0.445,42.844)
GarOri=(0,-0.007,0.167,0.000)
GarPos=(1,-36.227,-0.445,42.847)
GarOri=(1,-0.007,0.167,0.000)
GarPos=(2,72.968,-0.448,42.793)
GarOri=(2,-0.007,0.167,0.000)
TeamIndex=0
The team number starting at 0. If order.pit has the team names defined for the mod then
the teams will appear in the order they are listed in order.pit
PitPos=(47.247,-0.446,40.812)
The position of the pit box – where the car stops to pit
PitOri=(0.007,1.582,0.000)
GarPos=(0,-30.767,-0.445,42.844)
The position of the first garage in the pit lane for that team (the first field being 0 for the
first car of the team, 2 for the second and 1 for the third)
GarOri=(0,-0.007,0.167,0.000)
The direction the car points at position GarPos. They represent the co-ordinates of a point
on the surface of a 3d sphere centered on 0,0,0 with radius 1 in the direction you want the
car to point. team (the first field being 0 for the first car of the team, 2 for the second and
1 for the third)
Auxiliary Section
These are the pace car locations
[AUX]
LocationIndex=0
Pos=(12.999,-0.442,-8.087)
Ori=(-0.039,-1.007,0.009)
The first Auxiliary position is where the pace car starts during a rolling start. It should be
in the center centered of the track, in front of the starting line.
LocationIndex=1
Pos=(284.156,-8.953,-210.659)
Ori=(-0.036,-1.216,0.006)
The second Auxiliary position is where the pace car parks during the race, and it should
be somewhere in the pits; usually right before at the pit exit line. Make sure it’s out of the
way of any traffic. A common problem I’ve had is mixing up these two positions and
having the pace car parked on the starting line and messing up the race.
[Waypoint]
trackstate=403
drivinglines=1
autogengrid=(-1,9)
autogenaltgrid=(-1,9)
teleportwp=(-1)
pitlanepaths=(7,9)
times=(93.5940,300.8420)
multilinetimes=(134.5720,340282346638528860000000000000000000000.0000)
number_waypoints=1143
lap_length=4073.936768
sector_1_length=1592.768433
sector_2_length=3148.718262
LeftHandedPits=1
FuelUse=60181.242188
AIBrakingStiffness=(1.0000,1.0000,0.9000)
slowwhenpushed=1.00
SpeedOffset=0.000000
DelayPitCrewLoad=0
LaneSpacing=4.50
ultracarefulyellow=0
OutsideAdjustment=-0.500000
InsideAdjustment=-1.000000
GrooveWidth=5.750000
GrooveHeightOffset=0.000000
SafetyCarReleaseDist=(0.8500, 0.9500)
GrooveWidthWet=4.312500
IntermediateFogLevel=(0.1450)
IntermediateFogPlanes=(0.0,1500.0)
RainyFogPlanes=(0.0,500.0)
IntermediateFogColor=(191.3,191.3,191.3)
RainyFogColor=(137.5,137.5,137.5)
RainyDarkness=(0.45000,0.05000)
WorstTime=(0.0000)
MidTime=(0.0000)
BestTime=(0.0000)
WorstAdjust=(0.9000)
MidAdjust=(1.0000)
BestAdjust=(1.2000)
CheatDelta=(0.0000,0.0000,0.0000)
AIRange=(0.1000)
AIDraftStickiness=(4.0000)
trackstate=467
Not used by the game itself but used by the developers to know what has been built in the
AIW file and what hasn’t been.
drivinglines=1
The number of fast paths used; The first being the main path and the second being the left
inside path for ovals.
autogengrid=(-1,9)
autogenaltgrid=(-1,9)
teleportwp=(-1)
pitlanepaths=(7,9)
times=(47.1119,999.9900)
The lap times for the dry line and the wet line if they are present – does not effect
performance
multilinetimes=(134.5720,340282346638528860000000000000000000000.0000)
number_waypoints=697
lap_length=2418.117920
sector_1_length=827.919067
sector_2_length=1509.346069
The total length of the track and the length from the start to the end of the first and
second sector respectively.
LeftHandedPits=0
If 0 then pit guy will wave the car right out of the pit garage if 1 he will wave left.
FuelUse=30038.017578
Determines how the game calculates fuel use for the track
AIBrakingStiffness=(1.0000,1.0000,0.9000)
slowwhenpushed=1.00
SpeedOffset=0.000000
DelayPitCrewLoad=0
LaneSpacing=4.50
ultracarefulyellow=0
OutsideAdjustment=-0.500000
InsideAdjustment=-1.000000
GrooveWidth=4.750000
GrooveHeightOffset=0.000000
SafetyCarReleaseDist=(0.8500, 0.9500)
GrooveWidthWet=4.312500
The width of the black streaks on the track in dry and wet conditions
All the fog parameters are not critical to the AI but are here for completeness – I would
tend to copy them from a default track.
IntermediateFogLevel=(0.1450)
Combined wetness factor where intermediate values are used (sunny fog values are in
SCN file!)
IntermediateFogPlanes=(0.0,1500.0)
RainyFogPlanes=(0.0,500.0)
IntermediateFogColor=(191.3,191.3,191.3)
RainyFogColor=(137.5,137.5,137.5)
RainyDarkness=(0.45000,0.05000)
WorstTime=(0.0000)
MidTime=(0.0000)
BestTime=(0.0000)
MidAdjust=(0.9250)
Used for 100% AI strength option (note that AIs now use full throttle above 95% AI
strength option)
BestAdjust=(1.1000)
CheatDelta=(0.0000,0.0000,0.0000)
AIRange=(0.1000)
AIDraftStickiness=(4.0000)
wp_pos=(54.9185,-1.9207,-34.2902)
wp_perp=(-0.5008,-0.0010,-0.8656)
wp_normal=(0.0198,0.9997,-0.0126)
wp_vect=(4.3529,-0.1123,-2.4740)
wp_width=(5.600,5.200,10.600,9.672)
wp_dwidth=(18.966,9.672,0.000,0.000)
wp_path=(-3.9284,0.0000)
wp_lockedAlpha=(0)
wp_galpha=(0.0000)
wp_groove_lat=(1.199200)
wp_test_speed=(54.435001)
wp_score=(0,64.649)
wp_cheat=(54.4350)
wp_pathabstractionspeed=(0.0000)
wp_pathabstraction=(0,-1)
wp_wpse=(0,0)
wp_branchID=(0)
wp_bitfields=(0)
wp_lockedLats=(1)
wp_multipathlat=(1.4823, 5.9823)
wp_pitlane=(1)
WP_PTRS=(773,1,-1,0)
wp_pos=(-338.9669,-0.4851,4.3541)
X,Y,Z position of the waypoint where Y represents the vertical height of the waypoint.
wp_perp=(0.2402,0.0010,0.9707)
Vector pointing perpendicularly right out of car for the perspective of sitting in the
driving seat (used for distance to edge of the track calculations)
wp_normal=(0.0198,0.9997,-0.0126)
wp_vect=(4.3529,-0.1123,-2.4740)
This setting measures the direction that the waypoint is facing in anticipation for the next
one.
wp_width=(5.000,8.600,10.000,13.600)
Distance from waypoint along the perpendicular to direction of travel (wp_perp) to left
edge of track, right edge of track, left edge of course, right edge of course
wp_dwidth=(22.086,30.000,0.000,0.000)
The distance the car can go left, right of the AIW line before it needs trackside collision
detection needs to be activated followed by two parameters which are adjustments to the
distance by which the left and right edge of track postions need to be adjusted for cut
track detection - i.e. 0,0 means that the left and right edge of the track is also the cut track
threshold
wp_path=(-0.2727,0.0000)
The first is the distance along the wp_perp to the dry line (can be negative if dry line is to
the right of the wp), the second is the distance to the wet line. This enables a course to
have different lines for the dry and wet.
wp_lockedAlpha=(0)
wp_galpha=(0.4500)
wp_score=(0,249.718)
The sector the wappoint is in -1, the distance from the start of the lap. This is used for
timing purposes
wp_cheat=(54.4350)
wp_pathabstraction=(0,-1)
wp_wpse=(0,0)
wp_groove_lat=(0.000000)
The distance the groove marks are from the AI line (along wp_perp)
wp_test_speed=(54.435001)
wp_event=(1.000,0,0)
Enables a waypoint by waypoint speed adjustment – could be very useful for banked
corners. The second two are special event fields. The only one that is really used is the
slow to pit lane speed special event which is 1,18 i.e wp_event=(1.000,1,18) which is
normally put just before the xpitin instance
wp_branchID=(0)
0 = main
1 = pit
2-105 = waypoint on the grid
106- ...= waypoint of pit box i.e. where car pits, one per defined team
wp_bitfields=(0)
0 for regular ai line waypoint, 1 for grid spot or pit box waypoint
wp_lockedLats=(1)
wp_multipathlat=(1.4823, 5.9823)
wp_pitlane=(1)
WP_PTRS=(47,49,-1,0)
Grid waypoint:
A Previous waypoint
B Current waypoint
C -1
D branchID code
Working through a sample AIW:
Pit location set-up at the top of the AIW file. I am sure that I don’t need to explain the co-
ordinate system. We will focus on the pit box for the sake of this document – I have
highlighted it for ease.
[PITS]
TeamIndex=0
PitPos=(47.247,-0.446,40.812)
PitOri=(0.007,1.582,0.000)
GarPos=(0,-30.767,-0.445,42.844)
GarOri=(0,-0.007,0.167,0.000)
GarPos=(1,-36.227,-0.445,42.847)
GarOri=(1,-0.007,0.167,0.000)
GarPos=(2,72.968,-0.448,42.793)
GarOri=(2,-0.007,0.167,0.000)
TeamIndex=1
PitPos=(39.037,-0.445,40.848)
PitOri=(0.008,1.575,0.000)
GarPos=(0,62.048,-0.447,42.798)
GarOri=(0,-0.007,0.167,0.000)
GarPos=(1,-41.687,-0.445,42.850)
GarOri=(1,-0.007,0.167,0.000)
GarPos=(2,67.508,-0.448,42.796)
GarOri=(2,-0.007,0.167,0.000)
Now we will take a look at the pitlane AI line. Note the items in the first waypoint
highlighted in red. The branchID being 1 indicates that this is a pit lane waypoint as does
the final field in the PTRS parameter. You will also note that this is waypoint 524 with
the previous and next waypoints being referenced in the PTRS parameter.
wp_pos=(67.3122,-0.3961,35.2356)
wp_perp=(0.0857,-0.0002,0.9963)
wp_width=(5.847,12.138,5.847,12.138)
wp_dwidth=(5.847,12.138,0.000,0.000)
wp_path=(0.0000,0.0000)
wp_galpha=(0.0000)
wp_score=(2,2264.338)
wp_groove_lat=(0.000000)
wp_event=(1.000,0,0)
wp_branchID=(1)
wp_bitfields=(0)
WP_PTRS=(523,525,-1,1)
The next waypoint is the waypoint on the AI line that has the branch to the first pit box.
Note the only change in format is the change of the –1 filed to the waypoint number of
the pit box waypoint i.e. 661, highlighted in blue.
wp_pos=(61.7520,-0.3958,35.6474)
wp_perp=(0.0612,-0.0002,0.9981)
wp_width=(6.347,11.802,6.347,11.802)
wp_dwidth=(6.347,11.802,0.000,0.000)
wp_path=(0.0000,0.0000)
wp_galpha=(0.0000)
wp_score=(2,2269.914)
wp_groove_lat=(0.000000)
wp_event=(1.000,0,0)
wp_branchID=(1)
wp_bitfields=(0)
WP_PTRS=(524,526,661,1)
Now at the end of the file we find the pit box waypoint itself. Note how the bit fields has
changed to 1 to indicate a none AI line waypoint. The branchID is 106 to represent the
first pit box waypoint as is the last parameter of PTRS. The waypoint on the pit lane AI
line prior is 525 and the one the car will move towards when it leaves the pit box is 528.
All highlighted in green. Note that the timing information in the score parameter
continues in all waypoints to ensure that the timing works wherever the cars go.
wp_pos=(47.2470,-0.3957,40.8120)
wp_perp=(0.3354,-0.0001,0.9421)
wp_width=(11.043,5.858,11.043,5.858)
wp_dwidth=(11.043,5.858,0.000,0.000)
wp_path=(0.0000,0.0000)
wp_galpha=(0.2880)
wp_score=(2,2285.311)
wp_groove_lat=(0.000000)
wp_event=(1.000,0,0)
wp_branchID=(106)
wp_bitfields=(1)
WP_PTRS=(525,661,528,106)
[TRACKVARS] // This file allows you to change the settings for all terrain values,
like road grip bumpiness, and particle effects.
RoadDryGrip=1.00
RoadWetGrip=0.80
RoadmetalGrip=0.80
RoadDustGrip=0.90
RoadBumpAmp=0.010
RoadBumpLen=13.0
RumbleDryGrip=0.95
RumbleWetGrip=0.60
RumbleBumpAmp=0.015
RumbleBumpLen=8.0
MiscBumpAmp=0.08
MiscBumpLen=4.0
// Roads
[FEEDBACK] // These are the main terrain settings, and represent the feedback
that the terrain produces.
Dry=RoadDryGrip //The traction setting of the circuit. By default it is be set to 1.0. This
example uses the settings from the TRACKVARS section for its values. The main reason
to lower or raise this setting is if you are making a track with rougher unimproved
asphalt, or a grippier surface than a standard race track uses.
Legal=true // whether or not the surface is considered part of the track or if it is out of
bounds, and will cause a penalty.
Spring=20000.0 Damper=10000.0 //used for springy surfaces, like rubber; spring is its
force and Damper is the speed that it undulates.
CollFrict=0.4 //the amount of friction that the surface exerts on the body or chassis of a
car when it bottoms out, scrapes a wall, or flips over.
Sparks=1 //whether the surface sparks when a car scrapes against it.
Scraping=1
Sound=dry //The set of sounds used for road noise and skidding.
Resistance=0.0 //the amount of extra energy needed for the car to move
Materials=road, conc //These are the valid material names used for the terrain type \
//Reaction – These are the visual affects that are produced by the terrain. There are
many different affects that are possible; you can copy them from tracks that you
know have the affects you need. In some cases, you will need to place special
textures in the Common folder for them to work.
Position=( 15.987, -5.0000, 2.361901) //Where the camera is located on the track. There
are some conversions needed if you are acquiring coordinates from outside of rF;
1) Swap the Y and Z axises
2) Reverse the direction of the numbers, so they are negative of their real direction
I.E.; ( 15.987, -5.0000, 2.361901) is changed to: ( -15.987, 5.0000, -2.361901)
Orientation=(-.04778, 1.87228, 0.00000) The starting direction of the camera, static cams
will always be at this angle.
Explanation of Orientation
(Pitch – up/ down, Rotation – left/ right, Yaw – lean left and right)
Rotate right -
Rotate left +
NE 7
N 6.33
NW 5.54
W 4.75
SW 3.875
S 3SE 2.33
E 1.66
.3 + 22 degrees
5 degrees of pitch = 0.1
Fov=( 55, 45) //refers to the 'field of view' of the lens used by the camera. High numbers
make a wide angle, "zoomed out" view and small numbers make a tight angle "zoomed
in" view. The second number is used for track side cameras with zoom capability and
measures the zoomed in maximum angle. (Also see Flags1 to activate setting)
Clear=TRUE
ClipPlanes=( .5, 2000) //How far away from the car the scene will be rendered. The area
outside this radius will be culled (clipped).
LODMultiplier=( 10) //The greater the number, the less objects will LOD. This can be
used to get better frame rate performance if the camera is causing slowdowns.
Size=( 1, 1)
Flags - These are used to turn off special camera types like chase, zoom and shake
Flags1=(0) // It can be set to; (1) for an automatic zoom camera; The min and max for the
zoom is controlled by the 2 numbers in the FOV. It can also be set to; (2) for chase
camera and; (4) for shake. I suspect that the numbers can be added together to make a
camera that zooms and shakes, or any other combination.
ActivationLocation=( 0.000, 0.000, 0.000) //The point where the camera will be
switched - usually close to the camera, but it can also be 10-20 meters up the track before
the camera, for better activation performance in fast sections.
ActivationRadius=( 100) //The distance from the ActivationLocation that the camera will
be used till its switch to another camera
TrackingRate=( 0) //Used with tracking cams, if tracking rate is zero, cam will perfectly
track the target, otherwise the number represents the camera’s speed at which it tracks the
target, with values ranging from 1-100. Lower tracking rates will make the camera lag
behind the target, and act more like a real camera operator. a rate of 100 will literally stop
the camera, so its always pointing in the default direction stated under Orientation
MovementRate=( 0) //Used with Chase Cams. The movement rate of the camera will be
the target’s speed, multiplied by the movement rate (ideal numbers are from .5 to 1.5).
MovementPath //A special path used for a chase cam - it will follow this path as the car
passes by the activation point, if it uses Flags1=( 2)
{
ControlPoint=(-122.194839, -2.448173, -154.186981)
ControlPoint=(-103.182999, -3.735965, -138.260880)
ControlPoint=(-84.171158, -5.023757, -122.334770)
ControlPoint=(-65.159309, -6.311549, -106.408669)
ControlPoint=(-46.147469, -7.599341, -90.482559)
ControlPoint=(-27.135624, -8.887134, -74.556450)
ControlPoint=(-46.147476, -7.600338, -90.482849)
ControlPoint=(-46.148510, -7.601526, -90.483040)
ControlPoint=(-46.149754, -7.604987, -90.484306)
}
NEW STETTINGS
Groups=1 //Up to four trackside camera groups can be made, by adding this line and
assigning each group a number, 1=group 1, 2=group 2, 4=group 3, 8=group 4
ListenerPos=(2.000,0.000, 0.000) //These two are for microphone location and volume
multipliers (the latter is probably more useful if you just need more volume for cameras
far away from the track).
ListenerVol=(1.00)
Keep it organized
Once I have a bunch, I make folders for them and label them something like
"Turn 1" and "Pits". Once I fill up all the folders so they cover all angle of the
venue I know I have a good chance of fully fleshing out the track. Before I even
attempt to make a track I make sure all my bases are covered picture wise. I've
had to scrap many projects due to not having enough photos.
Certain temporary tracks, ones that are less popular and ones that no longer exist
are harder to find pictures for, no matter how hard you search the internet. In
these cases I’ve had to contact people that live near the venues and go take
pictures for me. You might also be able to contact the track owner and they may
be able to help. For a historic track you might need to find some one who lives
close to the location with connections to archives that have old photos you can
get.
Missing Details
If you can’t find everything you need, you will have to decide if you can fudge it
enough to do the track justice. in this case you might have to use a bit of artistic
license. For many tracks especially very long ones I haven't had photos of every
section, and actually had to use overhead maps, aerial photos and topographical
maps to figure out what the scenery looked like. Photos of the scenery around a
track are also useful for filling in details that are missing.
Google maps and Google Earth are a good place to look for satellite images of the
track, which can be helpful for roughing out the basic details. You tube and
Google videos are a good place to look for needed videos that can help flesh out
details close to the track, that you cant reliably find in the typical 'car focused'
race pics you tend to find online.
Vidoes
Videos are also a reliable resource for fleshing out a track and getting its "look"
correct. Google Videos and Youtube are good places to search for full-lap in-car
videos, which I prefer. These sites only have low-res videos, so you may have to
order a DVD if you are serious about getting good footage. I like to capture
images of parts of the videos, like of bridges, for quick reference. These are often
more useful than having a large library of photos.
The Layout
You will need a good top down 2D map to accurately model the track. Google Maps is a
good place to start looking for aerial photos of a track. If you know the precise location or
address, you can get a detailed overhead view of the track or road, and use it as a layout
map for the track, surrounding structures and scenery.
Blueprints
Blue prints are the best source for making a track layout, but are rare. Certain
tracks have blue prints floating around that you can use for you're layout. You
usually have to have some kind of connection with the track owners to obtain
them.
GPS Data
GPS data is somewhat useful for roughing out a layout, but it shouldn't be the
only source you use. It only updates at 1 meter accuracy, so it’s not accurate
enough to be used alone. Look in the Elevations Section for more info on getting
this data
After you have the layout map composed, you can set it as the background image in the
3D editor you are using, Scale it as appropriate and model the track around it.
Track Scale
After you find the layout map, you need to get you're track scaled as close to perfect as
possible. Getting this done accurately is a little tricky. You will either need a map with
the scale on it and size the track so it matches, or know the exact track length and use the
method below.
First, Drive you're track at a constant speed of 30 MPH, timing the lap and then
divide this time by 2, then take the length of the real track and it by the divided
time to get the ratio you use to resize the track in Max. You can just as easily do
the test in KPH, if you prefer.
Example;
If the track is 2.5 miles long in real life, and it takes you 4.5 minutes to drive a 30
MPH lap around the layout you've made;
3) You can now enter this number (+100, or 101.11) as the new Offset:World
Scale (right click on the scale icon on the main toolbar) for the track, in Max.
Note: If you’re elevations are very inaccurate, or you haven't added any, these
calculations could be off by a considerable amount.
1) Mesh too small compared to desired result (meters to inches); rescale world
units by a factor of 39.36 or uniform scale 3937.008
Track Elevation
Most tracks aren't flat as a pancake, so it’s critical to nail you're elevation changes.
Elevation is very hard to get perfect due to limited sources for accurate data. Here are
some reliable resources.
Topographical maps
These aren’t very accurate but can be useful if you are making a non-permanent
track and don’t have a GPS readout. You will need some map reading skill to
make the most of this recourse.
Videos
Obtaining elevations from images can be subjective, due to camera lens distortion
(which makes hills look extra steep or flat). They are good for getting the feel for
where hills start and peak and fleshing out smaller bumps that Topo’s and GPS
might miss, but aren't reliable for the actual height.
I like using videos for rally tracks, since they have very uneven roads.
GPS readouts
This is the best way to acquire a track’s elevation. Unfortunately, due to the way
civilian GPS devices reduce elevation fidelity, you will still have to fine tune
them using videos or driver feedback to get them perfect and there will be areas
where the track is off by a meter or so.
Here’s a website that hosts GPS readouts of some US race tracks
http://traqmate.com/share_download.php
After you download it and install Traqview, take a look here for how to process
the raw GPS data.
http://forum.rscnet.org/showthread.php?t=296000
Everyone has a different way of modeling a track, and no one way is best for everyone.
There are two schools of thought when approaching this task;
or you can use one of the many 3D Max polygon tools: FFD Box, Bend, path
deformation
. I've built and released dozens beautiful tracks using lofting and my FFD Box techniques
and there is great debate over which of the many styles is better. I’ve tried all of them and
found tradeoffs with all of them.
Lofting Tutorial
This method uses a combination of a path and cross section splines to extrude a track
surface. It's the classic way to model a track and has been used for years to model simple
low poly tracks, but it's capable of much more if used correctly. Lofting is great for
roughing out a new layout quickly and gives quick results. It's a good technique for
beginners, but requires ALOT of post-lofting poly editing and UVW coordinate mapping
to really flesh out a design.
I’ve been made tracks using lofts for years and it’s a versatile track making method My
signature track, Lime Rock Park, was made originally from lofts; from the track surface
and curbs, to the hills, it was all made easier and more organic looking with the shapes
and lines that were used.
This is an old school technique, but it’s still useful for several reasons;
1) Its completely done in-3D Max, so you don’t need to export from a 3rd party program;
2) You get quick results. Literally within minutes you can have a road surface to drive on.
3) Testing new ideas and layouts is easy due to the quick turn around and spline based modeling.
1) Setting up the scene
To start your track, get your units set to generic units (one generic unit = 1
meter) Getting the scale correct is pretty much a lot of guesswork unless you
know for a fact that, say, the front straight is exactly 1200m long. Get a good map
of the track that is to the correct scale and then set it as a diffuse map on a
material. Create a flat plane roughly the size of the track (top view, obviously). It
will be used as a template for tracing the tracks path. Assign the track map
material to the plane and lower it 10 meters down so it’ll be out of the way of
your work.
UV map the plane using the “fit” and “bitmap fit” functions to get it mapped
proportionally correct to the plane. Then you can uniform scale it to whatever size
you need, without worrying about messing up proportions.
Start creating a standard line (spline) and set the vertex type to "smooth". It
doesn't matter where on the track you start from, it doesn't make any difference if
it's the start/finish line or not. Draw the line down the centre of the pavement.
Click to create a vertex only when necessary, create the minimum number of
vertices you can get away with. Since all the vertices will be of type "smooth"
you'll notice the line will sometimes bulge out as if it wants to go in another
direction--ignore this for now and just keep plotting along down the center of
tarmac. Just to give you some idea, a typical horseshoe shaped hairpin will
typically require only 3 vertices to make (one placed just before the start of the
turn and one just after the exit of the turn). Again, at this point don't be concerned
if the line is bulging out in places; just make sure your vertices are in the center of
the tarmac.
When you end the line click the last vertex on top of the first vertex to complete
the circuit. It then asks you if you want to close the spline, answer yes.
At this point you'll have a pretty roughed-in line following the center of the
pavement. For corners that need to be touched-up you can change the vertex type
from "smooth" to "bezier" or when you're in a really tough situation choose
"bezier-corner". DO NOT USE "corner" type vertices.
So, somewhere out of harms way create a line (spline) that is perfectly straight
and flat with only two vertices (the start point and the end point) and make them
both "corner" type vertices. What I do is just splash down a rough line then go
into vertex edit mode and use the transform type-in (F12) to move each of the
vertices so they are exactly straight. Let's say vertex 1 is at (200,200,0) and vertex
2 goes at (212,200,0) which would be 12m to the right. The width of this line will
be the width of the lofted pavement. I find widths between 8m-16m to be good for
racing.
4) Setting up the loft
Here we will assign the splines to the loft and adjust its settings
OK then, on to the next step, which unfortunately takes a lot of words to explain
but is remarkably easy and quick. Everything I say here is based on 3D Studio
MAX 3.0, the locations and perhaps even the names of some of these functions
may be different in other versions of MAX and I really can't help you there.
If you've gone through any lofting tutorials then you understand that lofting is the
process of pulling one or more "shapes" along a "path" to form a 3D object. For
example:
Hmmmm... that squiggly line looks kind of like a part of a race track. What if,
instead of that stupid star "shape" we substituted a simple straight line? Pulling
that along the squiggly "path" would probably yield something like a road, eh?
Now then, you've got your "shape" and your "path" so you're ready to loft your
track. Select your "path" line (the line that looks like your track).
- in the command panel go to the "create" tab (the one with the little white arrow
pointer on it).
- directly under that select the "geometry" button (looks like a gray sphere).
- in the pull-down list select "Compound Objects".
- in the arrangement of buttons below will appear a button that says "Loft".
(Somewhere in the fancy modeling icons list there is a "loft" icon that does the
same thing, but that's just as hard to find.)
In the lower part of the command panel will now appear a whole set of loft
settings and functions.
In the "Path Parameters" section you will see selections for Percentage, Distance
or Path Steps -- choose "Path Steps".
In the "Creation Method" section make sure "Instance" is selected, then click the
"Get Shape" button.
Click on your straight little "shape" line. As soon as you click the loft will be
generated. Now go back and click the "Get Shape" button again to exit that mode.
"Well, ummmm.... Jeeezzz, it created something but it doesn't look too much like
a road...what gives???"
It will look a lot better as soon as we apply the right settings.
If the loft is facing upright like a wall, you need to select the shape line and go to
the modify panel find “Line segment mode” and use the transform type-in
window to rotate the line on its Z axis 90 degrees, until its flat like a road, then
turn off line segment mode. Take a look at it in the side and front view ports to
make sure its level.
Go all the way down to the bottom of the command panel to the "Skin
Parameters" section (you might have to click it to make it roll-out). Use the
following settings
At this point your loft should start looking more like a drivable road. If you were
to apply a tarmac bitmap to it you could instantly make it look like tarmac. Let's
go ahead and do that....
Create your material and link it to a road surface bitmap that you like. Apply your
road surface material to the loft object. If you render the scene you'll notice that
the material is probably heavily stretched along the length of the track
(blechhhiieee!!). Let's fix it up nice and pretty....
The Length Repeat setting is critical to get right in order to make the tarmac look
believable in-game. Length Repeat is exactly what it sounds like: how many times
your road surface bitmap is repeated along the entire length of the loft. The
correct setting depends entirely upon the length of your track and, frankly, comes
down to a sort of guessing game to find the number that looks best for you. We've
started with 40 and will increase/decrease that number until the road surface looks
good.
Set the view port to "Smooth + Highlights" so you can see the materials in real-
time; if your display system is incapable of this you will just have to resort to
rendering it each time. Zoom in to a piece of the track close enough so you can
see what the surface is going to look like. Using a bitmap that doesn’t tile very
well (just for testing purposes) is the best way to find the right repeat length, its
best to have it a little less than square though or else it’ll look jagged at high
speed. Try making it 2 long.
Similarly, Width Repeat is how many times the bitmap is repeated across the
width of the loft. Almost always you want this set to 1, but there are some rare
situations where you would want it repeated multiple times; this setting allows
you to achieve that.
Notice also that you are allowed to specify fractional numbers like 1.5 or 3.25 to
get just the effect you might need for those unusual situations.
If the track uses multiple line segments on its shape line, its best to set width
repeat to its number of segments and turn off “normalize” on the surface
parameters. You can the select each line segment and scroll down the modify
panel to the surface parameters and give each segment a unique material ID. This
will be helpful when you convert the loft to a mesh because each polygon going
out from the track will already have a material ID and will be easy to assign
materials to.
Let's switch back to wire frame viewing mode for this next part. Remember above
in the "Skin Parameters" section I mentioned there would be more about the
"Shape Steps" and "Path Steps"? Well, here you go:
Shape Steps is essentially how many times across the width of your road polygons
will be generated. A setting of 0 = 1 quad across, 1 = 2 quads across, 2 = 3 quads
across, etc. Go ahead and play with that number and you will be see what I mean.
You can see how playing with this number can instantly cause you to have a high-
poly track that could be very FPS- unfriendly for everyone. A setting of 0 works
best in almost all cases. There are some cases where increasing the polycount
across the width of the road is desirable in order to make the road smoother in
areas where the pavement twists or banks to a significant degree and makes the
road too bumpy in-game, but you would really only want to increase the number
of polygons in those specific areas that need it, not the entire track--that would be
a wasteful excess of polys. You could always loft those troublesome sections with
a separate loft using the same "path" and "shape" as your original track loft, and
increase the Shape Steps for that second loft.
Then just use the higher-poly track parts in the areas that need it and stick with the
original loft for the rest of the track.
Note that "Shape Steps" has no effect on the "Width Repeat" for the bitmap
mapping across the width of the track, which is something totally independent
regardless of how many polys you have across the width of the track. Also note
that it does not change the width of the track, it only increases the polygon density
across the width.
Path Steps controls how many polygons are generated down the length of your
road. Finding the best number for this setting comes down to "best feel" and
"what looks best" and it is also greatly effected by how many vertices you have
on your "path" line. You will notice that around curves and where hills start/end
you need to increase the polycount in order to make it smooth.
Each time you change the Path Steps setting it will warn you that doing so will
change the locations of "shapes". This is actually a pretty important thing to be
concerned about and you will see why when we get into adding additional
"shapes" to change the road width, add camber, banking, etc. Try not to get into
the habit of mindlessly just clicking YES to this warning. For right now, however,
we have a very basic loft with only one shape on it, so go ahead and adjust this
number up/down and look closely at how it affects your track. Notice that if you
increase it too much the track will actually start to fold over itself in tight turns
and this becomes a royal mess to try and fix later. You want your final settings to
yield a track that is smooth around corners and hills/dips but also very low-poly
along straights. It will quickly become clear to you that this setting alone is not
going to give us what we need.
The other thing that greatly affects the poly density is the placement of the
vertices on your "path" line. Remember plotting out all those "smooth", "bezier"
and "bezier-corner" vertices? Notice how the loft increases the poly density based
on those vertices.
Notice also that how much you pushed/pulled on the bezier handles of those
vertices also affects the ultimate density and arrangement of your track's polys.
Let's see this in-action....
Un-select your loft and select your "path" line -- since it is underneath your loft it
might be easiest to use the select-by-name feature (Edit - Select By - Name).
Go into vertex .edit mode and move a vertex. Notice how the loft is effected in
real-time and adjusts the poly arrangement accordingly. Notice also how
pushing/pulling on the bezier handles of a bezier vertex has a profound effect on
the smoothness of your loft. Now go ahead and use refine to add a vertex
somewhere. Pretty powerful stuff, eh?
Since the whole goal is to end up with a track that is smooth where it needs to be
smooth, and low-poly along straights it is important to find the right balance
between the "Path Steps" setting and the amount and placement of vertices. Yet
you might not be able to make major changes to the vertices without changing the
shape of your track too much. You also do not want to end up with sections where
the polygons overlap each other. You can also experiment with changing some
vertices from "smooth" to "bezier" or visa-versa. It shouldn't take too long to
strike a good balance. If you have examined the construction of many of the
original tracks and you will already have some idea of what to shoot for in your
track surface.
Adjust the path so it lines up with the track better and has an optimal number of vertexes
Move the vertices around and tug-and-pull on the bezier handles until your line
follows the center of the pavement all the way around the track as perfectly as you
can. In some cases you might have to go back and actually add some additional
vertices in order to achieve the perfect curvature to follow the center of the
tarmac; you do this by clicking the "refine" button then click where you want the
new vertex to be created (make sure you created the right type of vertex for the
situation at hand--either smooth, bezier or bezier-corner). Be careful to not go
overboard and add too many vertices there should typically be a vertex every 20
meters on the tight spots and every 80 meters on a long straightaway. Most turns
can be achieved with only 2-3 vertices, and I have never run across a turn so
complicated as to require more than 4 vertices. Use the minimum amount you can
get away with--you'll see why in the lofting step.
Now go back and raise/lower individual vertices on the line to add the elevation
changes. Again, to achieve the correct and smooth elevation changes feel free to
use "refine" to add an additional vertex if you have to. You don't want any knife-
edge elevation changes. Pay close attention to your measurements here, it's easy
to over do it and end up with huge heights or really steep hills.
I’ve noticed that if you rise or lower a point by 1 meter it will make a gradual hill
and 2 meters per point will make a fairly steep hill. It’s a good idea to make the 2
points at either end of the hill half the height difference of the rest to make a
gradual transition.
Don't worry about getting this line too perfect on you’re first-try, you will be able
to go back and adjust this line as much as you need to later. NOTE: do NOT
attach this line to any dummy or to the "hierarchy". It should remain a free-
floating object in the "schematics view". Also, never delete this line (the "path), it
can come in very handy even much later in the track development process.
I've been asked if the grass and such are also lofted. Well, you can loft the
polygons for the rumble strips and berms pretty well and also at least have the loft
generate the spare polys that you can then pull on and stretch to form the grass
and gravel traps.
An alternative is to just "extrude" the polys for the rumble strips/berms/grass from
the edges of the lofted tarmac when it's finished. You can push/pull on these new
polys to form whatever you need. The good thing about doing it this way is that it
is incredibly easy and fast, the drawback is that you will have to manually map
those polys (if you loft them they can be automatically mapped to follow the
curves and hills--cool stuff when it works!).
With your "path" line selected, over on the command panel in the "modify" tab
you will see a "General" section. In there are settings for "Interpolation" and a
check-box for "Adaptive". I turn on "Adaptive"; it seems to result in smoother
lofts and better polygon arrangement in some situations. You can turn this setting
on/off at will at any time later if you want to compare how your resulting loft is
affected. Another way is to set Interpolation to “steps” and set it equal to the
number of steps in you’re loft, then it will match up perfectly.
This step is used where there is a change in terrain type, camber, or track width
The first thing you need to do is count how many lateral surfaces you will be
working with, starting from the middle and working outward. Be sure to double
the numbers to accommodate both sides. Here’s an example;
The process of creating the line and the sections is the key to making it work
correctly.
1) turn on 3d snap and check grid and vertex snap in the snap settings.
2) Make the grid visible then create a line that is 30 meters long, (snap the line to
the grid.)
3) Use the refine tool to cut the line into even 3 sections, to define the 2 grass
edges and middle road section.
4) Refine 2 more lines at 0.5 and 1 meter from edge of the road; these will be for
the curbs. Do this twice; you should have 2 segments for each side of the road
5) refine 3 segments at either end of the line; these will be for the outer wall
For making curbs and optimizing purposes, you can setup the 1 or 2 extra
segments for the curbs, then for areas that don’t have curbs; snap the vertexes of
the curb segments together (to the road edge) so they are and have an unsnapped
set of them for the parts where curbs are used. For the curb/ non-curb transition; I
go one space past the curbs and then add a non curb shape. This keeps the track
normal without making it look weird where the curbs and road transition.
You can make multiple width segments for the shapes as well by dividing the
edges of the line
This step creates the extra real estate needed for a complete, fleshed out venue.
One thing to keep in mind when lofting is to make sure the cross section is flat. I
use the transform type-in (right click on the rotate button to bring the window up
it up). Then use exact degrees like 90 and 180 to rotate with. If you don’t pay
attention to the flatness of the cross section, later on you will have problems with
the track being off by an inch or two on one side and you may need to redo the
whole thing...
Another good idea is to setup the material ID's of the loft sections by selecting the
shape's edge and assigning each edge the appropriate material ID in the surface
properties section. This will make all sections that are after the line use this new
material ID set.
I setup my shapes so they are always oriented on one of the X axises so they are
either straight horisontal aor verticle depending on which is easier to use while
editing angles and visible as a cross section from the top view. This makes it
easier to edit and to manage many shapes. If they placed are at right angles you
can use the transform gismo's handles and the transform type in window to edit
very precisely by focusing on one axis at a time.
What you want to look for first is whether the track is smooth enough to drive on
at high speed, with no lethal bumps or sudden angles in the surface. Also check
out the elevation changes, do they seem realistic? Are the turns relatively round
and not choppy and angular? Is the pavement wide enough or too wide?
Try to drive the entire track surface. Do you run into any polygons where the
game will not allow you to drive? If you need to smooth out the loft or make other
changes to it remember to make those changes to the original loft that you have
hidden. Un-hide it, and make your changes, then clone it. Hide the original again
for safe keeping and convert only the clone into an editable mesh.
Always keep that finalized loft (and the lines you used to generate it) tucked away
somewhere because you may find yourself in a situation later down the road
where you say to yourself "Damn! I wish I still had that finished version of the
loft because it would come in handy for what I'm trying to do right now."
If the track seems to be too wide, use the "Tape Measure" tool in 3D Studio Max
to measure the width. If the "shape" line measures 12 then the road width should
also have turned out to be 12.
If it is not the same then you may have scaled the path line up to make it the right
size for the track. This creates some serious problems because the resulting loft is
further effected by any scaling you did to the original path line, thus the pavement
will be the wrong size, and even the mapping values will be thrown off.
In fact, all units of measure are now thrown off when you later try to work with
those polygons; for example, try to extrude one 1 meter and it may end up only
0.273 meters in reality, so you have to figure a "conversion factor" to adjust for
the scaling. It can quickly become very aggravating. This is why it is important to
zoom your view port so that the grid matches up to the scale of the background
image correctly before you even start.
I have not found a way to tell 3D Studio MAX that I want the path line to be
considered to be un-scaled without it shrinking back to its original smaller size.
Unfortunately, the easiest and safest thing to do is to make a new path line,
considering the fact that you probably now have your view port zoomed out to the
proper size to trace the track map.
Stay away from scaling anything used in your lofts, it causes some tricky issues.
If you already know the length of the track you can do a measured lap around
your track at 30 Kmh\Mph and divide the lap time by 2 to find the actual track
distance in Km or Miles. You can then use cross multiplication to find out how
much the track needs to be enlarged or reduced in size.
To reduce the size of the loft create a “measuring tape” helper, go to “move
mode” and move the triangle part of it to be on the west side of the track and the
box shaped part is on the west side. Then go to the modify panel and click the
specify length box and increase the length until the green line reaches the east side
of the track (where the box is). Multiply the measuring tapes length to the number
you got from the measured lap and type in the new length. Then select the path
line in “line segment mode” and reduce\increase its size to match the measuring
tape using uniform scale. You may need to move the line around a bit to match it
up to the measuring tape.
Here is and an example:
The track real world length is: 3 miles
You take a lap around the track at approximately 30 Mph and it take 8 minutes.
The 8 minutes divided by 2 = 4 miles
The 3 miles divided by 4 = 0.75
The measuring tape length is 500 meters
Multiply the 500 meters by .75 and it = 375
Type this into the measuring tape length and reduce make the path line match the
green line’s length.
Glossary of terms
Loft A compound object composed of a Path for the layout and one or more
Shapes for the cross section.
Path An editable spline used to control the length of the track; where the
track goes and the elevations
Shape An editable spline object similar to a path, but used to control several
features; the width of the track or how wide the road, curbs grass and
walls are; the height of curbs and walls, and control camber angles and
embankments beside the track.
I use 3D max 5 and above so this guide will apply to that. It’s not going into any track
design concepts but more focusing on this modeling style, there are other resources for
that already in the tutorial.
This method uses 2 modes to edit the track; it uses FFD Box mode for editing the
direction, elevation, banking and width of the track. It also uses Editable Polygon mode
for adding and editing details like walls, curbing, fencing, mapping, small bumps and
other similar features too small or intricate for the FFD box to handle.
This guide is aimed at making the drivable track surface but it can be adapted for
in/outfield sections or tree lines and rows of trees, you can skip alot of the steps and go to
step 2, 5 and 7 after you make the needed geometry. For these special things you will
simply need to make a long straight section of them and map appropriately, then precede
to steps 2, 5 and 7. An infield section would be similar to the track piece described here,
but have bigger squares and only need 1-2 polys across; a tree line would look like a long
wall, and a line of trees would require you to create a groups of 3D trees, then clone them
and place them in a line that’s 10 or so meters wide and 400 meters long or more if you
want. These are just examples of things I've FFD Box modeled.
For starters, some basic track geometry is needed; Make a plane that is 1.5 KM long and
30 meters wide and has 3 width polys and 150 length polys, This makes a basic track
surface with the polys for (3) 10 meter wide track sections; the left and right grass
sections and center road. After the plane is formed, convert it to editable polygon, not
editable mesh though; I've found polys use 90% less memory and CPU time than meshes.
Now select the section of track on the center and change its material ID so it corresponds
with the road material you are using, and the 2 side sections are assigned to the grasses
material ID, then apply a multisub material to the geometry.
The thing missing is a wall, so make a box that’s 1500 meters long. 0.2 meters wide and
1 meter high, and has 150 length sections and 1 height and width section. Convert it to
editable polygon and delete all of the front back and bottom polys. Move it so that it
matches up with the outer edge of the track piece, and use vertex snap to match it
perfectly. Clone it and snap the new one to the other side. Now attach the walls to the
track piece.
Apply a multi-subobject material to the geometry that has all the basic materials you
plan on using, ie; road, grass, sand, walls, curbs.Now select the middle section that will
be the road surface and change its material ID so it corresponds with the road material
you are using, then do the same for the grass and wall sections, and then
Mapping can be done very simple, since the track piece is straight; I just select, let’s say
the road polys, then apply a UV map modifier, and set it to planar mapping, and make the
mapping length 20-40 meters, depending on the texture size. This can be fine tuned later
by using the UVW XForm modifier and editing the tiling value. Be sure to collapse to
polygon after mapping each section.
Next apply a FFD Box modifier to the track object. Change the number of control points
to 2 for height, 4 for width, and the length points every 50 meters (31 points for this
example). Also set it to deform: all vertices.
There are no reference markings on a FFD Box when its in Poly Edit Mode so I use a
Template to keep track of the FFD Box's control point locations. It runs along the length
of the track and I've found it it way easier once you start deforming the track and want to
go back and edit the geometry. It works like a measuring stick.
So lets say I want to add a curb at Turn 1;
1) Id have to count the number of control points from the start of the track to where I
want the curb, (count the number of polys too)
2) then go to the object's editable poly level and add the curb where the Template's
number matches.
3) You can even go one step further, to make sure you’re at the right polygon by;
counting the control points, and then counting the polygons past the control point to the
curb, i.e.; 12 control points (CP's), plus 8 polys for the beginning of the curb, then 13
CP's plus 4 polys for the end of the curb. I reduce it to numbers like Curb1= 12-8, 13-4
this makes it easy to jot down on scratch paper.
To make a Template, I first measure the length between the FFD box's control points
using a measuring tape, then make a single line, with a perpendicular line at the end, then
clone it and snap additional lines to the end of the first until I have enough for the length
of the track. Afterwards I create the numbers and position them by hand.
I generally try to reuse the Template, since it saves time, and that's what this method is all
about. One trick, when you have the Template loaded is to resize it lengthwise so it
matches you’re FFD Box. The Template's axis center is at the beginning of the object to
make it easier to line up, just place the beginning of the Template at the beginning of the
FFD box and it should resize very easily without having to reposition later.
The Template only helps in edit mesh mode so after I get a track's shape worked out I
place numbers around the track every 15-20 points, so I can keep track of the control
points easier when in FFD box mode. It cuts down on the amount of time spent counting
control points while trying to line up new additions to the track surface.
Now that I have the track, FFD Box and the Template made, I can start on the fun part;
wrapping the track around a track design, adding elevation, banking and making the
geometry details.
To do this i first line the track object and Template up with the beginning of the track,
this is usually a straightaway, so it should be simple. They need to be moved and rotated
to match fairly well though - at least with the starting line. Once they are lined up, move
the track back 2 steps, so the "2" on the Template is at the staring line. This will allow for
some smoothing with the last section of track once it, so they will match up seamlessly.
Now I go to the control point level of the FFD Box, and select the first row of points and
move them to match up with the track design. I proceed down the line, trying to keep the
lengthwise spacing fairly smooth, and where possible around 50 meters. Once the first
corner is reached you will notice that the track doesn't rotate automatically and that you
have to manually rotate each row to match the track's changing direction. The track piece
is fairly long so you may need to move the sections you haven't worked with yet down
the line every so often to make them easier to reach.
Once you get all of the rows of control points set up and where you want them and
rotated correctly you can clone the track object and Template (resetting the new FFD Box
of course) then repeat Step Four, accept this time overlap points 1-2 from the second
piece and 30-31 on the first. you may need to move the second piece back a few points if
the end of the first track piece is at a sharp corner where the 2 parts wont come together
smoothly even with a transition.
Once you make enough pieces to go all the way around the track design; the last piece
will need to match back up with the first one. This will be done similar to how the first
and second matched up, but there will probably be alot of extra points at the end of the
last piece, you will need to line up at least 2 of them with the first piece, and try to get
them lined up as closely as possible so there isn't a bump.
You will notice that there is an extra point at the width divisions between the grass and
road and outer edge; these are used for moving the track width wise, so if you want to
make the track wider in some places, you can select just the 2 on the right or left (be sure
to band box rather than click, so you select the top and bottom points together) and move
them across till they match the desired track width. Then if you want to change the width
of the grass, you can select just the outer point and move it across till it’s the desired
width.
Elevation is very straight forward; you just select a row of points, and then move them
vertically. Camber is similar, accept you only select the 2 left or right points and move
them up or down depending on the direction of the corner. I usually do camber this way
to keep the grass level, but you can try adding camber to the grass too by selecting the
outer points and moving them.
This should give you an idea about how a whole track would be made solely with FFD
Boxes, but there are other tricks I use for really wide grass sections and connecting roads,
ill try to detail them later.
Sample Pieces
Here are some 3D Max 5 samples that I made for you to play around with and give you a
clearer idea about this technique and try it out without having to do any "work".
http://forum.racesimcentral.com/attachment.php?attachmentid=426932&d=1182560030
It includes 2 pieces of track that match up front to back to make a 1.5 mile track; also
included are the track piece's "Template" (used to keep track of where the tracks polys
are relative to the FFD Box’s control points), a row of high detail 3D trees, infield and
outfields sections, a tree line and an outfield embankment.
They are already edited to show what the FFD Box can do. If you want to use them, I
recommend first resetting their FFD boxes, so you start off with a fresh straight piece.
With these pre-made examples all you have to do is click on FFD Box in the modifier
stack and go to control point level, and in the view port, you will see the yellow and
orange lattice. Band-box the yellow points that you want to edit, then try moving and
rotating them.
You should get the idea pretty quick; just think of it like a spline, but with extra lateral
points that are used for the width and banking.
Finally starting up this thread as I mentioned before. Sorry for the delay I have been quite
involved in projects of many sorts lately. Basically with this I am going to cover for
starters my own track modeling technique, I've run into several techniques before. Such
as standard lofting technique which I would recommend Uzzi's tutorial to learn, or the
Track Section technique ISI uses which you can read more about in Undoz's thread.
There would also be techniques involving using 3Dsimed or Sandbox, all good
techniques which you can read more about in other places.
The other thing I will cover here is alot of rFactor track basics, including materials,
objects, shadow casters, transparency settings, etc. Only thing I won't cover will be
AIW's, Cam's and startlight effects for now.
I will warn you I am not usually heavy on including images in these kind of explanations,
I just pull all this from my head on the thought, with so much going on I don't have time
to structure this in your typical visual tutorial manor, but hopefully my explanations will
be detailed enough you can understand each part well and you are free to ask questions I
think. Not sure what the full scope of one of these Classroom threads is or procedure
thereof.
Preparing to model
---------------------------------------
Before you do anything actually involving the construction of your track its best to follow
the initial steps
Research -
-Find Photos, VIdeos, Satellite Imagery like google earth or terraserver
-Need more, can check with the track or if you find contact to a real driver, ask them
about the track
- Setup your track folder, once you get your model done your going to want to test it alot
so you want this setup so you can quickly go from max to game in an instant as well as
load it into the viewer for quick reference.
I recommend First making your track folder, Inside you need these essential files
Trackname.gdb
Trackname.scn
Trackname.cam
Trackname.aiw
If you copied another tracks files and are editing them, be sure to adjust searchpaths in
the scn file, and adjust the gdb header name and track information to match your track,
header name needs to be name you use for all the files above "trackname" information
just needs to be something you can recognize.
I then recommend making two folders, one called gmt, and one called Maps. You will
export your gmt files from Max to the gmt folder. As you make your maps you will place
them into the maps folder. When things are wrapped up, these folders will be easy to turn
to mas files. Also remember you have a texture folder in your development folder
mentioned earlier. Use this to work in, keep PSD templates, etc so you can keep this
MAPS folder clean and ready for packing. Be sure to add these to the searchpaths in your
scn file, the paths may look something like this then
SearchPath=.
SearchPath=TRACKNAME
SearchPath=TRACKNAME\GMT
SearchPath=TRACKNAME\MAPS
MASFile=COMMONMAPS.MAS
You will need Commonmaps.mas since it contains essential files for Rfactor. It is located
in the Locations folder, the first searchpath,
SearchPath=.
tells the game to look in the folder prior to the folder its in, which would be locations
folder, so you are good here.
Next some essential files you'll need to have your track load up and look, well normal,
this is usually skyboxi.gmt and sky.gmt. The maps going with these would be something
along the lines of CloudR001.dds CloudS001.dds, Night.dds, sunset.dds, and sunrise.dds.
If for some reason you used a scn file called for a different skybox setup, check your scn
file to see what objects are needed and check the track you got that skybox from to see
what maps it will need. As always the final files for the sky you need will be for the
skyboxi.gmt which should be something like BKA or BKB, along those lines. The
skyboxi.gmt is usually the file you can make yourself and will likely want to, its usually
just a cylinder that surrounds the track with anywhere from 6 to maybe 12 faces, in
Rfactor they tend to have just one map repeated along them, in other cases you might
want to use several maps to make a detailed horizon. So once again, put gmt files for the
sky into gmt folder and textures in the maps folder.
So now you have a development folder and a track folder with the essential files.
If you used google earth or some other satellite image service or have an aerial photo you
would like to use. I recommend getting it at the highest resolution and closest zoom as
possible. If your track is very large and the image such as in google earth would be
enormous. Then instead use the image in pieces. I have had sometimes 25 images all in
very close zoom from google earth.
Then start up a new scene in 3dsmax. Check your units for starters, go to Customize on
the tool bar, a menu drops down select units setup, hit the system unit setup button, make
sure it says 1unit = 1 meter. Once done you can change the display units to whatever you
intend to use, usually meters is fine but if your information is in feet then change it
accordingly.
Now make a plane in top view, size it to the size of what one of the images you have for
your track photo is in pixels, say 640 x 480. Open the material editor in Rendering on the
toolbar, select material editor or just press "M" I believe for shortcut. Now select one of
the materials in the grid of sample materials there likely look like spheres. Choose the
button beside diffuse color, it opens a menu choose Bitmap then select the image you
want. Now either drag that material over to the plane you made, or select from
"material"- "assign to selection" in the material editor. Finally in the material editor there
is a small blue and white checkered looking cube, select it to make that material show in
your view port. If your view port is currently showing in wireframe, right click in the top
left of the view port and select Smooth Highlights. Your texture should now appear on
your plane, and if the plane is sized right it will look right. Now in Google earth or using
whatever information you have measure a part of the track. Make a tape measure in
3dsmax by selecting create in the toolbar, highlight helpers then select tape measure,
click and drag in top view to make a tape measure over the area you know the size for,
find a nice straight spot, either up and down or sideways. The size is likely wrong, so in
the tape measure options on the right check the box for specify length and enter the value
you know. Now select the plane again and using the scale tool, scale the plane till the
area in the photo matches to your tape measured size. Thus you have one piece of your
image at correct size to model from now, if all your images making up your track photo
are same size you can copy this plane, make more materials like before with different
textures and assign each to a difference piece, then fit them together. To help you fit them
together, I usually right click on a piece, select properties, then turn its opacity down so I
can see through it and line them up that way.
Once done you have your full track image there, if it looks too blurry, select the
customize option on the toolbar again, select preferences, then select the view ports tab,
select configure driver and make sure the boxes for match bitmap as closely as possible
are selected. This works best if your using Open gl driver for max.
That is all for now, that is basically how I setup to start a track, its much quicker process
than it sounds once you get use to it. Next time I will follow into beginning the modeling
process.
--------------------------------------------------------------------------------
Part 2 - Modeling
Finally getting back to this, just been busy busy busy, lately.
To start with as previously stated I am going to cover a modeling technique I use. This is
the same technique I partly used on my current projects, though since have perfected it a
bit more which is all of what I will cover here. This is not the ISI modeling method, while
I do find ISI's method interesting, and especially useful in some situations I tend to like
my method for to me getting more detailed road feel but sacrificing some in other areas.
To start with you create your spline as usual if your using a dimensions map, or satellite
photo or whatever then try to match the spline to the center as closely as possible but you
can adjust it in places later if needed. Also try to keep an even spacing of points along
your line, so however close your points are in your tightest turn, which when doing this
you only want to use just enough points to make the shape, too many points can cause
odd wavering in your line. I tend to use just the Smooth line creation method, but you can
use bezier if you feel more comfortable with adjusting bezier handles to get an exact
shape. Also remember that if its a very long track you don't have to make the entire track
one line. You can create in in sections. It helps to use snaps in this case and have it snap
to vertex, so that after you make one line piece, you can snap to its ending point and start
again so all connecting points between each piece of the line are matched together. Once
you have the whole track made out then you can select your starting line and attach each
of the other lines to it. Now you have one long line but you also need to select each of the
places where there was two lines connecting and weld those two points together. You can
usually tell these points by there being a square shape around them marking the start of
another line, once welded that will go away and in the end there should only be one of
these left, being the point where you first started the first line. If your not familiar with
how to weld then while in vertex editing mode after having selected your line, there is a
button on the right side column called weld. Select two points relatively close , the
number beside the weld button determines the distance the points can be from each other
to be welded, this helpful for selecting a large area of points or vertices and using weld,
and only the places where there are two vertices within that determined area will be
welded, saves alot of time when it comes to welding alot of places without having to hunt
them all.
So now you have your base spline for the track. you can at this time in vertex editing
mode, create your elevations by moving your points up and down as desired or using
whatever other elevation technique you want or basing it off whatever data you have. In
most cases many will probably be making educated guesses at this point but if you have
the data use it. Once that is done you should have a spline in the relative shape of your
track with elevations. Now comes the loft.
To start wtih use the information you have or if using Google earth, take a measure of the
track width, this may vary in places on some tracks, if so then planning ahead, you can
loft in sections changing track widths then merge them later, but for now we are
assuming its one basic width. Create a line in front or back view, the direction you make
your line also will determine which way it faces, up or down in your loft, I think right to
left will get you what you want. Make this line in corner creation mode and hold shift
while making it to force it to stay straight, if your units have been setup properly then it
should be no trouble to make this in the width of your track. For now, only make the
section a single segment, meaning two end points, no more.
Now select the track spline, go to create tab on the right, marked by the mouse pointer
icon, select the first button below that looks like a sphere which is for geometry, then
from the drop down list choose compound object, then finally select the button below that
named loft. Now just do a quick hit on the get shape button, and select that second line
you made which will be your cross section for the loft. Your track spline should now
form a separate object that is your loft and will be the width of your track. If its not facing
up, then select that second line you made earlier. Go into segment editing mode as well as
turn on rotation snaps at the top tool bar the button that looks like a magnet with a
rotation arrows next to it, and rotate the line segment a 180 degrees and you should be set
with your base loft.
first off. the mapping of the surfaces. use the sample track piece that got released the
other day as a guide to how the different dx shader levels are setup. remember, you have
to set up 3 dx levels of materials to have a good looking track. have a look at each texture
level for each material as well to see how it is setup.
so make you first section roughly 10x10 metres, 4 polys wide x 2 polys long. convert to
editable mesh. extrude out the side to make your different sections of track surface. the
painted line along the side of the track, the apron, grass, walls, and more grass etc past
the wall.
Select the faces that that are your walls section and extrude up to the height of the wall.
delete the faces at either end. these will be unseen and a waste of memory as they will be
mapped but not seen in the game.
assign the different polys a material id to correspond to your material ids in the material
editor. use a uvw map modifier to get the tiling right. don't forget the spec, additve and
multiply textures in the sample track piece are using a separate map level to the base
texture. so you'll need to add a separte uvw map modifier for each map level. never use
the uvw tiling in the material editor. in the sample track piece, make each of the texture
levels visibile to see how they have been setup to look good.
put in as much detail as possible into this first section. light poles, bushes, trees etc.
anything that is going to be repeated often around the track. its easier to remove
something than to put it in later. if you have a wire catch fence on top of the wall, put that
in now as well.
This is found under Tools in the menu bar. what this does is creates copies of your track
section in an orderly manner.
select your track section and open the array menu. make "type of object" copy, instead of
the default instance. depending on which way your track section is facing you want to
enter 10 in the x or y values for Incremental at the top. you can always undo if you go the
wrong way. negative values go the opposite direction. Under Array Dimensions, make
the count 10. hit the OK button.
you should now have a 100 metre long track section. select the first section and attach the
rest to it. you might want to clone the first section before hand, and move it to the side.
just as a reference piece.
at this stage, you might want to remap some sections, just so the textures aren't repeating
so often. adding new grass or dirt textures to areas, just to give variety.
Once your happy with that, open the array tool again. but this time make the Incremental
value 100. if you know the length of the track is say 1.6km, you'll want 16 track sections
in the count entry.
You now have the length of your track laid out in a straight line.
select all your track sections and assign a ffd box modifier to all of them. under set
number of points, set the length to what ever you think will be appropriate to get the
elevations right for your track. experiment. 2km track. 20 to 22 should be alright. if
you've got lots of elevation changes you might want more.
lattice and source volume should be both checked. and deform - all vertices should be
checked.
go to side or front view to see the track sections from side on. select the control points to
move them that section of track up or down as required. continue till your elevations are
all done. if you didn't touch the first and last group of control points, your track will line
up when bent into shape.
Bend
now its just a matter of grabbing each track section and placing it where you need it.
applying a bend modifier and butting each track section to the previous. using the bend
axis of Y to bend the track left or right. adjusting the upper and lower limits of the bend
and moving the bend centre point to get the required shape of your track.
If all goes well, your first and last sections should join up and be of the same elevation.
congrats. you should now have a basic track that has not much eye candy, no pit lane as
yet, but can be driven on in game, but not raced or any ai.
1. Make your track section, be sure to make the UV mapping now. (in my image the grid
size might not be correct, don't follow that )
2. Select the track section , hold shift and move it at the margin, then a cloning dialog
will appear . Set your number of copies and hit ok.
3. Select a track section, be sure that it is edit poly object. Hit attach and select the other
track sections.
4. Go into vertex sub object mode, select all the vertices Ctrl+A and click on weld button
to unite them.
5. Add the path deform binding modifier to the track , select the path of the track and
mess with the settings.
You don't have to use this method on the entire track. You can combine whatever suits
you . Be creative
1: you have two different track sections (don't forget to uv map them)
2: after you follow the steps from my previous post, you colapse each part to editable
poly
3: enter the face subobject of a section and delete the overlapping part
4:attach the other part of the track (make sure that you've colapsed it before, so it keeps
the shape of the path)
1: I add a bitmap map to the diffuse channel. I use this texture as a guide . I apply the
material to my section and I click the show map button (the one in the red circle). As you
can see the uvmapping is wrong right now.
3: I don't exit the sub object but I add an uvw mapping modifier. Because I didn't exit the
sub object, the modifier will work only on the selected faces. We will map each part at a
time.
The orange box that you see is the projection gizmo of the uvmapping, It is aligned the
right way, but as you can see from the circled line, it isn't orientated as we want it to be.
4: I click the angle snap toggle from the tool bar, this will let us to snap to the angles
when we are rotating, so will get a nice 90 degrees rotation.
Go into the UVW mapping modifier sub object, click on the gizmo and rotate it 90
degrees so that line from the gizmo will face to the direction we want (you can also see
the texture rotating), then click on the Fit button so it will take the shape of the road.
Now because the road is too long and the texture will be stretched I've added 2 to the V
Tile . This means that the texture will tile 2 times in that direction.
After you are done, collapse the object back to edit poly
7: I've aligned the gizmo to Y and I've hit the Fit button so it will take the shape of the
fence. I've added 2 tiles in the U direction so it won't be stretched. Collapse it after you
are done.
There are multiple methods to do this, but I hope that you will learn some tricks that you
can use elsewere.
1: We have a tight corner. Notice that when you bend the track around this tight turns you
will have some problems with overlapping poligons. Go into subobject and clean that
area, collapse the vertexes that are not needed.
4: Now I want to create a sand section with some grass near the fence. Select the Cut tool
and start cutting the poligons.
5: I've cuted it in one more section so I can apply a texture that makes the transition
between sand and grass. As you can see, we have to make the mapping again to fit our
needs.
Attached Thumbnails
6: I select the sand section and I apply my guide texture so I can orient the direction of
the mapping nicely.
On this selection I add a UVW modifier, but this time I select the face mapping instead of
the planar one. I've done this because I want the texture to follow the edges of my cuts.
Next on the same selection I add an UVW Xform modifier on top so I can orient the
texture in the right way.
After this collapse the modifier stack to edit poly.
8: I select those and I apply an UVW Xform modifier to rotate them. In this case I had to
rotate it to -90 degrees.
9: The texture is too stretched and I want to tile it more . I select the sand faces and I
apply an Xform modifier and I increase the V tile to 2.
10: Apply the same technique to the transition area and to the grass area.
Select the area
Add UVW mapping modifier on face mapping.
UVW Xform modifier to rotate the texture on the faces if needed
Collapse everything to edit poly
If you have individual faces that aren't mapped correctly , select those, add an UVW
Xform and rotate them like the others.
Attached Thumbnails
2: To make things easier, I've kept the path that I've used to create this section with path
deform.
I select the path and I apply a sweep modifier (Note that sweep modifier is only available
in max8, but there are other methods to create this, like loft. I choose the sweep mod
because you can use it to create other things like rails, fences and it works easier then
loft)
Select a bar section and modify it's parameters so it will fit the track. Mine here is very
thin.
3: I've could've skipped this part if I choose a custom shape of a line instead of the box in
the sweep mod, but I wanted to show you more things
Collapse the object to an editable poly and enter in face sub object. Make active Ignore
back facing and By angle 45 .
Click on a face on the top of the box. Now you will have the entire top face selected. We
want to keep only this one so Ctrl+I to invert the selection and hit Delete.
4: What are we doing is to create a surface to deform the elevation of our track. We can
do that manually but the track has too many polygons and it is hard to keep it smooth, so
this way we have fewer control points on the elevation.
Add a turbo smooth modifier and increase it's iliterations until it has a similar density to
the track (more density is better, but be carefully because it will increase the calculation
time in the future)
5: Select the track section and add a skin warp modifier, then Add our deforming surface.
If you are modifying the entire section click on weight all points.
Attached Thumbnails
6: Select the deforming surface, go at the editable poly stack, click on show end result
button, enter the subobject vertex mode and start doing the elevations.
7: You can create all kind of elevations using this method. You don't have to create the
deforming surface exactly like this, you can manually extrude each polygon or you can
refine the surface later to add more lines for a better control in the areas that you want.
Don't forget to add enough iliterations to the turbo smooth modifier when you are doing
extreme deformations or else you will see some fuzzy lines on the track section.
Attached Thumbnails
Here’s a bunch of tips that should get you’re track looking as good as the real thing.
A few things have really been bugging me recently with the standard of released tracks,
so here's some tips i've picked up over the last year or so of editing
These all asume your using 3ds max, which you should be. If not get a hold of it, and use
the gmt importer script which is available around here somewhere to do your actual track
conversions too, once you get them into rfactor format (through 3dsimed - presumably)
Multi-Texturing
First of all multi texturing is where you can have a completely different set of mapping
for you extra maps to your base map, i highly recommend this. For instance you can have
your bump and spec maps using one set of mapping and the base texture map using
another.
To do this, add a new uvw map modifier onto your objects (remember you can select
multiple objects at once and do this all in one go when applying modifiers), select box
mapping, tick the realworld map size, and where it says map channel, change it to 2.
If you wish to adjust the severity of the tiling you can add a uvw x-form modifier and
scale the mapping to get it correct. Make you scale the correct channel though!
Now gointo your materials, and select your bump map, and change the channel from 1 to
2. Do this for all the maps you wish to use this second channel.
That's a very brief overview of it, if theres anything your unsure of just ask, however i
would say if your not 100% sure of the functions in 3dsmax use the help function there,
its very useful!
Shader Settings
Shader settings should be setup for all 3 direct x levels, here's a quick overview of what i
use (which is by no means the absolute correct settings - but gives you a starting point)
Roads:
DX7: T1 (maybe + Add also, dependent if this gives an effect i like - see ISI tracks for
sample add, multi, bump, spec maps for most objects)
DX8: Either Bump Spec Map if the mesh is high resolution enough to use the specular
effects correctly, T1, T1 + Add or T1 + Multi + Add - all depends which gives you the
best effect
DX9: Bump Spec Map, or Spec Map + Multi + Add. Whichever gives you the effect you
like most again.
Grass:
DX7: T1+Add
DX8: T1+Multi+Add
DX9: Specular Map + Multi + Add
Buildings:
DX7: T1
DX8: Bump Spec Map
DX9: Cube Bump Spec Map + Alpha Reflect - this gives a cube map reflection on the
areas of the base map that have an alpha channel with light values.
Trees:
Export with pointy normals - in the gmotor tools, and use chroma transparency (have to
set it up inside the base map in each dx setting)
General Transparency
Basic Transparency is chroma, this should be used for trees and other objects where you
can get away with it.
Advanced transparency is setup by using Inv Src Alpha - Src Alpha on the top page of
the material. This should be used sparingly, i.e for fences, as there are issues with the
rendering heierachy.
These are basic settings which you should look at using, make sure that for grass and
road you use multi texturing like above, also with materials with Specular effects you
need to give them a lighter than black specular rgb, i usually go with a mid shade of grey.
Object Smoothing
To get the correct smoothing effects in game there is a quick way to do this.
Select all the objects in your scene you need smoothing,
add an Edit Poly modifier from the modifier list,
select vertex sub mode and weld every vertex in 0.01 distance.
Then select poly mode,
select all polys,
scroll down to smoothing groups,
click clear all,
then auto smooth,
then click select by smoothing group
select the first smoothing group
then scroll up to detach, click on the square box to the side of it - this brings up the
options dialog.
select detach to element
now select each smoothing group and detach to element.
export to rf and now you have correctly shaded objects!
ok, thats all for now, lets make some better looking tracks now please
The difference between a great looking track/conversion and one that looks like a
childmade it is often skin deep, so be sure to give these tips a look through before
showing off you’re handiwork.
Ok, now, before we start adding textures, there are a few terms we need to get straight, so
we don’t have any confusion:
Texture: A texture is an image file that is applied to the 3D mesh. There should be a
DDS used as a base map, as well as auxiliary images used for bump, specular, and cube
maps.
The most realistic textures are made from, or at least based on photos. For repeated
textures, the most important thing is to blend them so the texture tiles back to back with
it’s self seamlessly. Optionally, the transition between other textures; like where the grass
and road texture meet should be seamless too, with some blending work done to soften
the edge of the textures. Try roughening the edge of the road texture, so it’s not perfectly
straight.
Shader: A shader is a piece of code that tells the engine how to combine certain maps to
achieve certain effects. You can have different shaders for DX7, DX8, and DX9, and
often must.
Material: A material is a combination of textures and shaders that acts as a single entity.
For example, a typical road material will have a base map, a bump map, and a spec map,
for the DX9 level, as well as an additive and a multiply map for DX7 and 8, which use
different shaders….so the road material would be a combination of 5 textures and three
shaders.
Click on the box that says "Material" in the upper/middle right. Change it to
gMotorMaterial. You must do this for every material you want to use. Once you change
that, the rollout will change to the gMotorMaterial setup.
In the box that says shader, pick DX9. (It's best to start at the top and then import your
settings to the lower DX levels once you have them set up.)
We're going to be doing the road texture first. So name your first material something like
ROADA or ROAD01. This is because the terrain.tdf file that governs HAT physics looks
for specifically named materials to correspond w/ the terrain data. (Unless you're using a
track specific TDF file...see Joesville for an example.)
OK, the road. We're working in DX9, so pick the Bump Specular Map T1 shader in the
shader drop down menu.
Also, at this point, set your specular color to pure white, and your specular power to
somewhere between 4.0 and 15 (experiment w/ it...higher spec powers focus the road
glare more.) (Scott's Note: I've never used, nor needed, a value higher than five.
Also, lower values with dark spec color will give you a smoother glare while using
less track segments in DX7 and DX8. Lastly, don't be afraid to add a bit of color to
your spec color [rather than grays] to give your glare a warmer or cooler tint)
Assign your multisub to the track piece using the Apply Material Button. (If you haven’t
applied any UVW Mapping modifiers, the track object will turn all grey. If you have, it’s
probably mapped with random textures at this point.)
For this shader, you're going to have three maps. The first is your base map...this is where
the color of your road comes from, as well as some basic details like cracks or what not,
and is tileable in one direction. Your second map will be a bump map, and your third map
will be a spec map, both of which you should be able to tile seamlessly in both directions
(x and y). The spec map is an important map, because that is where much of the road
detail and all of glare will come from.
Stage one is the base map. This should be mapped one to one using the UVW Map
modifier on a face level. NOTE: Do not use the tiling values in the material editor.
Now go back up to the material level. Click on the next stage, which is the specular map.
Assign the spec map in the texture box. Now, and this is important...in the coordinates
rollout, change the map channel to 2.
Back up to the material level, pick the third stage. This is the bump map. Assign your
bump texture, and change the map channel to 3.
Now, time to learn a nifty trick. You've already mapped your base texture 1 to 1. In the
mat editor, set the spec map to be visible in the view port. With your road faces selected,
apply a UVW Map modifier and in the modify panel, where it says map channel, change
the number to 2. Now you are only mapping the specular texture map stage, while
leaving the mapping on the base texture intact...so tile the texture to get a nice tight result.
Follow this same process for the bump map, but use channel 3 instead.
The reason we do it this way is this...for your base textures (i.e. different road surfaces,
road lines, ect.), you need to map them specifically, usually 1 to 1. But you are going to
want to map the spec and bump across all your road polys simultaneously...so now you
can grab all the faces you want to map, then do a UVW Map only on channels 2 and 3,
and that way get seamless tiling across multiple materials.
This technique made one of the biggest differences in our track creation process, and led
to much more efficient texture management and usage.
Now, on to DX8. Simply select DX8 from the drop down menu and click on the Copy
DX9 button. This will copy all of your DX9 textures and settings into DX8. (Note that
sometimes it may not be a good idea to do this, as there may be better DX8 specific
shaders for what you want to accomplish in 8.)
Because DX8 and 9 use advanced shaders, you must set up a more rudimentary system
for those with lower machine specs running DX7. Start by switching to DX7 in your
shader level drop down. For the shader, pick T1 mult T2. This shader will use a separate
multiply map in conjunction with your base map to produce the road texture.
Now that you have your road mat squared away, you can copy this material using drag
and drop to make copies. Use this to make the mats for your road lines, transition piece,
and if you have one, the apron.
In regards to the transition piece. This material should be a copy of another material, but
with alpha translucency settings for the fade. For Nevada Sands, because the transition is
part of the red apron texture, I made a copy of my ROADAPRON material, named it
ROADAPRONTRANS, and then set the Alpha Blend settings to Src Alpha and Inv Src
Alpha. This will now use the alpha channel in the texture to do the texture translucency.
Moving on, this is the area that will be mapped w/ grass, or, in this case, dusty sandy
ground. Whatever your texture, these six polys, and their corresponding six on the other
side, are your grass textures.
The shaders to use are as follows:
DX9: Specular Map T1 mult T2 add T3 (4 maps)
DX8: T1 mult T2 add T3 (3 maps)
DX7: T1 add T2 (2 maps)
As with the road, make use of the multi channel mapping so that you can apply UVW
coordinates to the different stages independently of each other.
I’m going to skip the step by step for the walls and fences…nothing tricky there really.
Walls I used a Bump Specular Map T1 shader, and don’t forget to add the alpha settings
to the fences. Here’s an in game viewer shot of my cross-section:
(Scott's Note: Something to keep in mind: Multi-Sub material balls with several
sub-materials will bog MAX down. So, rather than using 1 Multi-sub for everything
that contains 100+ materials you'd be better off using several multi-sub's with 30 to
40 materials-ish. It'll keep you better organized, too, as you can separate the multi-
sub's into track, vegetation, buildings, etc.).
Troubleshooting Files
Here is a small list of problems that I commonly run into, and I’ve heard about alot on the
editing forums. When things go wrong with a track (and yes they will), you need to know
where to look for the problem and how to fix it.
Check the GDB's heading and make sure its all in capital letters and matches the
track's folder name exactly.
If it’s not showing up in the track's main folder in the loading screen, make sure
they share the same VenueName.
While loading track... rFactor crashes to desktop and an error window pops up,
showing missing files; for meshes or textures and materials:
1) Make sure you have all the GMT and DDS files in the right folders.
2) Also check the SCN file and check the SearchPaths that are used and make
sure they are all listed correctly spelled.
3) Check the Instances, and make sure they are all spelled and formatted
correctly.
The track loads, but when starting; the car is floating in space, falls through the
track instantly, or wont move and just bounces in the track surface:
1) Check the PLR file and make sure the Always Rebuild HAT setting is set to 0
and not 1.
2) Delete the Hat file for the track in the Player file/LOG/HAT folder.
3) Make sure all of the materials use the proper naming conventions listed in the
Locations.tdf file. Use names like Road_a for road surfaces and Grass_a for dirt
and grass.
The track loads but looks weird and there are long stretched polys everywhere,
polys missing, where there should be:
Check the 3D Max GMT Converter settings; set 'max list verts' in the GMT
Output section to 16384, and reconvert all GMT's.
Some times there’s no obvious solution and no error code generated, IE; the track loads
part of the way and then rF crashes and I have to Alt+Tab out or Ctrl+Alt+delete or some
times do a hard reset of the computer to get windows back to the desktop again. In these
cases I have found that there is usually a scripting error in the GDB SCN or AIW. So
scan though them and look for any obvious tyops. rF will not load a track if there are any
First look at how far the progress bar gets this a a clue. It shows whats loaded soo far. If it
crashes in the first 25% it’s a DDS, SCN or GDB file error, at 50%, it’s the tracks
GMT’s, and in the last part its an AIW or CAM error or the cars.
For SCN errors I delete the first 50% of the instances and try loading the track, if it loads
all the way I know one of the GMTs on the top half need attention in 3D Max, If ti
doesn’t load, try again and delete the the bottom 50% of the instances and load the top
half. Once you narrow it down a little, check to make sure all of the files you exported
from 3D Max are indeed polygons or editable meshes and not splines or objects that have
all their polys deleted (Ive done this). Also check to make sure they all use good
materials. Then export them and try loading again.
Generally until I get the track loaded for the first time, I keep the SCN down to the
essentials, like skybox, and track surface. This way it’s easier to solve initial problems.
The more complex the track, the more complex the problems.
AIW Editor Guide
The AIW editor is one of the most intimidating tools used for track making; it’s very
unintuitive and clunky. It can be easy to learn though, if you know the proper steps, and
how best to approach each step. Here are the steps to getting you through the process of
making a working set of A.I. waypoints.
First, download the AIW Editor 1255; (the game must also be updated to this version, if
not get an earlier version of the editor) I suggest using the newest one though; it has the
new CAM Editor built-in and a new UI that's less obtrusive.
(http://www.rfactor.net/downloads/utils/rFactorAIWCAMEditor1255.zip
ISI carelessly left out some crucial files, so you will also need the DEVFILES;
http://www.filefront.com/17847321/rF_Devfiles.zip/
First, get into a easy car to drive, like the ZRZ (You cant chose cars or setups using the
editor's exe, so get setup in rFactor before firing it up), drive to the start/finish line, click
on "1) record a path", and drive one lap, being sure to keep the car in the middle of the
road. This step is only used to define the legal driving surface and corridors, so it’s not
important to use the best racing line. Once you get all the way around the track click on
”1) add new path as main"
Go to the area about 50 meters before the start of the pit entrance, and click "1)
record a path", and drive through the pit area, where the cars will navigate as
they go to their pit stop, continue through the pits until you get 50 meters past the
pit exit and click "1) add new path and mark as 1st pit".
Now, band box the last pit waypoint, and then a waypoint from the Main Path -
just after it, and chose the option "join as a branch". If all goes well it will
say "branch succeeded", if it doesn’t work it will say "can’t figure out which
way to branch" and you will have to choose different waypoints. (The waypoints
are all the same color so it can be tricky to differentiate them, but most of the time
the waypoints are staggered so you can just follow by the distance between them)
Then go to the pit entrance and click on the first pit waypoint and a way point
from the main path right after it and repeat the process.
Note; Hold Left Ctrl + Left Shift + Left Alt + arrow keys to move the car around, this
is good for making pit and starting spots, since you have more control over where the car
goes, plus you can move right through walls.
Click on "3) find corridors", and wait for it to process. It will show a counter so you
know how much is left for it to do. One important thing to consider before running the
editor is to break the track up into parts no larger than 500 triangles, this will make the
corridors process much faster.
Note; At this point you should to go to "8) unsupported/test options" and "recalculate
groove on save", and then "save waypoints", leave the track, and return. Doing this will
prevent a few potential hassles.
First click "5) record fast lap" and cross the stat line and click "2) reset best time".
Now do a lap to get the tires warmed up, and on the second lap, try to drive using the best
racing line. You’re speed isn’t that important, just try not to break too early, or jerk
around. It’s also important to end the lap at the same side of the track that you started
from to make the path as straight as possible. When you’ve done a few laps and think that
you’ve done a good one click “1) stop recording best”
Note; for this step to work, you have to already have the timing meshes on the track, and
in the locations that they belong. If not, the editor will not detect them and won’t record
the fast lap.
Refer to the Check Points section and add the Timing instances to you’re SCN file using
the examples in the SCN Definition.
First, you need to be using the ZRZ car to do this properly. Go to "8) unsupported/test
options" and then click "8) simulate fuel usage"
Note; There’s no need to redo the AIW every time you want to run a different car series.
The fuel usage will be accurate for any car or mod you use with the track. There is
special coding built-in that figures it all out, based on each car’s fuel economy.
There are inevitably going to still be a few kinks in the AIW’s race lines; at the starting
line, and at the ends of the pit path - there may even be some out on the course that you
want to tweak to follow a more perfect rout. These may seem like minor eye sores, but
they will wreak havoc on the AI when crossing them.
To smooth the lines, first go to "6) show/hide menu" and click "5) show fast path".
Now go to the section of track where there is a kink in the line and select a waypoint and
hold Alt + Shift + Right/Left Arrow Keys this will allow you to move the line. You will
likely have to move a few to make it smooth enough to be race able.
Select a waypoint somewhere after the pit entrance, but before where the pit stalls start,
and click "8) unsupported/test options" and then "12) special slowdown" This will
make the AI slow down to pit speed before they get into the pits.
Key Map
U = shadows mode
S = status mode (memory, frames)
Ctrl+Q = I don't know how to name it, maybe catapult. Don't know what it is good for.
Ctrl+Y = RPM tuning, you can build up engine sound values. Btw I don't know what is.
Chat Key 10, I have only from 1 to 9.
Ctrl+P = displays a red rectangle - don't know why
Ctrl+[, Ctrl+] = min/max frame settings, I have not noticed any effect
Ctrl+C = alternate collision - probably not turned on
Ctrl+/ = displays sparks, very interesting
Shift+W = tire wear
Alt+W = turning on the weather changes - of course not available now
Alt+T = time of day testing (on/off)
Alt+D = date setting
Alt+F = freeze weather - no rain, no weather of course
Alt+L = latitude setting
Alt+N = north setting
Paddocks Guide
I’ve had a few people request this, here’s how to do Paddocks. Normally if you setup garages, they
are line up along the pit road and the cars simple pull foreword a couple meters then drive out of the
pit lane to get to the track. By definition a paddocks is a parking area behind the pit wall where cars
are staged before a race. In rF you can replace the garage spots and place them out in back of the
pits and have the cars file out onto the track, even if there is an obstacle blocking direct access to the
pit road. Here I will explain the process:
1) Record and connect you’re main path and pit path with the AIW editor as normal.
2) Record a path that follows the paddocks and end it right before it exits to the pit lane and make it
pit path 2.
3) Connect the end of the paddock path (the end that’s near the pit exit) to the pit waypoint closest
jut after it, and connect the beginning of the paddocks path to one of the pit waypoints somewhere
before the XPITOUT.
5) Open the AIW with notepad and hit Ctrl+H ; replace all wp_branchID=(2)
with wp_branchID=(1)
You can add more than one paddocks path by repeating steps 2-5 and use pit path 3 and relpace
wp_branchID=(2).
The rest of the AIW can be built as normal; build the corridors, fastest laps, etc. Also the garage
spots can be placed anywhere along the paddock roads that you created roads for.
Camera Guide
Here are some editors that can be used to setup cameras. The official CAM editor is of
course the most powerful, if not the hardest to use. The others are great for fine tuning
camera switching though, and other things that are hard to do in first person perspective.
They are self explanatory, so I won’t go into detail.
Beta Testing
Most of people don’t have a team of testers ready to dig up every error there may be in a
track, but as long as you cover you’re bases you should have a patch free release.
Holes
A common complaint are holes; or small cracks in the geometry, which can distract the
driver, or even cause unwanted car behavior if they are too big. They can be seen very
easily most of the time - and you will see a hall of mirrors effect where a hole is.
3. Gaps between the infield and main track on the inside of a corner (these are
especially obvious to drivers)
AIW Defects
A major deal breaker for quality tracks is the AIW. If there are major problems with this
file, then very few people will use it. Here is a list of issues you should check for.
Timing
3. Are there any places on the track (such as chicanes) where the cars could "cut" the
track and gain extra time? If soo, are there sufficient cut deterrents?
The Pits
1. Do they activate when driven though and do the AI stop and pit correctly in all
spots?
2. Does the AI slow down (to pit speed) at the pit entrance?
3. Is there a smooth transition from the main path pit to the path; so the AI don't stop
or swerve abruptly at the transition?
4. Does the AI file out of the garages and enter the track correctly?
Materials
As I've said in the materials section, if they look bad, they will bring down the whole
project.
1. Check the surfaces of the track in all DX levels to make sure there are textures
assigned to all of them. It’s easy to forget a few DX7 textures.
2. Make sure you are fully utilizing the game engine's Multi-texturing system; add
in Bump and Spec maps or at least Add and Mult maps to the main surface that
are driven on and on the walls too if they look too plain. This will add a great
amount of quality to the look of the track. (I try to fine tune the road surface's
Spec map, so it isn't too flat or shiny; by raising and lowering the
brightness/contrast of it in my texture editor)
Mapping
Things tend to look alot 'better' in 3D Max then they do in-game and you're able too
race down a straightaway. Start testing early and test often for mapping problems, so you
can get them right before you're finished and unable to make easy changes.
1. Check the grass and make sure the mapping isn't too repetitive or washed out; you
may need to stretch it out more, and add multi-texturing if its not already being
used. Also check the road surfaces for the same issues.
2. Make sure everything is mapped correctly, and there aren't any up-side-down
trees and walls, or mirrored signs.
Performance
I'm talking about FPS (Frame Rate per Second) scores; which represent how well the
track is adapted to the game engine. A track that looks like "a million" on screen shots,
but chugs along at 10 FPS when driven will never be used and probably need revisions
sooner or later. Here are a few tips on optimization.
1. Chop you're track pieces up into small sections, no larger than 500-600 triangles.
2. Make sure you're making full use of VisGroups, so that drivers can chose how
much detail they need.
4. Fine tuning the Mip Maps of you're materials so they aren't excessively sharp.
5. Replace high resolution road and grass textures (above 512x512) with multi-
texturing. Alot of tracks made before rF came out used these big textures, which
are unnecessary now. Use multi-texturing instead
6. Reduce the number of shadows, where passable. This applies mainly to trees; use
dynamic shadows very sparingly for trees. Don't give large objects like fences and
walls a shadow at all, unless it’s absolutely necessary.
7. Reduce the number of lights to the absolute minimum; try to limit them to 1 per
100 meters of track, so they aren't bunched up.
Lights
Most tracks aren’t run at night, but don’t think you can just forget about them. There are
inevitably going to be some lights on the track, be it in the pit garages, in a tunnel, or the
big ones out on the track for night racing.
Note: Lights should have some kind of virtual source or they will look weird. Don't go
overboard with lights either; each object can only be lit by 4 lights max, so if you have
alot of them you will have to break the parts up accordingly. I generally don't make a
light for every light bulb, or use very small light diameters; I just make big ones and use
them where there's darkness. You can use light poly's to create the illusion of lights too,
using the NightLight67Glow naming scheme; these objects will appear when lights
normally turn on.
NightLight00 – Used for night racing, turns on at dusk and off at dawn.
TunnelLight00 – Lit up all the time and used for garages and long tunnels.
4) Clone the light, and then start placing them around the track. Make sure the
center of the light is near its virtual source.
5) When you're done, generate the SCN file in the GMT converter, being sure to
check the lights check box in the SCN section.
1) First Plot the coordinates of where you would like you're lights to be placed
using you're 3D editor, be it Zmodeler2 or whatever you use, and be sure to swap
the Y and Z axis's to conform with rF's "wacky axis".
2) Now copy and paste some night light instance into you're SCN as many times
as you have lights.
3) Rename the lights so they all have a different number at the end i.e.;
NightLight00, NightLight01
4) Paste the coordinates that you just got done plotting into the Pos=(125.596409,
4.161264, 521.101804) section of each light
5) Set the range of each light; numbers of 40-50 meters seem to be optimal for
flood lights.
Note: I’ve used Step 1 and 4 of this method for several applications; such as
Starting Grid, Pit, and Garage positions; Camera positions; and F1 2002’s and
F1C’s Shadows. The main advantage of this method is that it allows for precise
positioning of coordinates. I still use it occasionally for staggered starting grid
formations.
LOD, or Level of Detail is a setting that is created in the GMT converter, and stored in
each GMT file. It controls the visibility of objects using a method known as pop-in/ pop-
out.
The Basics
The way it works is you set the LOD-Out to the distance you want the object to
disappear (usually when it is just out of view) and it's used for objects that are
high detail so they disappear when they are at a distance and reappear when they
are close. High LOD-In numbers are used for objects that you want to only be
visible from afar.
So if you want to make a track with lots of stuff in the pits and paddocks, you’re
going to want to give all of these objects a LOD_Out of something like 200-300,
this will make them pop-in around 300 meters. Keep in mind, the further down
the main straightaway the objects are, the higher the number will need to be for
prominent objects like bridges and signage.
One trick to try for bridges and other prominent high detail objects is, to use the
LOD's to switch between high and low detail geometry, just like cars do.
Create a low poly bridge as well as a high poly version, then set the low poly
bridge to something like; LOD-IN: 280, LOD-OUT: 10000. Then set the high
poly bridge to something like LOD-IN 0, LOD-OUT 300. Notice that there is a
little overlap where the 2 objects switch; this makes the transition smoother by
displaying both objects for a split second, as the car approaches the bridge
VisGroup Guide
Some excerpts from ISI guide
These are setup in the SCN file and control the tracks detail settings, from high to low in
the graphics settings menu. By editing the VisGroups, you can choose which objects to
remove from the track in lower settings. They also control what objects show up in the
different race modes, and mirrors. This page shows how to affectively use VisGroups.
The first and most important thing to realize is that VIS groups are setup NOT TO
LOAD. VIS groups are not to say what is IN the scene but rather what is NOT, so keep
that in mind. This list is just a general idea of how to set them up on a track. Use good
judgment on whether or not this exact pattern is good for your track.
Detail level: VisGroups not used
Grouping suggestions:
If no VisGroup is assigned: It shows up in all detail settings: Use this for the track
surface, tree lines, and all other hittable objects. It can also include key scenery objects
used to gauge braking points, like certain trees, and signs.
In VIS group A includes the least important objects on the track. These are
objects that can be removed because they are not important and can reduce the
poly and texture counts. Objects included are: out houses, camera stands, speakers
and poles, the second layer of double layered trees, all the seats put in the
bleachers, misc small side objects, and maybe a few back ground buildings that
are there just for parallaxing.
Remember that everything in A and B are turned off as well. This VIS group is
the last resort. Most everything else must go... A few exceptions to keep in mind.
Anything that includes or is attached to the starting lights must stay. Most
Billboards can stay, you can get rid of a few if they are complex but please leave
the majority on the track (good visual reference at not much cost). Also turn and
brake signs must stay. One more exception is the pit buildings they must also stay.
Bear in mind that you still do not want to have giant gapping holes in the outside
database even in the lowest of settings so keep in the objects that block the holes
as well. Objects include the rest of the grandstands (and their associated people),
all buildings, all trees, bridges (and there shadows), all shadows, all camera
stands, most transparent fences (keep some for diversity and if they are attached
to the wall), the rest of the people who are not in any bleachers or not removed in
an earlier VIS group, anything else loose you still have around.
The next two VIS groups are a bit complicated but are there if you have the time to use
them.
D VisGroups=(08) - High detailed objects that you want to replace with low detailed
object form VIS group E
E VisGroups=(16) - Low detailed objects that you want to replace the objects in VIS
group D with this is setup so that when a user selects Low detail D will automatically be
turned off and replaced with E. If nothing is tagged with either, nothing will change. It
will then work just as above A-C.
Special groups
Basically you want everything OTHER than the cross-section of the road and the
pit buildings in this VIS group. So those are the only things other than the cars
rendered in the rearview. Objects include outside geometry not connected to the
track, starting lights and associated bridges, all billboards, all buildings, all trees,
all brake signs, all shadows... etc... This is a very important visgroup.
Granted there is not much other than most if not all people you want to remove
from the practice session but it will allow you to get rid of special case objects
like grandstands that only appear in race mode so they can be replaced in practice
mode with objects with no people mapped on them.
Use this to remove some of the people and perhaps the objects that you only want
to appear in Practice mode.
Not much will be removed from the race session. If you have any objects that are
just for Practice or Qualifying mode than this is the tag for them.
Note ; If you're writing in VisGroups by hand and need to use more than one type of
grouping, like; VisGroups=(02), and VisGroups=(32), simply add the values together; so
this example would equal VisGroups=(34). You should be able to add as many together
as you need, as long as they are used logically.
Here is some info on getting the illusive skybox working, and don’t forget to checkout
the second section on high altitude sky boxes.
For the cloud dome, you need to make a half sphere, squash it down, and then flare out
the edges. Name it Sky. It too must be tagged w/ Move, no Collide, no HAT. You must
also Select and Link it to the skybox. You do this by using the Select and Link icon in
the main tool bar. This will set the Sky as a child of the Skybox, and allow them to move
around together.
The important part for skies is the material. Go into the material editor. Create a new
multisub, with at least two materials. Make the first one your background texture that is
applied to your skybox. The second will be your cloud material. The cloud material
must be named sky. You only have to set up a DX7 level material, and the shader you
need to use is T1 lerp T2. You need to have 5 sky materials, named sequentially sky00
through sky04. Check the No Compression and No Detail Reduction options. Then go
down to animation. For source, select Texture Maps. Now go to Animation Data. In
name, type in Sky.tga. Type 5 in frames (this corresponds to the 5 sky textures. Check
the Manual option, and then enter this in sequence: (0,0,1,1,2,3,4), with parentheses. And
that’s it. You skybox is done.
When Stu Griffiths and I first began building the Mount Panorama track (Bathurst) we
had a problem with the sky and horizon. When driving up towards the top of the
mountain the player would pop through the roof of the skydome into space. We also
noticed that the horizon (mapped onto the skyboxi object) would drop away as the
player's elevation rose. It seems that the default behaviour of the Skyboxi instance causes
the skybox to remain at the height of the origin point of the track rather than follow the
height of the player's eyepoint. For a track with any sort of elevation changes it is
preferable to have a horizon that appears to remain level with the player's eyepoint. This
gives a more realistic impression of distance, height and slope.
After a fair bit of head scratching and fiddling around I discovered that the old F1C
instances for clouds exhibited the behaviour we were looking for. I was able to put
together a 'multi layered' instance for the whole skybox which works well for any track
but particularly for tracks with elevation changes. There may be other solutions to this
problem and if so please forgive my ignorance. Either way I hope this is useful
information for track builders.
Also, as a unique feature for night racing, we wanted to have the Bathurst town lights
visible in the background. To do this I added a slightly scaled down horizon ring inside
the daytime horizon ring and mapped new materials to it. I then added it into the skybox
instance as a sub instance called NightLight00Glow and placed its partner nightlight
elsewhere in the SCN (NightLight00).
You can see this skybox system in action in our Bathurst track and below is the code:
Without nightlights:
Code:
Instance=skyboxi
{
Moveable=True
MeshFile=skyboxi.gmt CollTarget=False HATTarget=False Render=False
Instance=CLOUDS
{
Moveable=True
MeshFile=horizon.gmt CollTarget=False HATTarget=False
Instance=Sky
{
Moveable=True
MeshFile=Sky.gmt CollTarget=False HATTarget=False
}
}
}
With nightlights:
(The "Light=NightLight00" instance needs to come before the skyboxi instance in the
SCN. Put it with your other light instances.)
Code:
Instance=skyboxi
{
Moveable=True
MeshFile=skyboxi.gmt CollTarget=False HATTarget=False Render=False
Instance=CLOUDS
{
Moveable=True
MeshFile=horizon.gmt CollTarget=False HATTarget=False
Instance=NightLight00Glow
{
Moveable=True
MeshFile=horizon01.gmt CollTarget=False HATTarget=False
}
Instance=Sky
{
Moveable=True
MeshFile=Sky.gmt CollTarget=False HATTarget=False
}
}
}
Notes:
- the skyboxi object needs to be set to render=False. It is there soley as a positional
reference for the whole skybox.
- "horizon.gmt" can be named anything you like. It can even be the same skyboxi.gmt
file.
- "horizon01.gmt" can be named anything you like.
- the "NightLight00Glow" instance relies on a Light=NightLight00 object placed
somewhere above it in the SCN/track.
Custom objects & textures used for this Skybox (these files are not needed to make the
above code work. You can use existing rFactor files or create your own files if you
prefer):
Permissions: Anyone is welcome to use the above skybox code and the above listed
custom objects & textures from the ORSM Bathurst track as long as credit to Neil
Faichney is included with the distribution. Please contact me if you do use any of these
files/code as I'd enjoy seeing them in other people's work .
Checkpoints
from the ISI guide
Here's how to make the polygons needed to get the AIW working.
Checkpoints are non-rendered polys on the track that the game uses for timing and
scoring purposes. There are five of them, and MUST be named specifically:
XFINISH: This is the start/finish line. It must also cross through the pit lane as well as
the track.
XSECTOR1: Your first sector. If actual sector information isn’t available for your track,
just divide it into thirds. The sector1 poly would represent the end of the first
third/beginning of the second.
XSECTOR2: Your second sector….where the second sector ends, third begins.
XPITIN: This poly needs to be put at the entrance to the pits. It should be placed where
the speed limit comes into enforcement, because this poly will be responsible for
monitoring that, as well as activating the auto-pit command.
XPITOUT: The pit exit. Should be placed where the speed limit ends.
A checkpoint should consist of two polys very close together, facing opposite ways.
They must be mapped with a multisub and have UVW coordinates, but it doesn’t matter
which one, because they’re not rendered.
The important part, what makes a checkpoint a checkpoint, is how you tag it. Select your
XFINISH object, go to the converter, and the instance rollout and do a get select.
In the top part of the Instance rollout, leave collide on, since you want the car to react to
the poly, but take off HAT. Then tag No Render on. Scroll down to where it says
Reactor. Click on Collision. Where is says Actor, type VEHICLE, and where is says
Response, type TIMING. Then hit Add. Repeat this process for your other two sector
polys.
For the pit xpolys, instead of tagging them with VEHICLE, TIMING, you need to tag
them with VEHICLE, PITSTOP. So pick Vehicle from the Actor drop down, then type
PITSTOP into the Response field and hit add. Now your checkpoints are done, and you
should have a working track.\
Animations
from the ISI guide
What you need to do is name whatever you want to rotate something using this
convention: RotateY10_blahblahblah.gmt. Rotate must be the first word in the name.
The letter following that can be x, y, or z...this defines the axis of rotation....for score
tower toppers that would be Y. The number following the axis is rotation speed. I've
found that 10 is a good speed for the logo boxes at the top of the towers. After the speed
number...there must be an underscore. Following the underscore can be whatever...it
doesn't matter to the code.
Objects that are going to rotate must be tagged w/ move in the converter.
Now...a note of distinction. The code works on an instance level, not an object level. I
told you to name the objects that way, but just so that it will be easier to convert out...the
instance will already be set up for you that way. But you could just as easily go into the
scene file and edit the Instance=name by hand and it would still work
Starting Lights
These need to be installed for drivers to be able to start the race correctly and exit/ enter
the pit at the correct times. Each of the three sets of lights is composed of a solid part;
which has the light fixture and bulbs, and a emissive glow mesh; which simulates the
glare that surrounds a light when it is lit.
startlight and startglow are used for the starting light meshes at the start/finish line.
They should be placed so that all cars in all starting positions of the starting grid can see
them. You may need to add several sets of lights to get good coverage, for larger grids.
pitglowout and pitlightout are used for the lights that manage the pit exit. This light
should be placed at the pit exit line, or at the beginning of the strip of road leading from
the pits to the track.
pitlightin and pitglowin are used for the lights that manage the pit entrance. This light
should be placed at the pit entrance line, or at the end of the strip of road leading from the
track to the pits.
Unfortunately the GMT importer can’t convert the animation sequence that lights use, so
you can’t use it to acquire a set of usable lights. The actual light polys and materials can
be copied from an existing track very easily and placed where you need them. This is
much better than building them from scratch, to reach essentially the same product.
Track Sounds
The only "custom" sounds you can really do are road and collision sounds. There's an
example in Lienz.tdf, search for "InsideColl" and "OutsideColl", and note that you can
only have one special collision sound per track. Same with "InsideRoad" and
"OutsideRoad", which are special road noises.
Special2=(2)
an Air horn (Seems to play randomly ambient sounds from "air_horns_1.wav
~air_horns_3.wav")
Special2=(6)
The announcer (Plays ambient sound "announcer_1.wav")
Other numbers:
Special2=(5)
Used to be reverb (for under tunnels, etc.), but I'm pretty sure it doesn't work anymore, as
the sound library interface changed and we weren't using it ...
Special2=(7)
Plays a sound when somebody enters the pit "ambient\pithorn.wav"
About
Send questions and comments to [email protected]
• Added guides for; Textures and Materials, Beta Testing, Lights, LOD’s,
Skyboxes, Check points, Animations, Starting lights, and About.
• Added new definitions to the AIW Definition to bring it up to date with rF.
• Added new track technique tutorials, written by the folks at the old RSC, that I
backup up before it was lost; I’ve also uploaded the original threads the here
http://www.filefront.com/17845526/Track-tuts-RSC.zip/
• All links to Race Sim Central are in the process of being replaced, deleted or are
permanently lost. Most of my stuff is safe and being uploaded elsewhere.