rf_tracktutorial

42
INTRODUCTION This tutorial is meant to be a step by step guide to the creation of tracks for rFactor. Please note, it's assumed that you have some basic knowledge of Max and 3D construction. Even with a “track editor” sort of tool, which would help in the creation of the racing surface, the objects and props would still need to be constructed in some sort of 3D package. Thus, track building is a complicated endeavor. If you don’t have prior knowledge, you should go out and buy yourself a good tutorial book on Max basics and learn the general function. Even then, keep your first track a simple affair. Use it as a learning experience... STEP ONE – INITIAL SETUP DIRECTORY STRUCTURE: First things first...set up your working directory. For rFactor, we're going in a little different direction with our track organization. So, in the “Gamedata\Locations” directory, you are going to add a sub-folder that should be named after the generally accepted name of your track. I am going to be using a new track called Nevada Sands as an example, so thats what our highest level folder will be called. Then, inside there, you should have four sub-directories: Gmt, Maps, Projects, and Ref. Gmt is obvious, that is where you will convert your gmts into. Maps is where the textures are kept. (I usually have a sub-directory in maps called HiRes or Working, which is where I keep the PSD files of textures I'm using.) Projects is where you keep the max files, and Ref is for all your reference material.

Transcript of rf_tracktutorial

Page 1: rf_tracktutorial

INTRODUCTION This tutorial is meant to be a step by step guide to the creation of tracks for rFactor. Please note, it's assumed that you have some basic knowledge of Max and 3D construction. Even with a “track editor” sort of tool, which would help in the creation of the racing surface, the objects and props would still need to be constructed in some sort of 3D package. Thus, track building is a complicated endeavor. If you don’t have prior knowledge, you should go out and buy yourself a good tutorial book on Max basics and learn the general function. Even then, keep your first track a simple affair. Use it as a learning experience... STEP ONE – INITIAL SETUP DIRECTORY STRUCTURE: First things first...set up your working directory. For rFactor, we're going in a little different direction with our track organization. So, in the “Gamedata\Locations” directory, you are going to add a sub-folder that should be named after the generally accepted name of your track. I am going to be using a new track called Nevada Sands as an example, so thats what our highest level folder will be called. Then, inside there, you should have four sub-directories: Gmt, Maps, Projects, and Ref. Gmt is obvious, that is where you will convert your gmts into. Maps is where the textures are kept. (I usually have a sub-directory in maps called HiRes or Working, which is where I keep the PSD files of textures I'm using.) Projects is where you keep the max files, and Ref is for all your reference material.

Page 2: rf_tracktutorial

REFERENCE MATERIALS: You can never have enough data about your track. The first place to start looking is to see if your track has a website. Most reputable racing venues have decently thorough websites that a the very least have track maps and basic data like track width, length, banking info (for ovals) and sometimes elevation data. So, that’s first. Also, Google Image Search is a handy tool...sometimes they will have even more detailed info for you to find. What you want to do is find the best quality most accurate data to do your initial track layout from. In the case of Nevada Sands, my initial concept for it is to be a modern F1 style track with multiple layouts built somewhere on the outskirts of Las Vegas. So, what I looked for was images that had the right look I was going for.

Page 3: rf_tracktutorial

STYLE: Tracks need to be considered from two separate aspects: Visual and Physical THE VISUALS: Typically, a track-maker shoots for a realistic look for their track. In other words, if your screenshots look like your reference photos you are heading in the right direction. Use desaturation to bring you grass and other textures closer to what you would get in a photo or on TV. This has the added benefit of helping the cars stand out a bit. The brighter cars will pop more against the slightly desaturated tracks, as their backdrops, and advertising and logos will add nice contrasts in these types of environments. Graphical detail and variety is the second most important aspects to the look of the tracks next to tone and lighting. Detail should abound from the track sections to the side objects. These objects should all vary in shape and size. No two trees, billboards, outhouses, grandstands, telephone pole, etc. should be EXACTLY size. If the polys are there use them to their fullest advantage. Obviously there are limits to this, but this should be in your mind the entire time. THE PHYSICS: The physics of the tracks should be as varied and contain as much contrast as the geometry and tones of the graphics. The grass should bounce you around and make you fearful to get off the road. The track surface should have slight undulations while containing sharp bumps placed manually in the track to add tension and difficulty. The geometry of the track should be adjusted to give larger bumps in the grass and specific bumps on the roads. There should be an overtly obvious difference between road surfaces, grass, and gravel traps. Most important about the physics of the track is making sure the car flows over the track surface and through the curves. Understand how the car moves and reacts to the track surface. Spend time to incorporate this into the track. Find a good example. Before any track is started, find a photo of a race that you wish your track to replicate. Use this photo exhaustively as a reference for tone, detail, lighting, and texture. Bring this photo up and compare it to screen shots to make sure you are on target. Below is the example used for Toban Raceway Park.

Page 4: rf_tracktutorial
Page 5: rf_tracktutorial

STEP TWO – THE LAYOUT Believe it or not, this is actually one of the most important steps in track creation: the design of a fun to race on layout. Spend some time on this…no need to rush it. Take inspiration from your favorite tracks…look how they did things, turns, hills, curbs, runoffs. No obviously, if you're recreating a real-world track then this has already been decided for you. But for our example, here is the initial sketch that I did for a test track for rFactor called Nevada Sands.

In that sketch, I laid out the basic paths of the track, including alternate paths, as well as put in some elevation notes, and locations for the grandstands. Happy with my initial layout, I scanned this into the computer. STEP THREE – TRANSLATING THE LAYOUT INTO 3D Begin a new project in 3D Studio Max. The version used for this tutorial is 5.1, but basically should be the same for later iterations.

Page 6: rf_tracktutorial

Scott's Note: Before doing anything else make sure wing: under “Customize\Unit Setup” go into “System Unit Scale” and be sure it's set to “1 unit equals 1 meter”. You can work in either US Standard, or metric, “Display Unit Scale” but the “System Unit Scale” MUST be set to “1 unit equals 1 meter”. Now, select the top view, and expand it so that it is the only window. Press ALT+B to bring up the viewport background window. In the file select box, select the pic of your layout. Then, click “Match Bitmap” in the Aspect Ratio section, and then make sure “Display Background” and “Lock Pan/Zoom” to the right of that are checked. Hit okay, and your layout should show up in the viewport. (Scott's Note: Likewise, you could create a plane that's size matches the pixel width and height of the image [for correct aspect ratio] and map the layout to it. The plane can then be scaled to match the real-world scale of the track.) At this point, begin to trace the layout with splines. Start by just drawing straight lines, you can then switch the verts to bezier corners, and use the handles to adjust the lines into the proper curves, so that you get something like this:

Now, you can tweak the verts and splines to achieve something you’re happy with, and fix any small issues you can see cropping up already. For example, I needed to adjust my pit lane because my drawing was a little crooked, and I tweaked the final chicane a little

Page 7: rf_tracktutorial

bit. You don’t really need to put in things like grandstand place holders, as I did…but sometimes it’s best to so you know where to place them correctly later. After completing what I thought was a detailed enough layout spline, it was time to scale it up. For this, I selected part of the spline as a measuring line. For Nevada, I used the main path, as I wanted that to be a specific distance. (Find out how your track data was measured, and use that.) Max has a nifty little Utility called Measure. It's found in the Utilities panel in max. What you do is select a spline, and then Measure will tell you exactly how long it is. Now, because you'll have multiple splines, what you do is click on your measuring spline, then click the "Lock Selection" box in the Measure panel. Now, select everything else, and then scale it up or down using the Transform Type In (F12) for accuracy until the Measure panel matches your tracks data. Now you have a nice accurate layout. So, after scaling, my main layout is 3.8 km. (By detaching and reattaching a few segments here or there, I can also get a reading on what the other layout is, as well as the pit lane.) The High Speed Layout clocks in at 3.446 km, with the pit lane being 1.021 km. Note: if you pre-scaled the layout after mapping it to a plane then scaling the track splines are obviously not required as they're already to scale.... STEP FOUR – THE CROSS-SECTION Here's where the real meat of our work is done: First, make a box. In length, make it 10 meters. (Generally speaking, we usually work in metric). So, length, 10 meters. Width...well, however wide your track is. For Nevada Sands...I’m going to make that 12 meters. Height is inconsequential...you are going to delete one set of verts in a minute anyway....just make it tall enough to register as a box. Now...here comes one of the tricky parts, and there's no hard and fast rule. For proper specular/road glare, the road needs to be subdivided. Typically, I will divide the track along it's length, and then make cuts along the width to make equal/or mostly square segments. Use your judgement. The thing to remember is, the more subdivisions you have, the smoother your road glare will be, but you’ll also be rendering that many more polys, so you need to find a good compromise. In this case, I will be making it 2 deep by 3 wide.

Page 8: rf_tracktutorial

OK, now that you have your basic box...switch to a top view. In the modify panel, convert the box into an editable mesh. You can do this by adding a modifier in the drop down or by right clicking on the word Box in the stack. Switch to the polygon level, and grab the faces along one side of the box...we're going to be making the road lines now. Once selected, extrude them to the width you choose.

Page 9: rf_tracktutorial

Then, extrude again...that will be your road-to-grass transition...This is not going to be very wide...say 0.4 meters. (If you have an apron on your track, as I do here, extrude it's width and corresponding lines between the track and this grass transition.) Extrude again...this is your first section of grass, and should be around 3.5 meters. Extrude again. This is your second section of grass...and this can be any length really...your choice. Extrude again. This will become your concrete wall or guardrail. Obviously the guardrail will be thinner than the wall. Wall is generally around .2 meters thick. Extrude one more time. This is your outfield grass. Width doesn't matter, you're going to change it anyways later.

Page 10: rf_tracktutorial

Okay, now switch to a side view, and switch to vertex selection...You should see a box w/ (at least) 8 sections. Now, grab the verts along the bottom row and delete them, so that you end up w/ a flat plane.

Page 11: rf_tracktutorial

Switch back to face level, and grab the section that I said was for the wall. Now extrude this up to make the wall, and then delete the polys on either end of that wall so you don't end up w/ interior polys upon replication.

Page 12: rf_tracktutorial

Grab the verts between the transition piece and the first grass section and pull them down, about .07 meters. Then switch to edge mode, switch to top view, and grab the edge between the transition piece and the road line. Shift copy it outwards to line it up w/ the other edge of the transition piece, but DO NOT snap it. When you look at this from the side, it should extend straight out over the transition piece, and be lined up horizontally w/ the verts you pulled down. What this piece is, you map it with a track-edge texture that has alpha translucency along one side, so that you get a smooth looking blend into the grass while retaining the right spec and bump map tiling on both track and grass.

Page 13: rf_tracktutorial

Now, repeat this process for the other side of the track, or in the case of ovals, you can just shift copy the wall you made onto the other side of the track and snap it into place. (I've taken to building in SAFER walls on ovals, so they’re are a little more complex, but hopefully you get the idea.) POPULATING THE CROSS-SECTION: One of the big steps towards making a track look realistic is having a number of side objects that populate the infield and outfield. A number of these can be built in to the cross-section. Basically, anything that is going to be repeated on a regular or even semi-regular basis around the track should be put into the cross-section. Remember...it's much easier to move an object or delete it later then to try to make and place a bunch of them. (Scott's Note: This isn't exactly true, as there are several MAX scripts, such as “Mouse Planter” that make placing objects like trees, telephone poles, etc. a breeze). So, fences are a must. Look at your track ref and see how the fences are set up. Usually there are fences that come up from the outside walls. Often there are another set of fences past that that act as crowd barriers. Both of these should be built in. Also, fence poles. We tend to sort of fake the number of poles for framerate reasons...usually, if there would normally be three or four poles along a 10 meter stretch, two poles will do, and then you can fake the rest in your fence maps....but having a few poly ones will help w/ the lighting ambience.

Page 14: rf_tracktutorial

For stock car style ovals....I usually build in the MUSCO lights that ring the inside track, as well as their glows. There are a ton of these, and need to be regularly spaced out. Whatever you can think of to include here at this point of track creation will make your life much easier in the future. Here is a pic of my final cross-section. I didn’t do a lot here, because I plan on adding things more on the fly, but you can see I added a little bit of angle to the outside of the concrete walls and then put in fences and polygonal fence poles.

STEP FIVE – TEXTURES, MATERIALS, AND THE MULTI-SUB 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. This can be a regular bitmap or targa used as a base map, as well as auxiliary images used for bump, specular, and cube maps.

Page 15: rf_tracktutorial

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. Now, onto the multi-sub. Open the material editor. It looks like this:

Page 16: rf_tracktutorial

First, create a multi-sub object by clicking on the material type button and selecting “Multi/Sub-Object”. You will get a default multi-sub material with 10 sub-materials. You can and will change the number to as many as you need, but 10 is fine to start with. At this point, you should name this multi-sub something, like “Track” or “NevadaTrack”.

Page 17: rf_tracktutorial

Now, click the first sub-material…it’s time to make a road mat. 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.

Page 18: rf_tracktutorial
Page 19: rf_tracktutorial

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 viewport. 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

Page 20: rf_tracktutorial

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.

Page 21: rf_tracktutorial

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.

Page 22: rf_tracktutorial

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 ingame viewer shot of my cross-section:

Page 23: rf_tracktutorial

(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.) STEP SIX – ARRAYING THE CROSS-SECTION This is a fairly easy step in the overall process. The array function is used to make many uniform copies of the same object…in this case our cross-section. It is found in the Tools section of the menu bar. Make sure you have your cross-section selected, and then open the array box.

Page 24: rf_tracktutorial

The first part is the incremental. This means where, from your original object, do you want to create the next one. Since your cross-section is 10 meters long, you’ll put 10 meters here. X or Y depends on the orientation of your object. Since mine is aligned vertically in the scene, I’ll be using the Y axis, but I will put in –10.0 meters, because I want the pieces to be added in a downwards direction, to follow the direction of my track. A positive number will create the copies upwards. Count is how many objects you want to create. What I usually do is make about 9 copies initially, and then join them together to make a 100m piece. (Note that setting the number here to 10 will only make 9 new copies, because your original copy is included in the 10 count.) I can then add little imperfections to that piece to make it a little more realistic, and play with the mapping a little bit. Usually I remap the base maps for the road or the grass, so it covers more distance and doesn’t tile as much. Under type, you want to make sure this stays on copy, so that each track copy is a unique object and not bound to any others. So go ahead and array out to 10. You now have 10 identical track pieces. What I usually do is make one more copy by shift copying, and then putting that off to the side as an original reference copy, and name it like that. Then I attach my 10 copies together to make a single 100 meter track piece. I find it’s just easier to work that way. Now, what you do next really depends on the type of track that you are making. There are three basic scenarios that I’m going to cover here, road courses with elevation data, road courses without elevation data, and ovals. STEP SEVENa – BUILDING A ROAD COURSE WITH ELEVATION DATA If you are fortunate enough to find good elevation data for your track, you’re in luck…it will make your task at hand much easier. What you need to do, if it hasn’t already been

Page 25: rf_tracktutorial

done for you, is to plot out the data into a spline that describes the data as if the track were unwrapped.

Take this spline and scale it up along so that it is the proper length of the track, and make sure the height data scales properly as well. The next step is to make enough copies of your track piece to cover the whole distance of your track…it should match the length you just scaled your elevation data up to. You can use array to do this. Switch to a side view…you’ll have something like this:

Select all your track pieces and apply a FFD Box modifier. This is found in the modifier list under Free Form Deformers (FFD). You will get an orange box around your track objects, with four sets of control points. Obviously that is not enough, so in the modify panel, click on the “number of points” button in the parameters rollout. Change the width number to something that will give you a good amount of points to work with…your number will vary according to your track. I picked 30. Hit ok, then make sure that Lattice and Source Volume are both checked, as well as “All Vertices”. Go to the sublevel of the FFD modifer and choose control points. Select the SECOND set of points on your track, and move them down to meet the elevation spline. Continue this for each set to verts, except for the last set, because when you bend your track, you want those verts to meet your first set at the same elevation.

Page 26: rf_tracktutorial

Once you get through your elevation…then it will be time for bending. But be sure to check out your track in the viewer, to make sure you are retaining the smoothness, other wise you’ll have to go back and fix those areas. STEP SEVENb – BUILDING A ROAD COURSE WITHOUT ELEVATION DATA Doing elevation without elevation data is done by the same process, it’s just not done over the scale of the whole track. Just do the elevation on one piece of track at a time, and then do the bending, then do the next piece, and so on and so forth. A little more time consuming this way, but the result is the same. STEP EIGHT – BENDING THE TRACK Here’s where a good chunk of the meat of track building is located. Bending is done from the top view using the Bend modifier found in the Parametric Deformers section of the modifiers menu. Begin by applying the modifier. You will notice an orange box appear around your object, and an orange center point in the middle of it. Now lets look at the Bend parameters:

Page 27: rf_tracktutorial

First, you have angle and direction. Angle is pretty self explanatory, and direction you won’t be using. Bend axis is, obviously, the axis you want to bend around. Usually this is Y. Limits…these are important. First, check the box…by default limit effect is off. Upper and Lower limit, which one you choose depends on the nature of your bend, but basically what it does is limits the bend to a certain distance from the center point of the object. Also of note are there are two sub objects for Bend in the stack, center and gizmo. Center is the center point of the object. This is where the bend will be focused around…so move the center point to where you want your bend to start. (It helps a lot if you only move it on a local axis.) Gizmo is the box that is surrounding your object. (Sometimes you will need to rotate this box 90 degrees in order to orientate your bend modifier correctly…so if you’re getting weird results, like the track is spreading out like a fan instead of bending, then rotate the gizmo.) Using a combination of moving the center point, adjusting the angle, and changing the limits, bend the track piece to match your layout.

Page 28: rf_tracktutorial

Continue doing this for the rest of the track. Sometimes, if there is a particularly tight turn, like a 90 degree or a hairpin…you may need to go into your track piece and sub-divide some of the faces to make the bending area bend a little smoother. Eventually, you will have a complete racing circuit, as shown here:

Page 29: rf_tracktutorial

Notice that I have a portion of the track centered at the 0,0,0 mark. This will be important later, when you go into real time. STEP NINE – CONVERTING AND THE PLUG-IN In order to view your track in either the viewer or the game, you must convert the 3d geometry into GMotor Tristrips, or gmts. This is done w/ ISI’s proprietary plugin converter for 3D Max. Lets have a look at it.

Page 30: rf_tracktutorial

As you can see there are seven rollout panels in the converter. We’ll start at the top with main control. This panel is used to actually do the converting. First things first…type in a name for your configuration. As you can see here, the config was for Sardian Heights Long…but I typed a new name in here for my new track, Nevada_Sands. At the top there are three check boxes, along with corresponding buttons. Make Mesh File and Make Scene File do exactly what they say they do. (Keep in mind you must setup paths in lower rollouts before you can convert.) The check boxes are for multitasking. For example, as it is shown in the picture, if I hit the “Do All” button, it will perform all the

Page 31: rf_tracktutorial

checked tasks. Right now, Make MAS File and Activate Tex are unsupported, so ignore those for now. Open the GMT Output rollout.

Page 32: rf_tracktutorial

This is where you determine where your gmts will go. Mesh directory should be synched up with the gmt directory you created in step one. Quick scene is a handy feature that is new to gmotor. Checking this box will create a quick scene file in a directory you determine, and hard code direct paths to all needed assets. This is valuble for looking at a single object, or a few objects without disturbing the rest of your scene file. It’s good for working on quick fixes, as well as helpful in the building of vehicles. Tristrip/Trilist. You want to have TriList checked, and the number 4096 in Max strip verts. The Do Mesh button here is a duplicate of the one in Main Control. We’re going to skip Instance for a moment and head to Scene File Output.

Page 33: rf_tracktutorial
Page 34: rf_tracktutorial

There is a lot to take in here. The Scene file is what defines what a track’s assets are, which ones it needs, and where to find them. It also defines the FOV of front and rear views, as well as fog values. First, set up your scene file. This should go in your RACE directory, not your track directory. In my case, I created a race folder in my Nevada_Sands directory, and called it Las_Vegas_GP. Inside that folder will be the scene file, Las_Vegas_GP.scn. In fog, the values are pretty self explanatory. You have in and out values, and the color swatch is for fog color. You should check active, and linear. Views: The first section is your main view. N and F are your near and far clipping planes. Near should be .05. Far is track dependant…experiment. W and H are width and height…it’s a ratio, so these should be 1:1. The second section is the rear view. First check the box to add the rearview to the scene file, then set your N:F values to 0.05:150.0, and your W:H settings to 1024.0:64.0. The latter corresponds to the size/shape of the mirror map in commonmaps.mas. You should check “clear” for both…this clears the background out of leftover rendered objects. Color swatches should be a sky bluish color. Header, Lights, Objects, Cameras should all be and remain checked. The All or Selected is an option for converting. If All is picked, then when you make a scene file it will include all objects in the scene. If Selected is picked, then only what you have selected at the time of conversion is put into the scene. I normally use selected. Root path should be wherever your root rFactor directory is located. Search Paths should point to all directories that are calling files that you are using, i.e., Maps, Gmt, ect. MAS Files, when you make your final scene for running ingame, and mas up your files, you need to tell the converter which mas files to include. You do that here. Keep in at a certain point, Search Paths and Mas Files paths will conflict with each other, and you will need to comment one or the other out in the scene file, or take it out of the list here. And that’s the scene file window.

Page 35: rf_tracktutorial
Page 36: rf_tracktutorial

The Instance rollout is what is used to apply specific attributes to a gmt object. You start by selecting an object in Max, and then pressing the Get Selected button. This will un-grey the instance panel and show the default properties of your object. In the Object section, you will see first the name of the object, followed by LOD values. Play with these until you get something your are happy with. And keep in mind that in gMotor 2.0, LOD values are burned into the gmt, they are no longer editable by hand in the scene file. Following that are a number of checkable options, Collide, HAT, Stamp, Move, Deform, No Render, No Clip, Billboard, and Localize. Collide and HAT are the to biggies here, as they effect physics. Collide goes on things you want to come into contact with, HAT things you want to drive on. For example…a track piece gets tagged with Collide and HAT, because often walls are connected to it. But if you have something like a stand alone wall, tire barrier, or something similar, you would only tag it with Collide, because you don’t want to be able to drive on it. Move is another important one…anything that is going to move in some way shape or form in the database needs to be tagged with move. No Render is used for things like invisible walls…you still want to interact with them, you just don’t want to see them. No Clip is self explanatory…those things won’t be clipped by other objects. And Billboard makes things always face towards the camera….it, along w/ deform and localize, is not something we use a lot of lately. Next you have a choice of normals to use. Always use gMotor normals, with the exception of things like trees, then you want to Use Pointy Normals. This is to help with shading. Both vertex tolerances should be set to 0.0. There are three types of shading, None, Flat, and Smooth. None is obviously no shading. Flat is to be used for objects like buildings…things with sharp, distinct edges. Smooth is what you will use mostly. You can only pick one of the three. Shadows, also three options, Object, Caster, and Receiver. If you tag something as a ShadowObject, it will not render, but will cast a shadow. Use this to make low poly shadow caster objects for things with more complex geometry, like grandstands and garage buildings. Caster is for things you want to cast shadows, and Receiver is for things you want to receive shadows. Selecting Object or Caster will bring up the shadow attributes box. Here you can use the sliders to pick the size of your cast shadow map, as well as pick either texture or solid casting. Solid will make a solid shadow, where are texture will take into account the alpha channel of the texture map to make it’s shadow. Stuff like trees are tagged with texture casting. It’s much more expensive than regular solid casting, which is not cheap to begin with.

Page 37: rf_tracktutorial

Other: The big one here is Omni. You want to tag this onto objects that will react in any way to omni lights. (Scott's Note: In rF, taging something as “Omni” also allows it to accept car headlights) The next section is vis groups. The first and most important thing to realize is that VIS groups are setup NOT TO LOAD. So VIS groups are not to say what is in the scene but rather what is NOT. So keep that is 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. We must be close though so the user gets an anticipated result from track to track. There is 4 detail settings in the options: (descriptions of each VIS group will be given later) Full = no VIS groups are turned off High = VIS group A is turned off Medium = VIS group A and B are turned off Low = VIS group A, B, and C are tuned off That is the basic setup for VIS groups. A = everything that you want removed for High detail In VIS group A I included 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. B = everything that you want removed in addition to VIS group A for medium detail Remember everything in A is turned off as well. Vis Group B includes a selection of objects that are high poly counts and are highly visible as you drive. Objects include transparent skids on the track and start grid, jumbotrons, cranes, most side buildings, some grandstands and bleachers (and their associated people, all trees that are not connected to or will cause big holes in the track, and if you have one it... the sky fade in the sky box, and some fences. C = everything that you want removed in addition to VIS group A and B for low detail 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

Page 38: rf_tracktutorial

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 = High detailed objects that you want to replace with low detailed object form VIS group E E = 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. F = Extra objects that you do not want to be in the rear views. 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, startlights and associated bridges, all billboards, all buildings, all trees, all brake signs, all shadows... etc... G = Everything you want to remove from the practice session 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. H = Everything you want to remove from the Qualifying session Use this to remove some of the people and perhaps the objects that you only want to appear in Practice mode. I = Everything you want to remove from the race session Not much will be removed from the race session. If you have any objects that are just for Practice or Qual mode than this is the tag for them. (Scott's Note: Some “newer” visgroups: J – Stuff to be turned off at night. K – Stuff to be turned on at night. M – Stuff to be hidden during Warm-Up session)

Page 39: rf_tracktutorial

You can skip the Animations section for now as it’s not currently supported. The Reactor section is a special case. They only thing it is used for is to create the checkpoints for timing. We’ll cover that soon as we get our track ingame. So that’s the converting in a nutshell. The MAS File Output, Group, and Animation rollouts you don’t have to worry about right now. Go ahead now and convert your track. You can then look at it in the viewer. STEP TEN – SKYBOXES The skybox is a combination between two separate objects…the background plane object, which needs to be named skyboxi.gmt, and the cloud dome, which serves as the actual sky. Begin by making a cylinder. The number of sides depends on you, but generally a good number is 16 sides. The radius of your cylinder should be about 550 meters, and the height around 35 meters (to start…you can adjust this later as you see fit and your track dictates.) Name this object “skyboxi”. Now, delete the end cap polys, grab all the faces, and flip them so that they face inwards. Your next step is to make a background image that you can map seamlessly to the inside of the skybox. Once your skybox is mapped, do a Get Instance in the converter. Take off Collide and HAT, and turn on Move. 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. STEP ELEVEN – CHECKPOINTS 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.

Page 40: rf_tracktutorial

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 pit 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 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. STEP TWELVE – GETTING THE TRACK RUNNING IN THE GAME Time to fire up the AIWEditor and get your track in the game. (Remember that you’ll need a corresponding gdb file to go along with your scene file in order for your track to show up in the track select.) Head to a test session, find your track in the list, and load it up. With no existing aiw file you may receive a couple errors—just ignore through these. Now you should be able to enter real time on your track, with the car starting at 0,0,0. (Scott's note: Be sure there is a collision HAT surface under the car at 0,0,0) When you enter real time, the AIW editor should already be up. Lets go through a quick and dirty version of setting up AIW stuff. First, lets get a pit location and garage location in. Press 3 to enter the pit location menu, press 1 to add the first pit location, and then 0 to exit that menu. Back in the main aiw menu, press 4 to

Page 41: rf_tracktutorial

enter the garage location menu, 1 to add a location, and then use the mouse to exit the menu and go back to main. Now save the waypoints. This will create a new AIW file. Now you can make a path. Press 1, and you will automatically start recording a path. Now drive a path around your track. You will see the waypoints being dropped behind your car. Drive the complete circuit, and then when you get back to where you started, aim for the first waypoint you dropped. The path will automatically close, and you will be asked what kind of path to make it. Select new Main Path. Now, head back around to the pit entrance. Make a new path, and drive your pit path. Start far enough back on the main track where cars would break off to head into the pits, and end where the cars would rejoin the main path. Press 1 to stop recording a path when you get to the end of the pit, and mark the path as the 1st pit lane. Return again to the start of the pits, and use the mouse to select the first waypoint of the pit path, and the point on the main path you want the pit lane to branch off of, and then join these together as a branch, which is option 5. Then go to the end and do the same for the pit exit. Now save your waypoints. You now have a functional AIW path. At this time you can choose to find corridors, which is the code looking around and determining which parts of the database are roads, off road surfaces, and walls. This will take a while and it will look like the computer has locked up…just let it go. Once it’s finished, save again and exit the track. (Note: After moving walls around and/or altering track geometry, you should always re-find the corridors.) (NOTE: When issuing commands in the AIW editor, it’s often easier and less error-prone to pause the game while you do it. Also, while the game is paused, you can use LEFT SHIFT+CTRL+Arrow keys to move the car around, and while paused, this does not react to HAT or Collide, so you can phase it through walls and such. Adding ALT to the key combo lets you move the car rapidly.) STEP THIRTEEN – WHAT COMES NEXT Well, what comes next is up to you. It’s your track. Once you get things running in game, it’s time to go back and fill in the rest of the track geometry. Peruse your reference with a fine tooth comb and get the most out of it. There are a lot of high resolution photos available on the internet that you can use to make textures. Think outside the box. If you can’t find a suitable concrete texture in your reference, you can make out of other resources. The important thing is to make the track look right, but more to the point, feel right. You don’t have to get every tree perfectly, but try to get important ones in. Decide what trackside geometry needs to be built in high detail, and what doesn’t. The closer to the track, the more high profile an object, the more detailed it should be modeled. ANIMATIONS: Currently gMotor 2.0 does not support animations. However, we do have a rudimentary function to program rotational animations in using the naming conventions of a gmt. 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.

Page 42: rf_tracktutorial

The letter following that can be x, y, or z...this defines the axis of rotation....for scoretower 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. LIGHTS: Lights that are used to light up the track at night are done by placing omni lights in max where you want an area to light up. Use the max range and intensity to adjust how much distance you want lit up and how bright you want it. Keep in mind that you can only have 4 omni lights per instance…so break up your track pieces accordingly. If you want the lights to only come on at night, then they need to be named NightlightXX, where X=a number. Now, if you want to have corresponding glows for your grandstand lighting or Muscos or whatever, they must be named NightlightXXglow.gmt, and must correspond to an omni in the scene. Example: If you have a glow object named Nightlight05glow.gmt, there must be a Nightlight05 omni in the scene, or it will not work. Omnis do not have to be night lighting though. You can use them in other ways, like to light up the inside of a tunnel, and you can change the color of the light they give off by using the swatch color in the omni modify panel.