1 Tutorials LightWave 3D Importing Level Models for Unreal Tournament 2003 Qui Jan 27, 2011 8:37 pm
Admin
Admin
by Pancho Eckels, Digital Extremes | |
Unreal Tournament 2003 has a huge 3D object library that comes with UnrealEd: Unreal Tournament2003's level editor. Many of these objects have been made at Digital Extremes using LightWave LightWave is an excellent 3d modeling and animation package that lets you create objects for Unreal Tournament very easily. Digital Extremes included object support for LightWave in UnrealEd. This tutorial will show you step by step how to import models yourself. Some modeling ability is expected with this tutorial. The other thing that I will assume is that you have some working knowledge of UnrealEd. Included is the object discussed in this tutorial. LightWave tutorials are found on [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] UnrealEd tutorials can be found on [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] Note: I will be using the LightWave7.5 basic setup for this tutorial. Rules: Here are a couple of simple rules that one needs to keep in mind while making game objects for UnrealEd. This will just make life easier for the level designer that will use your objects in his or her level. The first step is to make sure LightWave's grid has been set to a power of 2 m (2,4,8,16 etc). This will align objects perfectly in UnrealEd. You do this by pressing [d] or by going to the Display/View Options: View Options, this will bring up the display options. You can go straight to the Units tab where you will find the Grid Snap pull down and select Fixed. Right below it you can enter a value to your liking (powers of 2 are the best!). I always start with either 4 or 16 depending how big my object is going to be. (See Figure 1) Figure 1. Also, keep in mind that one unit in UnrealED corresponds with 1 m in LightWave A character in Unreal Tournament 2003 is 96 units high (approx. 2m). Sixteen units are approximately 33 cm = 1 foot. In UnrealEd not all geometry is the same type of geometry. One type is called 'BSP geometry' and is generally made within UnrealEd. Sometimes, if you wish, you can also make BSP geometry in LightWave, but that needs to be generally of a simpler nature because of the way UnrealEd uses this geometry. See the UDN web site for more details. Another type, that we are interested in, is called a 'static mesh'. Static meshes should be regarded as objects that are like clothing on a character. Depending on the individual level constructing style, a level is made out of basic BSP geometry in which you will add the static meshes. Some people make levels by first putting all the static meshes together and then adding the 'shell' i.e. the BSP geometry, but that's not important right now. Another rule that you need to abide by (and this should be a rule for modeling in general), is to keep your models clean. Make sure that there are no duplicate polygons in the same position and that all polygons are tripled. Quads or more point polygons will not get imported with the object. Getting ready: Now that this is all out of the way, we should start with something that will touch all aspects of importing objects for UnrealEd. This example will be a doorframe with a door in it. Obviously the door needs to be able to move (open or close) when a player gets near, so this object will receive some special treatment. UV mapping: I will not go into details on how to model and UV map an object since there are plenty modeling/UV mapping tutorials around. See the tutorial link above. So I will use a door +frame that I have used already for the game and included with this tutorial. Figure 2. As you can see at the top in figure 2 where the different layers are shown, in the first layer slot the actual doorframe is placed while in the second layer the door resides. You'll also notice that the pivot point (or the origin) for both objects is roughly in the middle of both objects. If you were to make a swinging door, this would be the point that it would swing around on. Our example will only use an up or down motion so we are okay here. It is, however, a good habit to get into to make sure the pivot point is not out in the middle of nowhere, or we might say; your object should not be out in the middle of nowhere. Now, both objects have two UV maps associated with them. The first UV map (called UV1, but can really be called anything) is used for the main textures that are visible in figure 3. These textures are the base textures that can be used for all objects in UnrealEd. When you go into UnrealEd you will see, after loading them in, a massive amount of textures at your disposal to dress up your levels with. We simply load copies of them into LightWave for texturing as well. As you can see in figure 3, the UV map is not constricted in the 0 to 1 UV space. As the textures start to tile when you go over the 0 to 1 space, you get more texture detail and that is a good thing. I have put the doorframe in the background layer and the door in the foreground layer for easy viewing in the UV window. In UV1 space it doesn't matter too much where you put the UV polygons because the textures tile. The only time it matters of course is if you want a certain feature in the texture to be prominently shown on whatever polygon on the object. Figure 3. The UV2 coordinates are a different story. These do not get any assignments in LightWave They just coexist with the objects as you save them. They can be used to assign detailed lighting textures on top of the first UV1 map. They need to be therefore within the 0 and 1 of the UV mapping space. See this tutorial: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] Surfaces: The other thing you need to watch for is that each surface name on your model needs to reference the exact same name as the texture in UnrealEd. This is so that UnrealEd knows what textures to use for what surface on the object when the LightWave object gets imported into UnrealEd. Figure 3A shows the surface name in LightWave that corresponds to figure 3B UnrealEd's texture browser with the correct texture name. Figure 3A. Figure 3B. You also need to specify the smoothing angle of each surface by setting the smoothing threshold in the surface editor. See figure 4. You can see in the LightWave perspective window what smoothing angle setting you need to get the desired result. It will be the same in UnrealEd. Figure 4. Special Properties: And last but not least, remember that the door needs to be a moving static mesh. After all it is a door that opens up when players are nearby. Well, a quick and easy way to tell UnrealEd that the door will be a mover is to name it thus in LightWave You do this by opening up your layer browser in LightWave Hit [ctrl]-[F5] or go to Modeler/Windows/ Layer Browser Open/Close to do this. In here you can extend the object into the various layers that it has. See figure 5. You'll see a (unnamed) field into which you can enter, you guessed it, a name. So just double click the (unnamed) field and for the doorframe layer enter Frame. For the actual door that needs to move in the game, enter Mover_Door1. Figure 5. Importing: Okay, now we can do a test run to see if it will work for you. So you have the objects modeled, they have been properly named, UV mapped, the proper texture names have been assigned to the surfaces in LightWave and the smoothing angle has been set. Or you are using the object included with this tutorial. Save this object! Let's load up UnrealEd that came with Unreal Tournament 2003. There are two methods of importing that you can use. One method is called a batch import. This means that you can load in as many objects at the same time as you want. The problem with this method is that it is not an organized way of doing it, since UnrealEd will then give it generic names like 'staticmesh1', 'staticmesh2' etc. But if you don't care about organizing all of this or you want to organize it all in the editor for whatever reason, this is the way to do it. The other method is a more organized way that lets you create a library of static mesh packages that you can hand out to other level designers. We are just going to test our object, so we will first do it the batch import way. NOTE: Right now I am assuming that you know how to create an empty space in UnrealEd for you to view the object in. In UnrealEd, go to the [brush] drop menu and select [Batch Import.] and select the object that you created. See figure 6. Figure 6. Right about now, you will probably see all kinds of error messages pop up, but you can ignore those for now. Now, if everything else went well, you should see your creation, or 'static mesh' I should say, in full glory in UnrealEd. You'll also notice that the door static mesh in the wire frame windows is colored purple. This is an indication that the door is ready as a mover. But there is something amiss right now; the textures you assigned are not showing up. Instead it has this bubble texture. This is because the texture package was not loaded before you imported the object. The texture package needs to be in memory for UnrealEd to be able to assign the textures. If the texture can't be found, UnrealEd will assign a default 'bubble' texture to the object. Delete the object, load the texture package with the proper textures in it and import your object again. Ah, that's better. As you can see everything is in there and ready for you to use. Again, right now this is not saved in a proper 'static mesh package'. This setup you have now will only be saved if you save the actual level. The static meshes will then reside in a static mesh package called 'MyLevel' which will always travel with that particular level. Let's do this the right way. For this method you don't need an actual level, as it will go directly into a static mesh package. You still need the right texture package loaded however. Since we now will import the objects as individual objects we will copy the door object as a new object. Select the door layer in LightWave and hit [c]. This puts the object into a buffer for you to paste it into the new object layer. Hit [N] to create a new object slot and [v] to paste the door right in there. Before you save this object, notice that the name that you gave it has been lost in the layer browser. That is okay since putting objects in a 'static mesh package' makes them all of the same type, so special properties (like MOVER_) get lost. The 'static mesh to a mover trick' only works with the batch import. To turn a static mesh added from a static mesh package in UnrealEd into a mover please consult the UDN web site. Save this object. Let's make sure you have the correct texture package loaded (in my case the 'AlleriaArchitecture.utx') otherwise UnrealEd will assign its default 'bubble' texture to the object again. Now that is done, we can import the object through the static mesh browser. Figure 7. In UnrealEd, click on the archway icon as shown in figure 7. This brings up the static mesh browser. We might as well begin importing right away by clicking on FILE-IMPORT. Click on the object you want to import. Start with the Door object. Figure 8. The window that pops up (figure will give you several options. You need to name the new static mesh package and you enter this in the Package line. I called it 'FromLightWave'. The Group line is there to organize the individual objects within the package. Since it is a door I put it into the 'Doors' group. And lastly you need to give the object a name. I called mine 'DoorA'. Once you enter all of this you can hit OK and your object is now a static mesh. Do the same for the doorframe. You should see a similar setup as in figure 9. Of course you want to save this static mesh package and you do this by clicking on the FILE>SAVE drop down in the browser. Figure 9. There you have it! Your LightWave object is now in UnrealEd. Download Source Files Here - (9.64 MB) Any questions? Please do not hesitate to email me: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] |