MS3D Introduction

Welcome to MilkShape 3D

MilkShape 3D allows the easy creation and manipulation of polygonal characters and objects through the use of tools which are both intuitive and easy to access.

This Help documentation aims to help users of MilkShape 3D, both experienced and inexperienced alike. Every feature of the program is explained in full as well as their uses and a demonstration in words and pictures as how to achieve the best results while using them. There are some topics (such as animation) that are written and presented in the style of tutorials, these aim to have you pick up the functionality easily. Hyperlinks are appropriately placed throughout the Help documentation so that you can check relevant topics without the need to search for them. To aid understanding, pictures have been included, where relevant to show how to access certain features as they are explained.

May you have fun and great success in your use of MilkShape 3D.


The MilkShape 3D Community

The MilkShape 3D community is a continually growing archive of knowledge and resources. Users are encouraged to ask questions and answer them, should they have the experience. The web site for MilkShape 3D can be accessed at http://www.swissquake.ch/chumbalum-soft.

The forums can be accessed at the main Chumbalum-Soft internet site, from which you can also find a great deal of MilkShape 3D related tutorials and resources, as well as the latest downloads and news on new versions of MilkShape 3D.

I strongly recommend visiting the forums on a regular basis if you like MilkShape 3D. A great deal of MilkShape 3D information and fun stuff is available. You can also browse other user's work, upload your own work, have a pole based on questions you set and judge other user's work.


MilkShape 3D Fundamentals

The Interface of MilkShape 3D has been designed for ease of use and maximum productivity.

There are three main parts of the MilkShape 3D interface, these are:

  • Menus
 Menus provide a worded identification of tools that are not regularly accessed.
  • Toolbox
 The Toolbox allows fast access to those tools used frequently and is primarily involved in the construction of models.
  • Keyframer
 Used solely for the purpose of animating. Keyframes are set to store the positions of a skeleton over time.

All the features in MilkShape 3D are accessed through a combination of these three main interface components.


Menus

MilkShape 3D Menus

Click on the menu items to bring you to the corresponding help entry.

File

New | Creates a blank workspace. If the workspace is not empty then the user will be prompted to save changes or continue without saving.
Open... | Open an existing MS3D format file.
Save | Save the current workspace as an MS3D format file.
Save As... | Allows the user to specify a new filename under which to save the workspace contents.
Merge... | Merges two MS3D documents together, the current workspace and another workspace selected from file.
Import | Reveals a sub-menu that contains a range of popular 3D file formats as well as custom file formats, present from the use of importer plug-ins. This is the same as opening a standard file except the user has to specify the file format to import from.
Export | Reveals a sub-menu containing a range of popular 3D file formats as well as custom file formats, present from the use of exported plug-ins. This is the same as saving a standard file except the user has to specify the file format to export to.
Preferences | Shows the Preferences window. Allows setting of user definable application attributes and/or behavior.
Exit | Exits MilkShape 3D. The user will be prompted to save any unsaved changes.

Edit

Undo | Reverts the scene back to the state it was in before the last action was performed.
Redo | Reverts the scene back to the state it was in before the Undo action was performed.
Duplicate Selection | Creates a duplicate of all selected objects at the same location and selects the new duplicate.
Delete Selection | Deletes only those objects which are currently selected.
Delete All | Deletes all objects in the workspace wither selected or not.
Select All | Selects all objects in the workspace.
Select None | Turns off the selection of all objects in the workspace.
Select Invert | All objects that were selected are unselected and all unselected are selected.
Hide Selection | The selected object is hidden. This action can also be performed on groups from the Group Tab in the Tool Box.
Unhide All | All objects in the scene are shown. Useful when several objects are hidden and the user wants to show them again.

Vertex

Snap Together | Snaps all the selected vertices together. The position the vertices will lie at after snapping is the middle point between all selected vertices.
Snap To Grid | Moves all selected vertices to be in line with the smallest grid x, y and z position (to see the smallest grid positions, zoom right in).
Weld Together | Creates one vertex at a point were several one lay. Only selected vertices are welded together. This is the correct action to use when joining seams (two faces or more).
Unweld | After selecting one (or more) vertices and choosing this option a vertex will be split into multiple vertices. The number of vertices it splits into depends on the number of faces it is bound to. So for example a vertex with three faces attatched will be split into 3 vertices. Whereas welding vertices smooths several polygons, unwelding un-smooths them.
Unweld Radial | This option will perform the same action as Unweld but it will also move the unwelded vertices away from each other in a circular pattern. The vertices will receed from the origin at which they were unwelded by half the distance from the origin to the nearest edge.
Divide Edge | Upon performing this action with only two vertices selected, the faces that both vertices have in common (faces both vertices are joined to) are divided into two faces. The procedure will only work with two vertices selected. Vertices with no faces in common will cancel the effect of the action.
Flatten | Brings up a sub-menu allowing the user to align all selected vertices to the same point on either the x, y or z plane. This is similar to Snap Together but it works on only one axis instead of all three.
Mirror Front <--> Back | Mirrors the object currently selected along the z axis.
Mirror Left <--> Right | Mirrors the object currently selected along the x axis.
Mirror Top <--> Bottom | Mirrors the object currently selected along the y axis.
Spherify... | Every selected vertex is moved around the boundaries of an imaginary sphere. A separate edit box allows the user to change the degree to which this occurs. Using this on a biped model for example, has the effect of fattening it.
Edit... | Allows the exact placement of one selected vertex with floating point accuracy in the x, y and z planes.

Face

Reverse Vertex Order | Changes the order of the vertex winding. This will turn a face inside or outside depending on its current vertex order. Anti-Clockwise vertex winding creates an outwards facing face. You can find an example of this operation in action by going here.
Subdivide 3 | Divides all selected faces by three, creating three faces where one used to be.
Subdivide 4 | Divides all selected faces by four, creating four faces where one used to be.
Turn Edge | This operation requires only two faces to be selected. The line that separates the triangles through the middle is changed to the opposing two vertices. An example of this operation can be found here.
Face To Front | Used on selected faces to change all vertex orders to Anti-Clockwise, outward facing vertex winding.
Smooth All | Used to smooth all faces after construction of parts of a model.

Animate

Operate On Selected Joints Only |
Set Keyframe | This will store the set up of the skeleton to the keyframe that is in the keyframe number box. See Keyframer.
Delete Keyframe | Removes the stored skeleton set up from the keyframe indicated in the keyframe number box. This will set the skeleton set up for the frame to the neutral position.
Copy Keyframe | This will copy the skeleton set up from the desired frame as indicated in the keyframe number box. In order for the copy action to perform correctly the user must first select the skeleton in the keyframe to be copied from. The Animation Tutorial will explain these concepts further.
Paste Keyframe | This will paste the copied skeleton set up to the current keyframe indicated in the keyframe number box. After the keyframe has been pasted remember to set the keyframe straight after if you mean to preserve the skeleton set up.
Remove All Keyframes | This will remove all stored skeleton set ups at all keyframes in the animation timeline. The animation is essentially deleted.

Tools

...Miscellaneous Tools... | These tools are explained in the MilkShape 3D Tools Topic.
Convert Old MS3D File Format... | This option is used to open files from MilkShape 3D version 1.4.0 and earlier.
Show Model Statistics | This option brings up a statistics window showing very useful statistics like the number of faces in the scene. Refer to this often to help tune your model. See The Model Statistics Window.
...Miscellaneous Tools... | These tools are explained in the MilkShape 3D Tools Topic.

Window

Viewports | This menu option brings up a sub-menu that allows you to pick an alternative viewport layout. The four pane, three 2D views and one perspective view is the default.
Control Panel | This option refers to the Toolbox and allows the user to set wither it appears on the left or right of the main window. The default is on the right.
Texture Coordinate Editor | This is the indispensable editor for adjusting where textures appear on the model. The use of this editor is explained in the Applying a Texture Example.
Show Message Window | This option shows a script output window that holds the results of compiling various types of model for specific games. Its use is explained in the Compiling Game Models Tutorial.
Show Viewport Caption | This is an extremely handy option to have enabled. It shows details about the viewport it appears above. See Windows and Panels: Viewport Caption.
Show Keyframer | The Keyframer is the Animation Box along the bottom of the main window. It is used to keyframe positions of bones and joints in a skeleton for animation. The Keyframer is discussed in greater detail in the Animation Tutorial.

Help

Contents... | Displays the contents section of this help file.
Index... | Displays the index section of this help file.
Search... | Displays the search section of this help file.
About... | This shows the about window. On it is displayed information about the computer it is running on and the credits relating to the development of the program. If is also from this window that registration is carried out.


MilkShape 3D Tools

MilkShape 3D features a variety of tools that expand on the basic functionality of the application. At the top of the tools list are tools used in the creation of models for game engines. At the bottom are tools related to general purpose modeling.

The top of the menu shows that several game specific tools are available.

Half-Life

Edit QC File... | This has the same effect as opening the QC file for a Half-Life model in the default text editor (usually Notepad under Windows).
Compile QC File... | This options generates a compiled QC file from a Quake Control file. A Quake Control file is a file that holds a description of the animations, groups and materials that games using the Quake II and III engine can understand.
Decompile Normal HL MDL File... | This will decompile and load a Half-Life model into MilkShape 3D. The MDL format of the native format of the Half-Life game.
Decompile CS Left MDL File... | This option decompiles and loads a left hand model from Counterstrike into MilkShape 3D.
Decompile CD Right MDL File... | This option decompiles and loads a right hand model from Counterstrike into MilkShape 3D.
Generate QC File... | This will allow you to save a control file for the model you have created. This must be names with the same name as the SMD model that you export.

Quake III Arena

Generate Control File...

This command saves a Quake III control file to the directory you specify in the save window.

Unreal Tournament

Load Default Male Skeleton | This has the same effect as opening the Unreal Tournament male skeleton from the MilkShape 3D directory. The UT skeletons are provided as a structure round which to build UT bipedal models.
Load Default Female Skeleton | This has the same effect as opening the Unreal Tournament female skeleton from the MilkShape 3D directory.

Decompile Genesis 3D ACT

This option allows you to decompile an ACT model used by the Genesis 3D engine.

Compile Quake 1 MDL

This option will compile a Quake 1 MDL file, used in the Quake 1 engine.

Convert Old MS3D File Format

This is an option provided to convert from an old version of the MilkShape 3D file format. This option can be used to change files created with MilkShape 3D versions 1.4.0 and earlier. See Menus.

Show Model Statistics

This option brings up a statistics window showing very useful statistics like the number of faces in the scene. Refer to this often to help tune your model. See Menus and The Model Statistics Window.

Mirror All

This tool allows the model to be mirrored without selecting anything. This is useful when you are symmetrically modeling something in several groups. The three options for mirroring are left to right, top to bottom and front to back.

Smooth Edges

This tool will add triangles to the mesh to make it smoother, more organic and natural looking. The number of extra triangles to be added can be adjusted by the Inward Pull slider. Smoothing can be performed on selected faces only by using the 'Only smooth selected triangles' option.

Progressive Mesh

This tool can reduce the number of triangles in the model. Specify a percentage of the current number of polygons in the model you wish to reduce the model to.

Scale Animation

This allows you to compress and expand the length of the animation of the current model. Enter the target number of frames in the edit box and press Scale to perform the Animation Scale action.

Fatboy

The Fatboy tool can create a model that looks fat simply by moving the vertices of the model. Adjust how fat you wish the model to appear by changing the number in the Size Change box. The Fatboy command can be limited to selected vertices by checking the 'Only warp selected vertices' checkbox.

Reverse Animation

This tool simply reverses the animation.

Scale All

This tool is used to scale all the components of the current model. Selection of groups of triangles is not necessary for this tool to work.


Viewport Popup Menu

The viewport popup menu can be accessed by right-clicking in any of the viewports (3D or 2D). The menu provides a set of options that allow the current view to be altered. Below is an image showing the menu, click on one of the options to see a description for that menu item.

Shading Type

Wireframe, Flat Shaded, Smooth Shaded and Textured are all shading types.

Wireframe

This shows the model as it would be composed with lines between the vertices to represent the outlines of the faces of the model.

Flat Shaded

This shows the model with single colour flat faces to the structure. In this view, individual polygons can be seen easier than in the other views.

Smooth Shaded

Smooth shading creates a gradient polygon when the light determines the brightness of the polygon at each vertex it belongs to. This gives a natural look, not possible in wireframe or flat shading.

Textured

This shading type is the same as smooth shading but assigned textures and alphamaps are also displayed.

Projection

The projection sub menu brings up the menu shown in the image below.

This menu choice allows you to change the perspective of the camera. All views listed apart from the 3D view use Orthographic projection (3D uses perspective). This allows you to control which way you view the object from allowing for easier modelling. This can also be changed through the Viewport Caption.

Show Axis

This option allows you to turn the display of the 3 axis lines in the centre of the view on and off. By default these lines are X = Yellow, Y = Turquoise and Z = Pink. In the orthographic (2D) views there will only be 2 lines displayed as the third lies on the same plane as that of the camera.

Show Grid

This option toggles on and off the display of the grid lines in the viewport. This option can be used in all viewports, 3D and 2D (individually) to toggles grid lines on and off.

Draw Backfaces

All faces that face inward (have a clockwise vertex order) will not be displayed when this option is off. Inward facing faces are ones that are completely black when flat shadin is turned on.

Reset View

This menu option allows the user to reset the viewport back to the default viewport settings. The defaults are the settings used when MilkShape 3D is started up.

Frame All

This will frame the complete model (including all polygons/groups in the current workspace) into the centre of the view. This allows the easy viewing of all parts of the current model, it can also be useful when you are finished working on a specific part and instead of resetting the view to default you can frame the entire model for a better view.

Frame Selection

This works in much the same way as Frame All except the view is focused on the current selected object/s in the workspace.

Choose Background Image...

This allows the user to choose a background image for their model. This feature is commonly used to have a reference picture from which to work. This option will open a standard windows open box, choose your image from the appropriate directory on disk. A background image cannot be applied to a 3D (perspective) viewport.

Each pixel in the background image takes up 0.25 units on the MilkShape 3D orthographic grid, so for example a 100 x 100 pixel image will take up 25 x 25 units on the grid. The background image is always centered, if the image is of even height or width then the best estimate is used.

Take Screenshot...

This menu choice will bring up a standard windows save box.The current contents of the viewport can be saved in .bmp format. When using this function you must type the .bmp file extension onto the end of the filename, if this is not done it will be an unknown type file.

Record AVI...

This feature can be used to record an AVI format file of the animation of the currently loaded model. The AVI will run for the entire length of the frames currently specified in the Keyframer at the bottom of the MilkShape 3D window. If you have an animation then it will be played and captured in the AVI file, if there is not animation then you will just get a still model, i.e. no animation or movement.

Maximize

This feature simply toggles the viewport between maximised and minimised. When maximised the viewport takes up the space that all viewports would have taken up.


The Toolbox

The Toolbox is the center of MilkShape; it is from this component that the majority of functions relating to the construction of objects is carried out.

There are four tabs in the Toolbox all relating to the various aspects of model creation, these are:

  • Model

This tab is used for the placement of vertices and the construction of polygons and skeletons.
  • Groups

This tab contains features related to the grouping of vertices and polygons. Groups can also be created from existing polygons.
  • Materials

Deals with the creation of materials (including textures from file) ready to be assigned to groups.
  • Joints

Contains tools relating to the manipulation of joints in skeletons.


The Toolbox - Model

The Model tab in the Toolbox is the main tool set involved in creating models. Vertices and faces are the lowest level construction tools. A selection of primitives is also included to aid the creation of models.

All of the buttons on the Model panel can be clicked once to activate and clicked again to deactivate, much like an on/off button. This is the Model tab of the Toolbox, click the button you wish the see the description for:

Select

Pressing the Select button (or alternatively pressing the F1 keyboard key) will reveal a selection panel below the Model panel, in this panel the user must select the type of object they wish to be able to select, as the image shows:

  • Vertex

This sets the tool to Select Vertex mode. Vertices can be individually selected by Left-Clicking on them, or more can be selected by Left-Click-Dragging the mouse over many vertices. Multiple vertices can be selected by Shift-Left-Clicking and vertices can be deselected by Shift-Right-Clicking. In the 3D Perspective View Vertices can be selected by Alt-Left-Clicking and deselected again by Alt-Right-Clicking. The Shift operation also applies to selecting vertices in the perspective view, i.e. Shift-Alt-Left-Click and Shift-Alt-Right-Click.
  • Face

This sets the tool to Select Face mode. Faces are selected and deselected in the same way as Vertices are with the exception that a face can only be selected in the 3D view by clicking a vertex (using Alt-Left-Click) when the 'By Vertex' option is selected. The 'By Vertex' checkbox becomes un-ghosted and available to use when the Select Face tool is selected.
  • Group

This sets the tool to Select Group mode. Groups can be selected and deselected in the same way as for Vertices. Groups can also be selected in the perspective view by Alt-Left-Click-Dragging and deselected again by Alt-Right-Click-Dragging.
  • Joint

This sets the tool to Select Joint mode. A joint can be selected and deselected in the same way as a Vertex. Joints can also be selected in the 3D Perspective View by Alt-Left-Click and deselected by Alt-Right-Click.

  • Ignore Blackfaces

This option comes in handy time and time again. With this option switched off all faces behind the one the user selects will also be selected, when switched on those same faces are not selected leaving you with the face/s the user may have intended to select originally.

  • By Vertex

This option is useful only when the tool is in Select Face mode. It allows the user to select faces not by clicking in the middle of the faces but by clicking a vertex that the face is joined to. This is used primarily in the 3D viewport where selecting a vertex selects all the faces it is attatched to.

Move

This tool is used to move vertices, faces, groups and joints. The move tool only takes effect on items that are selected (i.e. highlighted red). To select the Move tool from the Model panel click the Move button or alternatively press the F2 keyboard button, Doing so will reveal the move panel, shown below.

The Move options panel allows the precise placement of selected objects. Values are typed into the three boxes at the top; the movement on that particular plane can be turned on/off by clicking the buttons below them. Depressed is off and pressed in on. When the values are keyed in the Move button is used to perform the Move action. The values in the boxes represent the amount of movement to be performed on that particular plane, not the position on that plane to move the object to.

The most common way to move objects in MilkShape 3D is not though the use of this panel. In any of the three 2D views the user can Left-Click and drag the object to wherever they desire. 3D modeling is usually done in approximations but to finish a model objects may be lined up perfectly using the Move Options panel, this is rare however as a zoomed in 2D view gives adequate precision. Using such a method is also more intuitive as a response is displayed straight away whereas using the Move Options panel; the move button has to be clicked before any feedback is given.

Rotate

This tool is used to rotate faces, groups and joints (vertices are points in space so cannot be rotated) around the x, y and z axis. Like the Move tool, to operate on objects with this tool they must first be selected (i.e. highlighted red). This tool can be selected from the keyboard by pressing F3. The following image shows the Rotate Options panel.

The panel operates in much the same manner as the Move panel; in that values are entered into the x, y and z boxes to have them rotate by that value in the designated plane. A particular plane of rotation can be turned on/off by pressing the relevant button below it. The Rotate button is pressed to rotate the object by the amounts in the boxes.

With the Rotate tool there are three further, very useful options.

  • Center Of Mass

This option is the default and most commonly used. The object will rotate about its center of mass.
  • Origin

This option makes the object rotate around the origin of the scene at point x = 0, y = 0, z = 0. This provides a distinctly different behavior from the first option.
  • User Point

This is the most flexible of the rotate options. The point for rotation is set on the Left-Click press down, any mouse movement after this rotates the object around that point.

As with the Move tool, the object can also be rotated by Left-Clicking in the desired 2D viewport and dragging the mouse left and right or up and down.

Scale

The scale tool is used to re-size faces and groups; it will only operate on the selected objects in the scene.

The scale tool works in exactly the same way as the Rotate tool. The Center Of Mass option scales everything in on the center of the object, scaling the whole object with symmetrical proportions. The Origin option scales the object around the origin of the scene. The User Point option allows the user to select a point which to scale around.

The x, y and z value boxes work in the same way as for the Move and Rotate functions. Note that the value 1.0 means Original Scale, in the same way as 0.5 is half the Original Scale and 2.0 is double the Original Scale. I only say this to highlight the fact that zero is not the original scale, if you scale anything by zero; it will be non existent, in the same way as if you multiply any number by zero.

Vertex

Selection of the vertex tool (achievable on the keyboard by pressing F5) does not reveal any option panels. This tool is all encompassing as it deals only with the placement of vertices in any of the 2D viewports. Simply Left-Click where the vertex is to be placed. The vertex will always be placed on the zero point of one of the axis, for example if you are placing a vertex on the (front) x-y plane then the z position of that vertex will be zero.

Face

The Face tool allows the creation of polygons (particularly triangles) between specified vertices. The tool can be selected on the keyboard by pressing F6. The following image shows the Face Options panel.

The threshold value represents the proximity the mouse cursor has to be in to successfully select the vertex as the next vertex to assemble a face. To create a face three vertices must be selected in order. The order in which they are selected is important as it defines wither the face will face outwards or inwards. Select vertices in an Anti-Clockwise direction to create an outwards facing face. A good way to see if a face is outwards or inwards facing is to right click in the perspective viewport and select Flat Shaded from the pop-up menu. If any faces are black then this means they are inwards facing.

Sphere

One of the in-built primitives, the sphere tool is used to create a sphere of Slices by Stacks size. The Slices value represents the number of cuts on the x axis, the Stacks the number of cuts on the y axis. The more of each you choose the smoother the Sphere will be. It is best to keep the number of Stacks at half the number of Slices if you want a sphere, however alterations can produce interesting results.

When the sphere tool is selected, to create a sphere just Left-Click in one of the 2D viewports and drag the mouse until the Sphere is the desired size.

GeoSphere

A more optimised version of the original sphere, a GeoSphere of the same visual detail uses less faces than a Sphere. The depth value acts as a multiplier for the amount of faces wanted.

To create a GeoSphere just Left-Click in one of the 2D viewports and drag the mouse until the GeoSphere is the desired size.

Box

Upon Selection the box tool does not reveal any options panels. The box tool is fairly self-explanatory. Left-Click in any of the 2D viewports to start the box then drag to the opposite corner to complete the creation of the box. The sides of a newly created box will all be equal, i.e. it will be a cube.

Cylinder

The Cylinder tool works in much the same way as the sphere tool. Stacks and Slices define the detail of the Cylinder. The Cylinder has an extra option, which is Close Cylinder. If it is unselected then the Cylinder will not have caps on either end, i.e. it will be open.

To create a Cylinder (closed or not) just Left-Click in one of the 2D viewports and drag the mouse until the Cylinder is the desired size.

Extrude

The Extrude operation can only be carried out on faces. Extruding vertices results in a mess as a point in space cannot be extruded. Selection of one or more faces is necessary to successfully extrude something.

After selecting the faces to be extruded then the selection of the extrude tool Left-Click and drag in a 2D viewport in which you can see the height of the extruded section. Precision extruding can be achieved by using the x, y and z plane value boxes. As surfaces are commonly extruded in only one direction, you will predominantly use only one box. The Auto Smoothing Group option will smooth shade the polygons after extrusion has been completed.

Joint

Upon Selection the joint tool does not reveal any options panels. Simply Left-Click in a 2D viewport to place a joint. One thing to remember when placing a joint is the hierarchy of the skeleton you are creating. A newly placed joint will be selected meaning the next joint will be connected by a Bone to the last created one. In a human skeleton, for example, the pelvis is joined to two legs, so in order to represent this is MilkShape 3D the pelvis joint would be placed, then the joint for one of the hips. Next, the pelvis joint would have to be selected in order to place the hip joint for the next leg. This is explained in more detail in the Animation Tutorial.

Redraw All Viewports

Having this checkbox checked will force all the viewports to be redrawn when performing operations. With this unchecked viewports only update when they are clicked on. For example with Redraw All Viewports checked a move operation would force the viewports to continuously update with the new position of the moved object, but with it unchecked the viewports would only update when the move operation has finished, i.e. when the mouse button is released.

Auto Tool

This option can be used to automatically switch back to the last tool you were using. For example if you wanted to select vertices individually for movement, check the Auto Tool option, then the Select tool, Select the vertex to be moved then click the move tool. After the move operation is completed the Auto Tool will switch the current tool back to Select, once the select operation is complete it will switch back to Move, etc...

This is an alternative option for tweaking, but it is best to get used to using the function keys at the top of your keyboard, they allow more flexibility.


Box Primitive

When creating a box primitive the first click will define the corner of the box (not the centre). When the mouse is dragged the box is re-proportioned in the un-controlled plane so that the box will not be flat after it is created.

A box will always be made up of 12 triangles and 8 vertices.


Cylinder Primitive

The cylinder primitive is comparable to the sphere primitive in that it is composed of stacks and slices. The cylinder also has another option, that is the Close Cylinder option. This will cap the cylinder at either end.

The cylinder is formed in the same way as the box is, that is, the position of where the mouse was clicked to start the cylinder creation is the origin of the corner of the cylinder (in a 2D view). Dragging the mouse in the 2D view will automatically re-proportion the cylinder in the uncontrolled plane so the cylinder is not flat after creation.


Sphere Primitive

A sphere is constructed of stacks and slices. As the names suggest stack is the number of segments on the Y plane and slices is the number of segments in the X plane.

The point at which the mouse is clicked to create the sphere is where the origin of the sphere will lie. To achieve the sphere in the image (for example) I clicked in the centre point of the three coloured axis and dragged up to the next grid line directly above. The number of polygons in the above sphere is 120.

This image shows a greater detail in the sphere, this was achieved by multiplying the stacks and slices by two. The total number of polygons in this scene is 528. The formula for the number of triangles that will be in sphere is (((Stacks - 2) * Slices) * 2) + (Slices * 2).


GeoSphere Primitive

A GeoSphere is made from a more natural structure than a normal sphere. This structure is found in nature as it offers optimum strength (more than the structure of a sphere) at a lower cost.

A GeoSphere is created with one parameter, which is depth. You should experiment with this value to achieve a complexity you are after. You will notice that you can achieve the same visual smoothness in a GeoSphere that you can in a sphere with fewer polygons.


The Toolbox - Groups

The Group tab of the tool box allows the organisation of your model into distinct parts. This image shows the Group tab of the Toolbox, click the part you wish to see the description for.

Group Selector Box

This list box is used to highlight the group you want to operate on. The name of the group is displayed along with any materials that are assigned to it. Each group occupies one line in the box.

Select

This button is used to select a group (the same action can be performed from the Model tab by clicking Select, Group then clicking on the appropriate group). To select a group from this tab, indicate which group you want to select by clicking on its name in the Group Selector Box, then click the Select button, to deselect a group press it again.

Hide

When you have a group name highlighted in the Group Selector box you can press this to hide the particular group from view in the viewports. Use this when you find that your workspace is becoming cluttered, so as to ease your workflow. This is one of the primary reasons for organising your polygons into groups.

Delete

When there is a group highlighted in the Group Selector Box press this button to remove the group from the workspace. Note that this permanently deletes the group from the model, so use it wisely.

Regroup

This button is used to regroup collections of polygons (that may belong to another group or not) into a newly created group. Several groups can be selected then regrouped or selected polygons can be regrouped. Remember to rename your group once you have created it.

Rename Button & Box

In order to rename a group you must highlight it in the Group Selector Box, the type the name you wish to rename it to then click the rename button. It is wise to do this as you create groups so that you can easily refer to them in the future.

Smoothing Group Select

Pressing this key then one of the Smoothing Group Numbers will select the polygons assigned to that smoothing group. Smoothing Groups can only be selected on the numbers that have been assigned.

Smoothing Group Assign

When you have a group of polygons selected you can press this button then one of the Smoothing Group Numbers to assign all selected polygons to a smoothing group. Additional groups of polygons can be added to the same group without overwriting the previous contents of the Smoothing Group.

Smoothing Group Numbers

These numbers act as a storage bank for groups of polygons. They can have polygons assigned to them and selected from. Assigning groups of polygons to a Smoothing Group number will Smooth Shade them (Smooth Shaded shading has to be enabled to view the effect of this, right click the 3D perspective view and click Smooth Shaded from the pop-up menu) if the Auto Smooth check box is ticked.

Smoothing Group Clear All

This button will remove the assigned Smoothing Groups from the Smoothing Group Numbers. The polygons will remain smooth shaded but they will no longer be in the same Smoothing Group.

Smoothing Group Auto Smooth

When assigning Smoothing Groups ensure this is checked if you wish the selected polygons to be smooth shaded.


The Toolbox - Materials

The Materials tab of the Toolbox allows Materials to be created and assigned to groups of the model. The Materials tab of the Toolbox can be seen in the image below. Click on the part that you desire information for.

Material Selector

This list box is used to highlight the material you wish to operate on. One material is displayed per line of the box; the material is identified by its name.

Material Preview

This small area shows a sphere onto which the highlighted material is mapped. This serves as a Material preview. You can rotate the sphere by Left-Click and dragging, to see the whole Material.

Ambient

This button refers to the Ambient light of the environment the Material is in; this attribute affects the colour and the intensity of that colour that the material reflects. Pressing this button shows a colour picker window.

Diffuse

This button refers to the light that the material will directly reflect. This attribute has the most influence over the colour of the material. Pressing this button shows a colour picker window.

Specular & Specular Slider

This button refers to the Specular Highlight of the material. Basically selecting a bright colour will create a highlight on the material of the colour chosen. Moving the slider below it changes the focus of the highlight, the highlight can be made to be a small spot ranging to submergence in incandescent light. Pressing this button shows a colour picker window.

Emissive

This button represents the colour and the intensity of the light that the material emits. This attribute will appear as a glow around the material. Pressing this button shows a colour picker window.

Transparency Slider

This slider adjusts the amount of transparency that an alphamap applies to a texture and the faces that the texture is assigned to. You must press assign or click in the viewport to update the model to reflect your changes.

Texture Browse Button

This button allows the selection of a texture map to apply to the material. Pressing it will reveal a windows explorer browse box from which image files can be selected. A variety of image formats are supported as are shown in the Supported File Formats section of this help file. The 'None' button beside this button removes the texture file from the material.

Alphamap Browse Button

This button allows the application of an Alphamap to the material. A black and white image can be used to remove areas of texture where there may be holes. Black is fully occluded and white is fully visible, it is possible to use variations of grey to achieve semi-transparency. The 'None' button beside this button removes the alphamap file from the material.

New

The New button, when pressed will create a new blank material with default attributes, no texture or alphamap files and a default name.

Delete

To delete a material highlight it in the Material Selector, then press this button. This literally removes the material from the workspace so use this wisely.

Rename Button & Box

This button is used to rename a material. To rename a material highlight it in the Material selector box, then type the desired name in the box next to the Rename button then click the Rename button.

Assign

This button will assign the material highlighted in the Material Selector box to the selected group/s. Use the Texture Coordinate Editor to align the Material on the group if needed. The shortcut for this button is F10.


The Toolbox - Joints

The Joints tab of the Toolbox allows the organisation of joints in the skeleton and the assignment of vertices to joints, making the model ready for animation. The image below shows the Joints tab of the Toolbox. Click on the part you wish to see a description for.

Joint Selector Box

This list box is used to highlight the joint you wish to operate on. One line is occupied per joint with the name of the joint identifying it.

Rename Button & Box

This button and edit box allows the highlighted joint to be renamed. First highlight the joint to rename then type the new name into the box to the right of the Rename button then click the Rename button to rename it.

Select Assigned

When a joint is highlighted pressing this button will select all the vertices assigned to that particular joint.

Select Unassigned

Pressing this button will select all vertices not assigned to a joint. Some game engines require that all vertices are assigned to a joint.

Assign

This allows vertices to be assigned to joints in order to set the model up for animation. To assign vertices to a joint, choose the Select-Vertices tool from the model tab, highlight the joint in the Joint Selector box that you wish to assign the vertices to, then select the vertices and press assign.

Clear

This button, when pressed will clear all of the assigned vertices from the highlighted joint in the Joint Selector box.

Show Skeleton

This checkbox can by toggled to show the skeleton or hide it. This can be useful if there are model amendments to be made after a skeleton is created.


MilkShape 3D Keyframer

The keyframer allows skeletal positions in a model to be saved as keyframes in the keyframer. Animation is produced by storing several keyframes to the keyframer then playing them back using the controls on the keyframer. Each frame need not be set, only frames where changes take place need to be set by the user (these are keyframes i.e. they are key to the animation), MilkShape 3D will fill in the gaps (frames). In order to use the keyframer the Anim button (on the right of the keyframer must be pressed).

The keyframer is shown in the image below. Click the part that you wish to see further information for.

Keyframe Slider

The keyframe slider is useful for previewing your animation before playing it. The slider has the advantage that you can slide it back and forward with the mouse movement instead of pressing the Play Forward and Play Backward buttons to see the animation. For selecting keyframes it is only useful in smaller animations, in large animation with a lot of keyframes it will be hard to pick a particular frame. This is why the Frame Position Box is provided.

Playback Controls

The playback controls allow you to view your animation in MilkShape 3D. From the left the buttons are: Goto First Frame, Goto Previous Keyframe, Goto Previous Frame, Play Backward, Play Forward, Goto Next Frame, Goto Next Keyframe and Goto Last Frame. All of these commands update the model to the current frame and the slider is also moved to the appropriate frame.

Frame Position Box

This box comes in useful when you have a lot of frames in your animation and the slider does not allow the accuracy you desire in selecting frames. The box will accept a whole number to indicate the frame to which you wish to go, the slider and view will update to show the selected frame.

Number of Frames Box

This box allows you to enter your own value for the number of frames you want in the animation. The default is 30. Most modelers choose a relatively high number (depending on the number of animations the model is to perform) and key in animations between certain numbers of frames leaving a 10 frame (or so) gap between animations. Say for example you had a Run, Walk, Jump and Shoot animation, you would key in the Run animation first then leave ten frames, then key in the Walk animation then leave ten frames, etc... This will be explained more in the animation tutorial.

The Animate Button

This is the button that enables the keyframer so you can use it. This button acts as a toggle when its pressed down the keyframer is enabled, when it is up the keyframer is disabled.


The Model Statistics Window

The model statistics window provides useful information that should be referred to throughout the construction of your model. Some games you may make models for will have an optimum number of polygons (triangles, faces), joints etc, so its important to first check your target game then make sure your model suits these requirements by using the Model Statistics window.

This feature can be accessed from the main menu by clicking Tools->Show Model Statistics.

Vertices | This provides the number of vertices in the model. For an explanation of what a vertex is refer to the 3D Theory & Practice section.
Triangles | Provides the number of triangles (faces, polygons) in the model. For an explanation of what a polygon is refer to the 3D Theory & Practice section.
Groups | Provides the number of groups in the model.
Materials | Provides the number of materials created for the model.
Joints | Provides the number of joints in the model.
Smoothing Groups | Provides the number of smoothing groups set up in the model.
Mins | This, coupled with the Maxs provides the bounding box for the model. Each number represents the value of the X, Y and Z for the vertex that is to the extreme X, Y or Z plane. These are not necessarily the coordinates for one vertex.
Maxs | This is the same as mins but these values represent the maximum values of the X, Y and Z of the model's vertices.
Center | This is the centre location of the model, not of the world. For example if you were modelling a human figure its centre point would be just below its navel, this is the same no matter where on the Y axis the model happens to be positioned.


The Texture Coordinate Editor

The texture coordinate editor is an essential tool in the texturing of your models. With the texture coordinate editor you can assign areas of your model (groups) to have a certain texture map.

This image shows the front torso section of Pedro the Ringmaster and the texture bitmap used for texturing Pedro. Notice that the different parts of the texture are are split up, it is suggested, in order to cut down on clutter, that you use one texture file and not several (i.e. not one for each group of your model).

Window Navigation

When the window is first opened the texture is at the original scale and the texture appears in the top left of the window. It is useful to have the texture in the middle of the window so that its easier to work with. This can be achieved in the same way as in the standard MilkShape 3D viewports, Ctrl+Left-Click then dragging the view with the mouse.

The view cannot be zoomed in and out as it can with the normal MilkShape 3D viewports (Shift+Left-Click then using the mouse movement to zoom). Instead, a number representation has to be entered into the Scale box to zoom in and out, see the Scale Box & Button.

Select

The select tool is used to select vertices only. Single vertices can be selected by Left-Clicking on them, multiple vertices can be selected by Left-Click-Dragging a selection box around them and vertices can be deselected by Right-Clicking on them.

Move

Once vertices are selected they can be moved by pressing the Move button then Left-Click-Dragging the vertices into position. This allows the texture to appear in the area that the vertices define. Note that this does not change anything in the model it is merely used to position the texture on the vertices, this is called UV Mapping, the U standing for the X coordinate and V representing the Y coordinate.

Rotate

This operation can only be performed on more than one vertex, performing this action on one vertex can give weird results. Generally, though, this is used to rotate a group into position, it can be used to rotate a face (by selecting its three corresponding vertices) on a part of the texture. Rotating the vertices is commonly unused because it results in a knock-on warped effect with the surrounding area which may be undesirable.

Scale

Scaling is carried out in the same way as for the modeling tools, however the origin from which scaling is performed is always defined by the user's first click when scaling, in exactly the same way as the Scale tool's User Point option operates.

Region

This function allows you to define an area on the texture map (or even outside it) where the selected group (shown in the Group Selector) will map to when the Remap button is pressed. For example in the image above the wireframe is the torso section, I clicked the Region button then dragged a box around the top left quarter of the texture map then with the Torso group and the Front view (because the torso is mapped from the front as it is facing the front) selected I clicked Remap, the torso automatically mapped itself to the top left of the texture map. If you have the Redraw checkbox checked you will see the effects of such an operation immediately, without closing the Texture Coordinate Editor.

Group Selector

This combo box allows the user to select which group they want to edit texture coordinates for. Only the groups defined in the model will appear in this box. When a group is selected its current position on the texture is shown, if none has been defined then the user must select the group then click the remap button, this will scale and position the group to be centered on the texture it can then be manipulated as usual.

View Selector

This allows the vertices to be positioned on the texture from different perspectives. It is compulsory to stick to the one view when positioning the vertices on the texture as setting the vertex positions in another view will overwrite the vertex positions of the other view. For example in the screen shot the front of Pedro's torso is being texture mapped, as this group faces to the front of Pedro, I have used the Front view. For his back I used the Back view.

Remap Button

This button is used to reset the coordinates of a group. The group will be scaled and moved to be centered on the texture.

Clamp Checkbox

This option keeps all vertices within the boundaries of the texture map. When the vertices are moved they will not go over the boundary of the texture map.

Redraw Checkbox

This option allows the 3D perspective window to be updated to immediately reflect the changes made in the Texture Coordinate Editor window. This is a useful option as it means that the Editor does not have to be closed before changes are seen on the model.

Scale Box & Button

This is used to zoom the view in and out to allow a better view when positioning vertices on the texture map. The default value is 1.0, this is the original scale value, the value at which the texture appears actual size. To scale the texture up (zoom in) type a higher value into the scale box and click the scale button. To zoom out enter a smaller number, but remember not to use zero as anything multiplied by zero is zero, meaning you will see nothing (except a dot).


The Message Panel

The message panel is a useful feature to have when you are creating models in general and when you are trying to export for games such as Half-Life, Quake II, Quake III, etc...

The message window outputs messages relating to the operation the user is currently trying to perform. Most operations in MilkShape 3D are displayed in the message panel, it can be a useful tool while modelling for beginners as it outputs error messages generated while performing certain operations. Experienced users may only use it when exporting to game formats because it can take up workspace.


The Viewport Caption Panel

The viewport caption is a useful feature, it allows you to see which perspective you are viewing the model from

View Perspective

The view perspective shows which direction you are viewing the model from, this can be Front, Back, Top, Bottom, Left, Right or 3D.

Grid Size/Field of View

This value can be used to change the Field of View. Lower numbers restrict the field of view more but can be used for zooming into objects. A larger number will create a rounded lens effect or fish eye effect. Its not common to change this value as the default value of 65 gives an equivalent of the way we see things in the real world.

Near

Both the near and far values deal with the 3 dimensional clipping volume. The Near value is the distance from the viewpoint that the scene will begin to be drawn at. To see the effect this has zoom in close to your model and incrementally adjust this value you will see that the parts of the model closest to the viewpoint will disappear or "clip". You will be able to see 'inside' the model where parts have been 'clipped'. If you have programmed any 3D graphics and have had to deal with a camera set up you will be familiar with both the Near and Far values.

Far

Whereas near deals with the Z clipping plane closest to the viewpoint this deals with the clipping plane at the farthest point the viewpoint can see to. Therefore decreasing this value and increasing the Near value will create a narrow band of vision. In 3D games popup can occur (especially in driving games) where the Far value has been perhaps too small.


The Preferences Window

There are two tabs to the preferences window the first one relates to the set up of the viewports and the second deals with miscellaneous preferences. The images below show the two tabs of the preferences window, click on the part you wish to know more about.

Property Selector

MilkShape 3D allows the user to set up colours of components used for modelling. The drop down list allows a specific component to be selected, a colour for the selected object can then be chosen by clicking the choose button next to the pull down box. The complete list of changeable components is:

Perspective Background (the 3D view)

Orthographic Background (the 2D views)

Perspective Grid

Orthographic Grid

X Axis

Y Axis

Z Axis

Vertex

Selected Vertex

Face

Selected Face

Bone

Selected Bone

Selected Joint

Keyed Bone

Grid Size

This pull down box allows the user to set the occurrence of grid lines on the grid in the orthographic (2D) views. Four options are given:

Gridsize 1x1 (default)

Gridsize 2x2

Gridsize 4x4

Gridsize 8x8

The default grid size is 1x1, this gives the most grid lines and is therefore easiest to work with. The grid size you use usually depends on how big the models are that you construct.

Point Size

This drop down box allows the user to select the size of the points that MilkShape 3D will display. This means the size of the vertices. The higher the number the easier they will be to select but they might also restrict your view more as a result. The values are as follows.

Pointsize 1

Pointsize 2

Pointsize 3 (default)

Pointsize 5

Pointsize 3 gives a vertex large enough to select easily and one which does not restrict the view very much.

Filter Texture

When texturing a model, texture filters will be created which will mip-map the texture on the model. Mip-Mapping basically smooths the texture so that the rasterised pixels are not obvious. You could say that filtering the texture reduces the 'blockyness' of the texture.

Can Line Stipple

When moving, scaling or extruding a line is created with the start point at the point where the user initially held the mouse down and the end point at the current position of the mouse (when the left mouse button is still pressed). This is a solid line by default. The 'Can Line Stipple' option sets this line to be a stippled (dotted) line. This also stipples the box line used for multiple selections.

Import Frame

This one takes a bit of explaining. MD2 and MD3 models which MilkShape 3D supports use an animation mechanism called 'Morph Target Animations'. If you are experienced in forms of animation then you might have heard of them. MilkShape 3D supports an animation mechanism called 'Skeletal Animations', the two types of animation are incompatible. Only one frame can be opened at a time. This option therefore specifies the target frame from the MD2 or MD3 file to be loaded into MilkShape 3D.

Animation FPS

This value determines the frequency of the animation (the speed it will play back at). The default value is 24 fps. Certain games that you export models for may require a larger or smaller number of frames per second so remember to check the requirements of your target game.

CS Hand Offset

When importing Counter-Strike models using the Tools->Decompile CS Left MDL File or the Tools->Decompile CS Right MDL File tools, this value offsets the loaded model to the value specified from the centre of the scene.

Joint Size

This allows the user to set the size of the joints that are used in MilkShape 3D. The default value is 1.0. The size you require may depend on the size of the model you are building. A size of 1.0 may not be adequate in larger models as you will struggle to select or even see the joints.

OK Button

This button will save preferences and close the preferences box.


The About Window

The about window contains the credits for the creation of MilkShape 3D program, the registration feature and information about the computer it is running on.

System Information

The system information the about box provides is

  • Free Memory (RAM) in megabytes
  • Total Memory (RAM) in megabytes
  • Memory Usage (RAM) as a percentage
  • Free Disk Space (HDD) in kilobytes
  • Total Disk Space (HDD) in kilobytes
  • OpenGL Vendor
  • Renderer (Graphics Card)

Registration

When MilkShape 3D is launched on the first day of MilkShape 3D being installed on your computer you will be asked to make sure the date and time is correct then you will be presented with the following dialog box.

If the copy of MilkShape 3D you are running has not been registered then the register button at the bottom right of the About box will be enabled. Clicking this button shows the window in the following image.

Into this box you must enter your name (the name you provided Mete Ciragan with for registration) and the registration code that was sent to you by Mete Ciragan. See Registration for more details. Provided the information is correct, press ok and the dialog in the following image will be displayed.

This will show you the registration information you have entered, to accept the registration for the shown details press the 'Yes' button and the dialog in the following image will be displayed.

Upon this message appearing press the 'OK' button, then MilkShape 3D will tell you that it is shutting down to complete the registration process. Just start MilkShape 3D back up and you will have a registered copy.


Extruding Faces

Extruding faces is a primary function of most 3D modelling packages and it comes in very useful when modeling complex shapes. Extra detail on a surface can be achieved by extruding faces then modeling them separately.

For this example we will use a simple airplane as the model in progress. When modelling symmetrical models it is common to model only one half of it then mirror it when it is finished in order to achieve a completely symmetrical model.

1. I already have a fuselage constructed for the plane, it is only the left half of the model so that I can mirror it later.

2. To form the wings I need to select the faces from which I want to extract a wing. I selected the two faces highlighted by the blue lines in the image below.

3. To get a good view while I extrude I will use the top viewport to use the extract tool in. So with a good view of the selected faces, I extrude...

4. As you can see this has moved the selected faces outward and created new faces to link them to the rest of the model. You are in essence extruding a face from the model. After I did this I then went on to shape the wing the way I wanted it. Here is the completed left side of the plane.

As you can see extruding faces is an extremely useful feature. This whole airplane was made from a box and extruding faces, not bad for two minutes.

This is the completed model with Duplicated and 'Mirrored Left-Right' left side, to create the right side of the plane. If you are creating a model like this, don't forget to weld the vertices throughout the centre of the model.


Extrude Edges

Extruding Edges in MilkShape 3D

Thanks to a very powerful tool (created by MilkShape user CCCP) it is now possible to extrude edges on your models created in MilkShape 3D, simply by selecting the vertices along the desired edges and invoking the tool, choosing the desired options and pressing OK. This small tutorial will hopefully help in using this convenient tool. CCCP has also compiled a page of information about this tool available at: http://www.geocities.com/c3p1models/extrude.html.

For the purpose of demonstrating the tool, I had previously created a model of a Ford GT40 Mark 1. I will use the extrude edges tool to create the wheel recesses in the car's body. Here is a breakdown of the process.

Note: Some pointers...

  • When using the Extrude Edges tool a lot of vertex work is required, therefore you should remember to make use of the Flatten X, Y and Z tools (under the Vertex menu) when appropriate, these allow you to align vertices and will make modeling easier and tidier.
  • The 3D viewport will also help you when selecting vertices, by using the Alt+Left Click, Alt+Left Click-Drag method (using shift to select multiple vertices). Another useful tip is to use the Shift+Right Click, Shift+Right Click-Drag key combo to deselect unwanted vertices in the 2D view ports and Alt+Shift+Right Click and Alt+Shift+Right Click-Drag in the 3D viewport.
  • When working in the 2D viewports remember the Ignore Backfaces option under the Select tool options, to avoid selecting unwanted vertices.

1. After getting a good view of the vertices in question, select them in the Right 2D viewport. Please note that I could have selected them in the 3D perspective viewport by using the Alt+Shift+Left Click key combination and clicking on each vertex in turn that forms the wheel arch, in this case however, the 2D viewport gave a better view; and use of the Ignore Backfaces option meant that I would only select the vertices along the wheel arch edge on the right side of the model. The image below shows the selected wheel arch vertices.

2. Invoke the Extrude Edges tool through the menu command Vertex | Extrude Edges (the plug-in resides in this menu by default - it can be changed using the Settings button at the bottom of the dialog box). Here is a brief (or not so brief) run down of the various options available.

Coplanar: The extruded edges will be an 'extension' to the faces sharing the edge which is being extruded. So the surface including the new extrusion will be flat, i.e. the vertices of the new extrusion will be closer to meeting in the middle of the wheel arch.

Perpendicular: The extruded faces will be perpendicular to the faces sharing the extruded edge, so the surface including the new extrusion will form a lip, or corner. The reverse checkbox determines in which direction the lip will go.

Manual Offset: This option, when enabled will allow you to manually type in an extrusion amount. The three edit boxes under the Manual Offset group panel (shown ghosted in the above image of the Extrude Edges dialog) will become enabled and allow you to enter an amount of extrusion along each of the world axis. For example, an amount of X: -7.0, Y: 0.0, Z: 0.0 gives the following result (note that the extrusion is flush to the extruded edge because it was extruded along the X axis only):

Extrude only Non-Shared Edges: This checkbox (when unchecked) enables the extrusion of all edges between the selected vertices, for example this allows for easy extrusion of the edges of a circular disk without extruding all of the edges that connect with the outside edge and the center vertex, as shown below (for the selection of our wheel arch this option is of no consequence as it does not effect us):

Average Edge Length: This option used a divisor to determine the length of the extrusion. The higher the divider the shorter the extrusion.

Specified Length: Allows the length of the extrusion to be set directly. The edit box here will always contain the length of the extrusion determined by the settings on the rest of the dialog.

Select Extruded: This option allows the user to set what is selected after the operation is complete. If Vertices is selected then the new vertices will be selected after the operation, and the new faces if the Faces option is selected.

3. I used the Coplanar option (the Manual option may be a better choice but I want the resultant extrusion to merge in a bit towards the center of the car). I used the Average Edge Length option and set the Divisor to 8. With the Vertices option set on the Select Extruded option press OK. The selected vertices are then moved back along the X axis by pressing Move in the model panel, then entering -7 in the box above the X button on the Move Options group panel. This gives the following result (this could have been achieved using the Perpendicular option but doing it this way gave cleaner results):

4. With the resulting moved vertices still selected I aligned them on the X axis by pressing Ctrl+Shift+X. This is to make sure that the wheel recess wall is flat when it is created.

5. With the vertices still selected, extrude the edges again using the Coplanar option with a Specified Length of -1 - remember this value for later on and Vertices selected under the Select Extruded option.

6. Now hit Ctrl+N to snap the selected vertices together (Vertex | Snap Together), and then Ctrl+W to weld them (Vertex | Weld Together). Move the resultant vertex back along the X axis by 1 - the value that was remembered from the last step. We are moving the vertex 'back' which means we have to specify a value that is the negative of the number used in the extrude dialog, the negative of -1 is 1. We now have a vertex that is flush with the first extrusion's vertices.

7. Move the selected vertex down a bit to match the rest of the underside edge of the car and you have a finished wheel recess.


Turn Edge (Ctrl+E)

Example 1

Turning an edge is a very useful tool. The first example that is shown is from a scenario that you will arrive at regularly, its a case where turning an edge results in a symmetrical model which is always the best way to work in 3D. Its not strictly necessary but it results in a model that looks tidier and is therefore easier to work with.

From this image you can see the front and perspective views of an abstract 3D shape. On the left is the front view, in it you can see the wireframe that composes the 3D model that is seen in the perspective view.

In this image you can see that I have highlighted the faces in question and labeled them Face 1 (yellow) and Face 2 (red) respectively. What we want is to make the model symmetrical, we want Face 1 to look like Face 2 (or it could be the opposite if you wish). What we have to do is select both triangles of Face 1 and perform the turn edge command.

As you can see now the wireframe view (front) shows a symmetrical model. The model in the perspective view however, has remained unchanged, as is the case when turning edges on flat surfaces such as in this example.

Example 2

In this example we are going to make the model look different in the perspective view by turning the edge of the notch in the middle of the previous model. First we select the two faces that compose the notch in the middle of the model (highlighted blue).

Once these two triangles are selected you can perform the turn edge command which will then make the model look like this:

This example shows that the angle at which two faces lie against each other determines what the Turn Edge command will produce. A solid bar was produced from a bar with a notch in it.

Summary

The Turn edge command will take the line that joins the two selected triangles and place it on the 2 opposing vertices. This is best seen in the following image.

The Turn Edge command is a useful tool, it is useful when you have spent a long time creating faces then realise some are not as you would like them to be. The turn edge tool is also useful when you want to create a different shape from an existing one.


Grouping

Grouping your model is an essential procedure if you intend to texture your model at a later date. Grouping can also allow you to work more productively by being able to hide an entire group at the press of a button. Grouping a model is a fairly easy procedure but it can be confusing if you are new to the concept or new to 3D modelling in general. Here, using the example of the 6 sides of a box I will show you how to group the faces of your model into easily manageable meshes otherwise called groups.

1. I have created a box for the purpose of this example, Toolbox: Model panel: Box.

2. Deselect the box as it is automatically selected after creation. Now choose the Select tool from the Model panel on the Toolbox, in the panel that appears below select the options Face and check the 'Ignore Backfaces' checkbox.

3. In the front view select the faces of the box that are facing towards you by either Left-Click and dragging or by holding shift and clicking approximately in the middle of each face.

4. Open up the Groups tab on the Toolbox. Press the 'Regroup' button. This takes the two faces that you selected and removes them from the 'Box01' or original group and adds them to the new 'Regroup01'.

5. In the white edit box next to the 'Rename' button enter the text; Front. Then press the Rename button. This procedure renames the group to whatever you enter into the Rename box.

6. You should now have two groups. One called 'Box01' or similar and the other called 'Front'. From here continue to perform the same process on all the other sides of the box. Do this by again choosing the select tool with Face and 'Ignore Backfaces' checked, then selecting the faces facing to the top in the Top view, then Regroup and Rename them. Do this for all the sides of the boxes selecting the faces from the six different views, so by the end you should have 6 groups called Front, Top, Back, Bottom, Left and Right, not necessarily in that order.

That's the basis of creating groups. Now with the groups formed you can select the name of the group you want and press Hide to remove it from view (press Hide again to bring it back), Select to select all the faces in that group and Delete to delete all the faces in that group.

This same model is used again in the Texturing example with all the groups already created as they were in this tutorial.


Applying a Texture

Textures can only be applied to groups, they cannot be applied to individual faces unless that face is in a group by itself. This example will explain how to load a texture that you have created and assign it to a group of your model. The groups in question are the six sides of a box, called; Front, Back, Top, Bottom, Left and Right. The texture I used is the one shown here.

Note: Notice how this texture is rectangular, it could also, for the sake of argument, be a non-power of two texture; this may not work on some graphics cards, although most modern cards can handle these sorts of textures, you graphics card drivers may need apdated also.

1. First of all we have to create a new material. In MilkShape 3D a material is anything that applies a colour or texture map to a group of faces. A material can contain a texture and colour information at the same time. This will give a material with texture and a diffuse colour a texture with a colour tint. Anyway, left-click on the Materials tab on the Toolbox.

2. Click the New button and you should see a sphere in the material preview box, which defaults as grey.

3. Rename the texture by clicking in the white edit box next to the Rename button, type the word BoxMat an abbreviation of the words Box Material. After entering this press the Rename button to actually rename it.

4. Left-click the button below the slider underneath the 'Specular' button, it should currently have <none> on it. An open dialog should appear. Browse to find your texture then open it.

5. You now have a material to assign to the model. Click on the menu option Edit->Select All (Ctrl+A) to select the whole model (this selects all six groups). In the Materials panel make sure the BoxMap material is highlighted in the white list box to the top of the Material panel and click the Assign button. If the 3D perspective view is not already in Textured shading mode then right click in the 3D viewport and select 'Textured' from the popup menu.

6. The texture is now mapped to all sides of the box but the region UV coordinates are not set up properly. This means that the whole texture is shown on each face instead of one coloured side with the appropriate name showing on it. To fix this we will use the Texture Coordinate Editor.

7. Choose the Menu option Window->Texture Coordinate Editor. You should be able to see the texture as well as the Front faces on top of the texture. If you cannot see the faces then close the editor and press Ctrl+A again to select all the faces. If at any point when using the texture coordinate editor you cannot see faces, exit the editor and select either all the faces or only the faces you desire. This image shows roughly what you should see.

8. Everything is quite small so enlarge the window if you have to and enter a value of about 4 into the white edit box next to the 'Scale' button, then press the Scale button. This is similar to a zoom function, it allows you to see in more detail what you are doing. Also check the Redraw box, this will automatically update the 3D view to reflect the changes you make in the Texture Coordinate Editor.

9. The top drop down list in this image is the Group selection box, this means you don't have to exit the Texture Coordinate Editor everytime you want to select another group to operate on. The bottom one is the view perspective box (the direction from which you view the faces). With both the top and bottom drop down list at Front choose the Region tool.

Note: MilkShape 3D uses a texture mapping technique called planar-mapping. This is the method used for mapping textures onto faces. Planar mapping requires the selection of an axis or 'plane' along which to project the texture, this is why the view perspective box is provided. For example the Front plane maps textures on the XY plane, the Left on the ZY plane, etc...

10. Draw a box roughly around the Red square in the top left the one with Front in it. Then click the Remap button. As you can see setting a Region creates a new area in which the limits of the faces will lie within, this is a useful tool so use it often to speed things up, it avoids the use of the more cumbersome Scale and Move buttons.

11. In the top drop down list select the Back group. In the bottom drop down list select the back view. The view has to be selected as well, because this is the direction from which the texture is mapped. If for example you left the bottom drop down list at Front you would find that when you finish applying the map, the word 'Back' on the back face would appear back to front when viewed from the back.

12. Do another region around the green square with the 'Back' word on it. Then click remap to remap the backfaces to sit within the area you defined.

13. From here on in its just a case of repeating steps 11 and 12 for the remaining groups. Remember that when selecting any of the faces that the viewing perspective drop down list box reads the same as the group selection drop down box does. Keep creating regions for each group around the appropriate part of the texture and pressing remap to make them sit within the new region.

Here is the final result.

A box is a very simple shape and is naturally easy to map textures onto. As models increase in structural complexity the assigning of textures will also become increasingly complex and may require many groups. From here everything else is experience, so Good Luck!


Applying an Alphamap

If you want parts of your model to be transparent then you can use an alphamap. Areas on an alphamap where the colour is darker is where the material will appear less transparent. Where the alphamap is lighter the material will be more transparent.

The example I have provided is simple but it explains all the processes you need to go through to get the correct results.

Here we have a standard square composed of two triangles; on it is a texture of a monkey's face. What I want to do with it is make it semi-transparent, about 50% transparent. This is perhaps the easiest kind of transparency to achieve. So here are the steps I followed to gain this degree of transparency.

1. When you have the texture applied to the face, load the texture into a paint program such as Photoshop or Paint Shop Pro (I have used Photoshop).

2. We need to create the alphamap from this texture so what we do is inverse the colours. To do this in Photoshop, click on Image->Adjust->Levels. The levels box will appear. What we want to do is move the sliders on the gradient bar at the bottom to either end, swapping them around. When this is done (your picture should now look sickening) click 'OK'. This effect can also be achieved by clicking Image->Adjust->Invert, or Ctrl+I.

3. You should now have an inverted colour map (shown below) which you can use as an alphamap for your model. So save the inverted texture somewhere (preferably in the same directory as your model). Optionally (to reduce memory usage) you can then make the image grayscale by clicking Image->Mode->Grayscale. (I usually leave the image with inverted colours because a truly inverted colour without loss of colour information gives true ratio transparency; in this case 50-50).

or

4. Go into MilkShape 3D and click the alphamap button on the Materials tab in the Toolbox. Browse for your texture and open it once you have located it.

The alphamap should now be applied and you should see the difference in your 3D viewport (of not select the group the material is to be applied to and click apply in the materials tab.

This applied a 50-50 transparency (50% foreground texture - 50% background). To achieve variations on this you can darken and lighten the alphamap in your chosen paint package. In Photoshop use the Levels window as mentioned before, and slide the slider on the white gradient side closer to the darker side to get a less transparent alphamap. Slide the slider on the dark side closer to the light side to get a more transparent alphamap. Alternatively you can use the Transparency slider below the Emmisive button on the Toolbox: Model panel, however this tends to oversaturate the final material.


Reverse Vertex Order

The Reverse Vertex Order command is a useful one when modelling. It commonly comes into play when you have been linking vertices to form faces (triangles) with the Face tool on the Model tab in the Toolbox. Vertices must be linked in a counter-clockwise direction to form a face (one that faces outward). When linking vertices it is easy to link them the wrong way.

This image shows the front (on the left) and the perspective (on the right) views of a square flat surface composed of nine vertices and eight triangles.

Please note that the shading type used in the perspective viewport is Flat Shaded, this can be selected by right clicking the viewport and selecting Flat Shaded from the pop-up menu (the default is Smooth Shaded. We use the Flat Shaded view because it gives a better view of the faces that are causing the problem (they are in black). An explanation for the reason behind this can be found in the section: 3D Theory & Practice in the appendix.

The triangles in the upper left and lower right quarters were created using the Face tool, selecting vertices in a counter-clockwise direction as shown in red in the image, therefore these faces face towards the viewer, outwards. The triangles in the upper right and lower left quarters were created using the Face tool, selecting vertices in a clockwise direction as shown in blue in the image, therefore these faces face away from the viewer, inwards.

This was done on purpose to show what happens when different vertex orders are used but now if we select the four triangles which are facing inward (away from the viewer) then select Face->Reverse Vertex Order the faces will face outward as shown in this image.

As you can see, the wireframe front view has not changed. This is because the command does not change the physical construction of the model, it just reverses the order that the triangle is joined to the vertices. In the perspective view all the faces now face outward as we wanted. If we had selected all eight faces then reversed the vertex order the opposite of the model in the first image would have been achieved, i.e. all faces facing inward would face outward and all faces facing outward would face inward.

The menu command Face->Face to Front would have served the same purpose as reversing the vertex order on the four black triangles. With Face to Front you can always be sure that your polygons are facing outward rather than using Reverse Vertex Order with which you can't ever be absolutely certain that your polygons are facing the correct way, i.e. outward.


The Beginners Guide

Contents

1.0 Introduction

2.0 Mid-Section

3.0 Front of Airplane

4.0 Tail of Airplane

5.0 The Wing

6.0 Tidying Up & Finishing Off

Introduction

This is intended as a streamline guide to get you started in MilkShape 3D. It should hopefully help you understand some of the concepts that are used when modelling.

For this tutorial we will build a simple model of a plane using various techniques. When modelling, it is common to stick to one feature such as extrude and shape the faces using scale and move as the model progresses. We are going to tackle the task by using a combination of face creation using placed vertices and extruding faces.

This tutorial is very much 'on rails' but if you feel that at any point you are getting bored or just don't like the way I'm doing things feel free to break off and try it you own way. After all, self-tought skills are often the hardest to forget, just reading instructions doesn't give the same learning. Trial and error is how I learned to model.

Mid-Section

To start off with we will create one half of the model, this is becuase the model will be symetrical. The only way to guarantee symetry is to work with one half, duplicate it then mirror it. When working in this way you also have to remember to weld the vertices in the middle of the model to the adjoining vertices of the other half so that the completed model is shaded properly throughout its vertical equator. For the sake of perfection we wouldn't like to leave it in two halfs anyway.

1. To start off with, create a box. Do this by clicking box on the Model tab of the Toolbox on the right.

2. Create the box in the Front perspective in the top left viewport, this is really just a matter of preference.

3. Drag the box from the top left grid line...

4. to the bottom right grid line to create a box whos extremes lie on a grid line, this again is another preference rather than a must but it ensures the steps mentioned later will give the desired effect.

5. The box will turn red to indicate that it is selected. Select the scale tool from the Model tab, the same panel you selected the Box tool from. In the Scale Options panel that appears below the main part of the Model panel enter 0.2 in the box above the Y axis button. This panel is explained more in the Toolbox: Model section. Then press the Scale button.

This box will form the main part of the fuselage of the plane we are creating.

6. I usually prefer working with the left hand side (viewed from behind) of the model when creating symetrical models so we will delete the faces that are facing to the right (when viewing the model from the back). Click the Select button in the model panel then click the Face button in the panel that pops up below this. Make sure the 'Ignore Backfaces' checkbox is checked.

7. Goto the viewport that has Left side view in the Viewport Caption. If none do then just click the drop down perspective list and select the Left view. If the viewport caption is not visible then click the menu item Window->Show Viewport Caption.

8. Select the two faces (triangles) that make up the side of the box. Do this by holding in shift and clicking approximetely in the centre of both faces, their wireframe outline will appear red to indicate they are selected. Press delete, this will remove the faces.

One side of the model should now have no faces. The inside of the model is usually black as this is where no light reaches.

9. Now we are going to scale the box and move it so it is on the line of symetry (in this case the YZ plane). Use the select tool with the Face button pressed in, except this time uncheck the 'Ignore Backfaces' checkbox. Drag a selection box over the box in any view to select the whole model.

10. Click the Move button in the Model panel. In the panel that pops up below, enter 10 in the box above the X button then press move. This moves the box over 10 units. You will notice that it does not sit on the line yet, but the next step will make this so. You will come to realise that at this zoom level (in the 2D orthographic viewports) that each grid unit equals a 20 by 20 unit area. Therefore moving the box by 10 units moves it halfway through the grid boxes.

11. Click the Scale button. The Scale panel will pop up below the main Model panel. The last operation left the value in the Y box at 0.2 so to avaid changing the Y axis again enter 1.0. Enter 0.5 into the X box then press 'Scale'.

12. This block represents the mid-section of the plane's fuselage so we will shape it a bit better, after all a blocky mid-section would look kind of boring. So Use the select tool but instead of pressing the Face button in the Select Options panel, press the Vertex button instead, make sure 'Ignore Backfaces' is un-checked.

13. Use the Front viewport perspective and select the top left vertex of the box (a vertex is a dot in the viewport it appears bigger than the lines that construct the model wireframe). Because 'Ignore Backfaces' is turned off the vertex toward the front and the vertex towards the back in the region you selected are both selected. This is what we want.

14. Use the Move tool again and click and hold in the viewport in which the vertices were selected and drag the vertices up a bit.

15. Do the same again with the vertices on the bottom left of the box.

16. The next step is to bring in the vertices to the back right of the shape. In the top view select the vertices at the top right hand corner of the shape. Move these vertices to the left a bit, bringing them closer to the center of the x axis. Here is the result.

Front of Airplane

17. Now we can start forming the front of the aircraft. Choose the Select Tool and in the Select Otions panel choose Face and make sure 'Ignore Backfaces' if checked. In the Front viewport (remember that if there is no front viewport, use the viewport caption to change one of the others to a front viewport) select the two prodominant faces (the ones facing you). Remember to select these faces hold shift and click approximately in the centre of each face.

18. Now go into the Top perspective. From the Model panel on the Toolbox, choose the Extrude tool.

19. In the Top viewport click and hold in an area just off to the side of the model, drag the cursor down. The faces that you selected will start to move down as you move the cursor down. This is called an extrude operation, new faces are created in the gaps between the selected faces and the faces that they were attatched to. Keep extruding until the faces reach about halfway through another grid square, to stop extruding just let off the mouse button. If you cannot get a good view of the extrude operation as you perform it, Undo (Ctrl+Z) the extrude operation and press Control on the keyboard and Left Click and drag in the viewport. This pans the camera around. Notice, in the following image, the extrusion to the front of the shape we had before.

Note: At this Point you may want to take into consideration the different types of shading available in the 3D viewport. Throughout this tutorial I have been using Flat Shaded. This is becuase polygons are more defined in this view than in Smooth Shaded; the default. Flat Shading is useful in model creation whereas smooth shaded is good to see the final result. To change the shading type right click in the 3D viewport and from the popup menu choose Flat Shaded.

20. This new extrusion is the first part of the front of the plane. We will shape it a bit now. In the Top viewport, select (with Vertix and 'Ignore Backfaces' unchecked) the vertices to the bottom right of the model (the ones on the extrusion that we just made). Use the move tool to shift these a bit to the right to create a shallower gradient than that of the line above it, i.e. creating an acute angle instead of the obtuse angle it was after extrusion.

21. Now deselect the moved vertices (just click in the viewport with the select tool). Go into the Left viewport. The extrusion should be to the right of the viewport now. Use the select tool again (with Vertex and 'Ignore Backfaces' unchecked) and select the two vertices to the top right of the extrusion. Move these up a bit.

22. Deselect the vertices. Go back to the Front view and again select (Faces with 'Ignore Backfaces' checked) the front two most prodiminant faces (the two facing you in the front view). Remember to select these faces hold shift and click approximately in the centre of each face.

23. Go to the Top view. Extrude the faces as we did in the last extrude operation; downwards, about one and a half grid squares in distance this time.

24. Use the select tool (Vertex and 'Ignore Backfaces' unchecked) to select the vertices in the bottom right corner of the extrusion that was just created, this will select both the vertex you can see and the one underneath it.

25. Use the Move tool to shift the selected vertice to the left, bringing them closer to the centre point on the x axis.

26. To add a bit more shape, I used the front view to select the top left vertex on the extrusion that was just created, I moved this down a bit because this is very near the tip and will give it an aerodynamic look. I also moved the vertex to the top right of the new extrusion down a bit in the front view. I used the Select tool with Vertex and 'Ignore Backfaces' checked. In the top view I also selected the bottom left vertex of the previous extrusion, then used the left view to drag it up a bit. Finally I selected the two top vertices at the opposite end of the model (in the top view using 'Ignore Backfaces' with the select tool) and moved them down a bit using the left view.

Note: If you have been using the Toolbox to select a tool each time, let me introduce you to shortcuts. MilkShape 3D is designed so you can have one hand on the keyboard and one on the mouse, using the keyboard hand to select shortcuts and the mouse for the actual modelling. The shortcut for Select is F1 and Move is F2, these are the ones you will probably use the most, but of course that depends on your work methods. See the section on Shortcuts for a full run down.

26. For the tip of the plane, select the front two faces of the model in the front view with the select tool (Face, 'Ignore Backfaces' checked), then once again extrude them. Extrude them about half a grid box in distance.

27. To create the tip is easy, if you have not done so already deselect the faces. Now use the select tool (Vertex, 'Ignore Backfaces' unchecked) and select in the top view (or appropriate) the vertices of the new extrusion. Now goto the menu and click Vertex->Snap Together (or Ctrl+N) don't deselect the vertices just yet... After snapping you must remember to weld (it may not always be neccessary to weld but this depends on your needs), so goto the menu and click Vertex->Weld Together or (Ctrl+W). You now have one vertex where four previously existed.

28. Don't deselect the vertex just yet, Move it to the x axis centre line to the left. To keep with the laws of airodynamics (roughly) I have also moved the bottom right vertex of the previous extrusion a bit more to the left, towards the centre of the x axis.

Tail of Airplane

29. Now we will start to work on the tail of the airplane. Change your front view to a back view if a back view is not already available, if you do not know how to do this see the Viewport Caption section or right click in the viewport and from the popup menu choose Projection->Back.

30. Now for the aid of making future modelling easier, to temporarily hide sections that we are not working on we will create a new group and hide it. Click on your Groups tab on the Toolbox. In the list box immediately below the Group name on the tab you should see one group called 'Box01' by default. This is because the first thing we created was a box.

31. In the box to the right of the Rename button enter 'MidSection' then press the Rename button.

32. Next, in the top view use the select tool (Face, 'Ignore Backfaces' unchecked) to select the faces shown in the next image.

33. Now, with these faces selected, goto the Groups panel again and click the Regroup button. A new group will be created called Regroup01. This group contains the faces that were selected. Enter the name 'Front' in the box next to the Rename box then press the Rename button. Two groups are now shown in the Groups list box, MidSection and Front. Click on the Front group in the list box and click the Hide button. This removes the group from the display so that it is easier for use to model the back of the aircraft.

34. We can now model the back of the aircraft. In the back view that you created in a viewport (step 29) select the two faces facing you (with select tool, Face and 'Ignore Backfaces' checked).

35. In the top view (or the left view whichever you prefer) extrude these faces about three quarters of a grid box distance. Don't deselect yet... create another extrusion in the same manner about the same distance. These extrusion will form the basis of the tail. Now deselect the faces.

36. Now using the select tool (Vertex, 'Ignore Backfaces' unchecked) in the top view select the top three vertices down the right hand side of the model and the Move them to the left a bit.

37. If you have not got a Right side view visible change your Left view to a Right view. Choose the select tool again (Face, 'Ignore Backfaces' checked). Now select the two faces on the side of the last extrusion, these are facing directly toward you in the right side view. Remember to use the shifl key when selecting multiple faces, and to click approximately in the middle of each face you mean to select.

38. In the Top viewport, use the extrude tool on the Model tab of the Toolbox to extrude these faces about three quarters of a grid box in distance to the right.

39. Deselect the faces. This will form the back wing of the plane. Still in the top view use the select tool (Vertex, 'Ignore Backfaces' unchecked) to select the top right vertex of the new extrusion. Move them back a touch to create an airodynamic look, much as they would look like on a commercial airliner. Do the same with the lower right vertex of the same extrusion. Move it back a bit and in to the left a bit.

40. In the Right viewport, use the select tool (Vertex, 'Ignore Backfaces checked) to select the four vertices of the new extrusion, the ones that you just moved in the previous step. Don't drag a region over them because you will end up selecting other vertices as well. Instead drag a box around the first two, to the front then hold shift and drag a box over the next two, to the back.

41. Use the scale tool on the Model tab of the Toolbox, then click in the Right viewport and hold, drag the mouse down to make the top and bottom vertices come closer together. When you are satisfied with the height between the vertices. This is called an arbitary scale operation. If you wish you can move the vertices up a bit before deselecting them.

42. Now we will create the back fin of the aircraft. In the top view select (I'll leave you to figure out the select configuration combination for this one) the two faces at the top of the model on the new extrusion that was created, these are the two faces to the left of the tail wing we just created.

43. Use the extrude tool in the back or right viewport to extrude the faces up a bit.

44. Using the scale tool, perform an arbitary scale operation (mouse click-hold and drag), in the top view port to decrease the width of the extruded faces (they should be the selected ones). Decrease the height of the section a bit as well.

45. Next, move the two selected, extruded faces to line up with the back of the model. Then move them to the right a bit to be closer to the back fin.

46. From the back view, with the same faces still selected, use the Rotate tool in the Model tab of the Toolbox to rotate the faces. Do this by clicking and hold in the back viewport to the right of the faces then drag the mouse cursor down. The way the faces rotate in reaction to the direction you drag in depends on where you originally clicked to begin the operation. The markings shown in the image are just a guide. This operation is called an arbitary rotate operation, that is controlled by the mouse and not actual values (as would be entered in the Rotate Options panel that appears upon selection of the tool see the Toolbox: Model section for more details).

47. From the back view Move the faces down and to the left a bit. Then extrude them upwards, creating the back fin. Feel free to shape this as you desire, using any tools you deem neccessary.

48. We are now getting close to something resembling an airplane. We will create another group of the back section so that if we require it, we can hide it. Select the faces shown in the image below, using the select tool. Goto the Groups tab and click Regroup, rename the group 'Tail' (do this by entering the name in the box first then clicking the Rename button).

The Wing

49. The wing will be realtively simple, or at least, it should be by now. Unhide the Front group in the Group panel of the Toolbox, do this by clicking on the name of the group in the list box then click the Hide button. The Hide button acts like a toggle, turning the display of the group on and off depending on its current display setting (visible/not visible).

50. Goto the Right side view of the craft. Select the vertex indicated in the image below and move it to be in a straight line with the remainder of that section.

51. Now, still in the right view, select the four faces that are immediately to the right of this vertex that you just moved. (I'm assuming now that you know what Select Options to choose).

52. In the top view Extrude these faces to the right, about one and a half grid boxes distance.

53. Still in the top view use the select tool to select the vertices at the back of the wing (to the top in the image above). Move these vertices back a bit more to create a streamlined effect, move them to the right a bit more as well as this will be the part of the wing that protrudes the furthest from the fuselage.

54. I finished up the wing by moving the other two sets of vertices to the front of the wing (the vertices to the bottom of the wing in the image above) into a position that would give a better look of aerodynamics. I also selected all of the wing vertices (six in total) and scaled them in the right view in height for a structure that would cut the air better (if it were a real plane). Here is the final top and right views of the wing.

Tidying Up & Finishing Off

55. If you were paying particularly close attention during the modelling process you would have realised that there were new faces created as we went along on the side visible from the Left side viewport. Change your right viewport back to a Left viewport, there are nine faces in total to be deleted, so use the select tool and select the faces shown in the image below.

56. Just press delete to be rid of these unwanted faces. Keeping them won't make any physical difference to the overall structure of the plane but they add to the poly count and aren't seen so we should remove them.

57. When we extruded the wings we selected four faces in total. When we did the extrude operation an extra four faces were created in the wing shown in the image immediately below. To get rid of these faces is quite a complex operation so I will elaborate.

57.1. Goto the front view.
57.2. Hide the Front group (in the Groups tab of the model panel). Hide the tail group as well if you are having difficulty seing the faces properly.
57.3. Using the select tool, select the two faces on the front of the wing section still shown, these are shown in the image below.

57.4. Press delete to remove them.
57.5. Now change to the back view and hide the MidSection group, unhide the Front group.
57.6. Use the select tool again to select the two offending faces which face backwards, shown in the image below.

57.7. Press delete to remove those 'waskawy fwaces' - Elmer Fudd joke.

58. Because of the extrusion of the wing and the faces we deleted the shading of the model will now be wrong (look strange) when we come to finally give it a shading group (more about this later). So we have to weld the vertices that were left behind. For every vertex between groups and on the wing, select it then press Ctrl+W to weld the vertices. Why is this you ask? Because in certain places in the model two vertices exist where it might seem like there is only one, don't get paranoid, this happens as a result of the modelling process we used in this tutorial. To sort it, for every vertex selected in the image below, select them individually (one at a time - I have only selected all the vertices in this image to show you which ones need welded) and press Ctrl+W or click menu command Vertex->Weld Together. As you do this and before you start, goto Tools->Show Model Statistics and check the number beside the vertices entry (at the top). You should see the number decrease as you progress. I managed to get the number from 53 to 43.

59. Now that the model is clean, here comes the last bit. Use the select tool to select all of the faces in the model, this is done to select the whole model (all groups), you could also use the groups panel to individually select each group or use the select tool with the 'Groups' option.

60. With the model selected goto Edit->Duplicate Selection (Ctrl+D). Then goto Vertex->Mirror Left <--> Right. You will now see in the 3D view a complete aeroplane, but we are not finished yet. Deselect the duplicate.

61. The vertices down the middle of the model are not welded together, becuase it's a duplicate of the original. The effect this would have in the final shading is that a split would be obvious down the centre of the model. This split cannot be seen in Flat Shaded so switch to Smooth Shaded briefly to see the effect (right click in the 3D viewport and select Smooth Shaded from the popup menu).

62. We must therefore weld all the vertices down the centre of the model. The image below shown all the vertices that must be individually welded. As said before the image only shows all the vertices that must be welded... individually. So start at the front of the model in the top view with 'Ignore Backfaces' checked when using the select tool so that you don't select any of the underlying vertices (remember that there are vertices on the underside as well), then weld them as before. Then switch to the bottom view and do the same again. The vertex at the front of the plane only has to be done once as it is a point. Use the back or front view to make sure you are selecting only a vertex from the top OR the bottom side, NOT both. Switch to Smooth Shaded while you are doing this to see the effect it is having on the shading of the centre part of the plane.

63. Lastly, we will assign a smoothing group to the model. So use the select tool to select all of the model. Goto the groups tab of the Toolbox and in the Smoothing Groups panel to the bottom of the Groups tab click assign if it's not already pressed down (if should be paler if pressed down) then press 1. This should clean up the last bits of shading on the model. As you assign Smoothing Groups you may want to assign different groups or faces to different Smoothing Group numbers. Think of the 32 numbers there as 'slots' for you to store your Smoothing Groups in. To read more on Smoothing Groups goto the Toolbox: Group section.

Summary

This tutorial may have been hard for you to understand as it was for me when I first started with MilkShape 3D, although when I first started I had a decent grounding in programming computer graphics so it wasn't as hard for me to pick up, fortunately. With perseverance, however nothing in this tutorial should pose a challenge (other than my English, perhaps). If you are computer litterate and are determined chances are this will have been a breeze.

I hope you like the model even if it is a little basic, with time, experience and skill you should be able to knock something like this up in minutes.

*Sob*, goodbye!


Tutorial: Animation

There are three parts to this tutorial.

  • Part 1: Setting up the Skeleton
  • Part 2: Assigning Vertices to Bones
  • Part 3: Creating a Walk Animation

Introduction

This tutorial deals with the walking animation of a biped model, but the principals can be applied to any form of animation. A good animation can be made purely by trial and error, the process takes a while but the results will look better, if you tweak certain frames. The correct positioning of joints also adds a lot to the final product so spend some time acquainting yourself with human physiology.

The length of time this tutorial takes to complete will depend on your experience and understanding of the concepts involved.


Part 1: Setting up the Skeleton

First of all we have to build the model, in this case I have pre-built one so that we can go straight onto the subject of animation. This is a custom animation, if you are creating an animation for a game engine there may be certain procedures to follow, there may even be a pre-created skeleton you can use with animations already present. This tutorial only teaches the concept of 3D model animation. First; we have to add joints to the model at areas where we want mesh deformation to occur.

This is my model, I am assuming you already have a model that you want to animate. We want to keep the animation simple so we will place bones at key joints in the model, to resemble the most important joints of the human skeleton when it comes to a walk cycle.

  1. Select the Joint tool from the Model tab in the Toolbox.
  2. Make sure you are not in animation mode. Go to the front wireframe view and place a joint approximately in the centre of the pelvis where the spine would join. The first placed joint is the root joint for the whole skeleton. As this joint is in the centre of the model (roughly speaking) we will make it the root joint.

  3. To create the left and right extremities of the pelvis (we will call them left and right hip) you have to select the middle pelvis joint before creating the left and right hip joints. So first place the left joint, then select the middle pelvis joint again and place the right joint to give you something that looks like this.

  4. From here you should be able to place all bones for the rest of the skeleton. Use the image below to place the rest of the joints. Remember to have the 1st joint in the area selected before you place the next, e.g. have left hip joint selected before you place the left knee joint, the left knee joint selected before you place the left ankle joint etc...

  5. This gives us our basic skeleton, we still have to add to it. We still have to add the foot joints and align all the joints so they resemble the human skeleton. So, in the side view add a foot ball and toe joint to the foot (remember to have the ankle joint selected before you place the foot ball joint, etc).

  6. Now comes the boring bit, go through all of the joints and name them as they are labeled in the images above. First highlight the joint name (joint1, joint2 etc...) in the joint selector box in the joints tab of the Toolbox then type the appropriate name in the box beside the Rename button then click the Rename button. Remember that while renaming the joints you are looking at the model from the front, therefore your left and right sides are reversed, so take special consideration when you rename the joints as you want to name the joints from the perspective of being the model, so to speak.
  7. Now that all the joints are named we can re-position them so the skeleton represents a human skeleton. Take consideration when re-positioning the joints, remember that the joint is the centre point for deformation of your mesh in that area. Try to model as accurately as possible the position of joints in the human skeleton, it is only this way that you will get an animation that looks like a human walking. The final set-up of my skeleton (viewed from the side so you can see the position of joints) is shown in the following image.

Note: You may wish to spend some time fiddling with the positions of the joints so as to get the best results. You will find the more experience you have the more you will appreciate the exact positioning of joint so that model deforms in the best possible way.


Part 2: Assigning Vertices to Bones

The next step in setting a model up for animation is assigning the vertices of the model to the bones (you are actually assigning vertices to joints but the word bones is used). This process is sometimes complicated, the level of complexity depending on how densely populated your model is with vertices and bones.

The reason you need to assign vertices to bones is so that MilkShape 3D (and any other application you may export it to) knows which parts of the model move in relation to the joints they are assigned to. If you don't assign bones then animate your model, only the skeleton will move, the model won't.

It is best to think about how you will assign vertices to bones when modelling so you know where to place vertices to give the best mesh deformation. The model I made contains logically arranged vertices that originate around where I thought I would be placing the joints.

It is important to familiarise yourself with the process of assigning vertices to joints the steps are:

  • Select the desired joint in the Joints tab of the toolbox (its best to do it this way rather than select in a viewport).
  • Use the Select tool with the Vertex modifier to select the vertices you want to assign to the joint.
  • Press the 'Assign' button on the Joints tab of the Toolbox.

To confirm the assignation of the vertices to the joint de-select the vertices, click the joint again then click 'SelAssigned'. This will select the vertices assigned to the selected joint. Now to assign the vertices.

1. Make sure you are not in animation mode.
2. Select the 'cranium' joint from the Joints tab of the Toolbox.
3. Use the Select tool with the vertex modifier and drag a box over the vertices that make up the head to select the joints shown below.

The white box shows my region selection with tool Select Vertices (Left-Click Drag).
4. When you have selected the vertices the joint will turn to the default colour again (blue in this case) indicating that it is not selected but don't worry the name of the joint in the Joints tab of the Toolbox is still highlighted so all you have to do is press 'Assign'. Now deselect the vertices (just click in the empty workspace in the viewport) and click 'SelAssigned', the vertices you just assigned will be selected again confirming that the 'Assign' action worked.

I won't bother going through the whole process of assigning every vertex in the model to a bone but I will highlight some scenarios such as limb movement...

When I first started modelling I used to assign the vertices that formed the joint in the limb to the bone, I later found out after rotating joints around in animation mode that the way I had assigned vertices was totally wrong. You see, the vertices that are assigned to that joint are the ones that will move when that joint is moved. I left out the vertices in the middle of limbs because they weren't vertices that formed a joint, therefore I thought that they would move because the rest of the vertices moved, if you see what I mean - I was wrong. The image below shows an example of the scenario I'm talking about, the joints that I assigned to start with and the ones I should have assigned...

You might think that there is no problem with this but when we come to animating the right knee joint watch what happens...

The view on the left shows that the unassigned vertices stayed in the same position because they were not assigned to the joint, this creates the abnormality you see circled in red. The view on the right shows the correct way in which the vertices were assigned therefore making the vertices rotate with the joint. Keep this in mind when you are assigning the rest of the vertices to bones throughout the model.


Part 3: Creating a Walk Animation

Animating is easy, however, creating a good, realistic animation isn't. I wanted this to be as realistic an animation as possible, so to aid me I temporarily robbed my brother of his natty new digital camera with video capabilities and created some short reference movies, of me walking, running and dashing. We will only use the walking reference. There are different working styles to creating animations, but I personally prefer to start with a small number of key frames at the extremes of the animation and build up from there, tuning it as I go.

If you have set up your vertices and bones correctly it should be very easy to move the different parts of the model around by manipulating the joints. Enable animation mode by clicking 'Anim' on the Keyframer in the bottom right corner of the screen. Now select some of your joints (try the hips, knees, shoulders and elbows) and select the rotate tool (F3) then rotate the joints in the three 2D orthographic views, do you see the ways in which they rotate differently depending on which viewport you rotate within?

Right now you have a feel for rotating the joints we can load in the references and start animating. I have taken stills from the AVI file of me walking and saved them as JPEGs so I can load them into the background of MilkShape 3D and use them as references for positioning the joints. As we are creating a walk animation its best to work in the side view as this is the view in which most change takes place throughout the animation, therefore it is easier to see.

When creating the reference images I tried to get the image to the correct size for the size of the model that was created this was completely trial and error.

  1. Here is the Right side view of the viewport with the background image set and ready for animating.

  2. So to start off make sure you are in animation mode (the 'Anim' button is pressed) and the keyframe slider is on frame one, select the left_hip joint from the Joints tab of the Toolbox and rotate the left leg into place. As you can see from the image the left leg is straight so we'll just leave it at that.
  3. Do the same with the right leg... select the right_hip joint from the Joints tab of the Toolbox and rotate the right leg so it is at the same position as the right leg in the image.
  4. At this stage its best to do some tweaking before we position the arms. The problem with modelling with this method is that the image is a perspective view whereas the model is an orthographic view, this provides some measurement problems; we have no choice but to try to work around this. The key is to keep thinking how it would be... don't be afraid to get up and start walking around to test your theories. Rotate the ankle and foot_ball joints into position, remembering that the key is to have the heel of the left foot on a horizontal line to the toe of the right foot, i.e. so both feet are touching the ground.
  5. Now we can proceed with the arms. Position the left and right arms by selecting the shoulder joints and rotating them into position. As you can see there is a slight bend in the right arm (the arm furthest from the camera) so once you have rotated the right_shoulder joint select the right_elbow joint and rotate that to match up with the right forearm in the image.
  6. Now the frame is almost ready to store but before that we must move the whole skeleton down to be sitting on the nearest line (which will be the grid line that the sole of the model's feet were resting on before we started rotating joints) we will call this line the 'base line' from now on. This, as you will notice, is because when we walk we don't remain at the same height all the time, because our legs are at diagonals; in the stride of our step we drop down a bit. Select the root pelvis joint and move (F2) it down so the bottom of the model (toe of right foot and heel of left) are touching the nearest grid line. The frame is complete (double check the keyframe slider is on frame one) click menu item Animate->Set Keyframe or press Ctrl+K to store the skeleton position to the keyframe. Our final frame looks like this.

As you can see the process is quite lengthy... You have to do this for several frames of the walk cycle, but even all this work does not guarantee you a realistic walk cycle. For just now we will take each frame as it comes, if the animation requires tuning later on then we will do so.

When you pressed the button to store the keyframe the position of the skeleton was saved in the keyframe that the keyframe slider was on. If you change the keyframe while you have your model posed and it is not saved then the model will be reset, this can be very irritating if you forget to pick the keyframe first. So if you do this you can save the skeleton to the keyframe the slider is currently on then copy that keyframe and paste it where you intended it to be (remember that after pasting you have to set the keyframe as well). You can delete the keyframe from the unwanted position by selecting the keyframe by using the keyframe slider then clicking Animate->Delete Keyframe (Shift+Ctrl+K); just remember to do so before you set any more keyframes.

You can see in the image above that the bones (the parts between the joints) are highlighted yellow. This indicates that the positions of the yellow bones are keyed at the keyframe the keyframe slider is currently on. If you move the keyframe slider to the right you will see that the bones turn blue again (the default colour), this indicates that there are no set positions for the bones at that keyframe.

  7. Now we can get on with the right foot forward frame. I have changed the reference picture to the right foot forward extreme of the walk cycle. I want the walk cycle to take up 30 frame all together so the keyframe at which the opposite (right foot forward) extreme will occur is 15 because we are assuming it takes the same amount of time to walk from the left foot onto the right as it does from the right foot onto the left, therefore splitting the animation length in half which means 30/2 = 15... If you catch my drift. I had to fiddle a little more with the second image to obtain a decent reference; this was due to my distance from the camera and perspective angles etc... Anyway here is the image with the pre-keyed bone positions from the last keyframe we set (remember that blue bones indicate an unset keyframe).

  8. Once again we follow the same process we used to set up the skeleton for the first keyframe. Start with the hip joints rotating them into position (remember that the leg positions have to be swapped because the right foot is forward in this image). So rotate the right leg to be in the same position as that of the image, then the left leg, after this tweak the ankle and foot_ball joints. The key here similar to step four is to have the toe of the left foot and heel of the right foot on the ground.
  9. Once again move the arms into position. In the reference image you can't see the right arm because it is behind my torso, so move the right arm first to where the model's left arm is then move the model's left arm to where the left arm is in the image.
  10. The model is already resting on the base line because we did not change the location of the model from the last frame. So now we can set the frame; Animate->Set Keyframe or Ctrl+K. You will now have something that looks like this:

You can see that in this image only some of the bones are highlighted yellow; this indicates the changes we have made since the last keyframe. The rest of the joints keep the same rotation values as those of the frame before it.

  11. Now if you move the keyframe slider back and forth you will see the animation take place. As you can see it is very unrealistic, he looks as if he is sliding on ice or doing the moonwalk or something. The intermittent frames are the ones we will be changing after the next step.
  12. The last frame must be the same as the first so that there is continuity in the animation, if not then the animation will jump from the last frame to the first and you will see an obvious, un-natural error in the cycle. To do this we copy and paste the keyframes. Move the slider to the first keyframe position. Select all the joints in the model using the Select tool with the joints modifier so that every joint position is selected for copying. Then click Animate->Copy Keyframe. Move the slider to the last keyframe of the animation (keyframe 30) then click Animate->Paste Keyframe. Now click Animate->Set Keyframe to store it. Move the slider back and forth to confirm the operation worked correctly. You now have a complete cycle all that is left to do is tweak it.
  13. I captured two extra frames from the mid strides of the walk cycle; this is the point at which the two legs are the closest together. This allows us to set up the points in time that both legs are brought off the ground just after the pinnacle of the stride. For example if your left foot is into the stride i.e. it is forward then the right leg (behind you) will be bought off the ground to be bought forward i.e. into the stride. At this point the left leg bends slightly and the right bends even more as to avoid contact with the ground as it is being brought forward. The mid stride where the right foot is going forward is the first keyframe to set up. I placed this at frame eight.

I have actually exaggerated the bend in the knee as I wasn't satisfied with the animation it was producing. Sometimes it is necessary to pronounce certain frames to get the animation looking more realistic, even though there may be a clear difference between the frame and the reference image. The trick is to know when it is necessary; with experience you will learn this skill.

  14. At keyframe twenty three, half way between the middle and last frame I added the mid stride for the left foot coming forward. This too, is exaggerated.

Once I had both the mid strides in place I played the animation for a bit to see if everything was ok, apart from adding the exaggerations as I mentioned earlier everything was fine.

  15. The last part to add is the dip in the walk. In frames 1, 15 and 30 we moved the pelvis (the root joint) down a fraction because the animation was in the full stride at these points. Keyframes 8 and 23 where I added the mid stride frames, are the frames at which the two legs are the closest together, therefore there is a rise in the height of the model at these points. At frames 8 and 23 I moved the pelvis joint up by a fraction then set the keyframes immediately after so as not to loose the changes.
  16. At this point the fundamental animation is complete. You can add modifications to get it looking better; just don't forget to set the keyframes (Animate->Set Keyframe) after you make changes to keyframes. It is also a good idea to keep backups of the fundamental animation so that if you mess something up latter on you can just reload the basic animation.

Summary

Throughout this animation I showed you the steps to making a walk animation. Although the context is biased towards a walk animation, the same principles can be easily applied to any animation you may wish to create. The process and application commands remain the same.

Good luck in your adventures into animation!


Half-Life Tutorials

Making a World model for Half-Life - by Rat

Well first off, as I was preparing to write a tutorial on modeling, I scoured the net for what was all ready out there on modeling a character for use in a game. What I came up with, was a truck load of information on the benefits of using this or that method, and not a whole lot on telling you how to create a model. Oh I am sure there are some really good ones out there, but you want it now, right?

A download of this entire Tutorial in HTML is available at: http://www.drawcad.com/upload/HL-World-model-Tutorial.zip.

Note: You will need to have Internet Explorer version 4.0 or higher to view this on your computer as it was written in the Microsoft CHM help file format.

This tutorial will hopefully be the first of a series, starting with the basis of what is involved in the process of creating a model, it's skin, skeleton and animation, all in this order. As a final installment we will be showing you how, by a step by step detail, to get the model into Half-Life.
What we will be making is a world model for HL, that is the things you see laying on the floor in a deathmatch or the single player game that you can pick up, or it may be placed there with the intent of killing you! (Take for example the grenades and other types of explosives that you throw in TFC).
For this Tutorial, we will be using the popular Milkshape 3d by Mete Ciragan. I plan on making a Max 3d tutorial as well.

What is needed to complete your model

You will first off have to get the Milkshape 3D program by Mete Ciragan. This can be found at the following web site: http://www.swissquake.ch/chumbalum-soft/index.html Another program that we will be using for the extraction of Valves and other add on packs and Modifications models is called Qped. You can find this at: http://www.planetquake.com/qped/. Also, you will need a paint program to make the "skin" of your model. There are several out there that you can use. Some use Photoshop as a basis for their creation of a "skin." These tutorials will be using the popular Paint Shop Pro for it creation of a "skin." You can find an evaluation of this program at: http://www.jasc.com/. Another program that will be useful in your creation of models is the Half-Life Model Viewer that can be found at: http://www.swissquake.ch/chumbalum-soft/hlmv/

Although it is not required it is sometime done among modelers to hand sketch the model, (some even go as far as fully illustrating the model on paper first), then scan this into the computer for a background to create the model by.
Below you will see and example of what I did for a mod for a health rune, that was to be as detailed as most player models. I sketched out my idea and then scanned it into my comp and used it for a background to create her.

Figure 1.1 Screen shot of completed model in Milkshape 3D

In this first tutorial, we will be learning how to flesh out a low polygon world model. I feel this is a good basis to eventually come to a point to be able to do character animation. You must be able to learn the basics before being able to create fantastic warrior models that you see in 3d games like HL. A world model does not do much, and its associated compiling is relatively simple using its qc file. A qc file stand for Quake Compile, and in this file, all the necessary information is kept to instruct the compiler on how to create the model for use in a game. We will be discussing this after we get our model ready for compilation!

You can download the completed file to view how this knife was made at: http://www.drawcad.com/upload/knife2.zip You will need Milkshape Version 1.4.0 to open the Ms3d file that is contained in the zip, even though some of the figures show a lower version of Milkshape. (Hey I am to lazy to retake some screen shots in the newer version!) If you are reading this and a new Milkshape comes out since the writing of this tutorial there is a menu selection to convert an old msd3 file.

To do this click on Tools->Convert Old MS3D File Format.


Half-Life Tutorials

Making a World model for Half-Life - by Rat

You will be able to save a lot of time if in advance, if you research and perhaps sketch out what you are trying to accomplish for a model. If you are working with a team, you will need to write down all that is expected of the model. It can be frustrating if you get the usual, "I don't care, just make a <insert model here>!

If you are not going to be the artist of the model you will need to get with him on the creation of what you think the shadow outlines, (the flat or 2d edges of the model), are going to look like. Once you think that you have what is what the team wants you will have to submit it to them so they can decide if that is what is meant by the description they have given you.

Lets say the team has decided on having a knife for use ingame. And they told you that it should not be real elaborate, so as to keep the lag in game play down. This would require that you have a model that would be a low poly count. Well with that said and done, you or your 2d artist set out to come up with something. You need to decide:

  • will it have a hand shield?
  • how elaborate is the blades design going to be, (curves, saw blade edge, holes, etc.)?
  • how elaborate is the handle going to look, (do you really want that brass screw)?

Once you have decided, you may want to do some research to see what is already in some games, so as to original. Then you might want to look in some magazines or on the web for something that you have in mind. If you find a photo of one out there, then you have already won half the battle of design!

The photo below was the one pick to best suit our model design of the knife. We will be using it to make our model by using it in the background.

Figure 1.3 Proposed photo of knife

Below is what our finished model will look like once it is completed.

Figure 1.4 Finished model of knife

Fleshing the model out

At this point you will be starting Milkshape 3d up and setting the background image to one of the windows with its view set to left, as the above picture has its view set. In the "Left" viewport, right click and click on the Choose Background Image... on the menu selection. In the "Open" dialog box, navigate to the directory that you have set up to receive all the files to make your model by clicking on the drop down list button on the "Look in:" section. I made mine in a "C:\WINDOWS\Desktop\models\knife2" as you can see from the directory structure of my QC file.(See Figure 1.5a). You now should see the background image in the "Left" viewport, as Figure 1.6 has it in its viewport. Once you set the background image, you will be able to start creating the knife. If you wish to turn off the background image, just repeat the steps outlined above, but click the "Cancel" button on the "Open" dialog box, and it will disappear.

mt-fig5a.gif (15797 bytes)

Figure 1.5a Setting up a Background picture


Half-Life Tutorials

Making a World model for Half-Life - by Rat

You are going to set vertices along all the distinct paths of the knife in the order of perceived depth. I start with the least or what would be paper thin, and work my way to a 3d plane that would be coming towards me. If you look at the knife, you should be able to tell by it, and this would represent the real worlds view of a knife, its cutting edge would be paper thin. This is where I would start my vertex path. Click on the button that says "Vertex."

Figure 1.5 Vertex tool selection

Now using the tool, click and set vertices along the knifes edge.

Figure 1.6 Vertex creation path

We will now be making a new path that will will have to be pulled a bit towards you, as the knife does get thicker at its back edge.

Figure 1.7 2nd Vertex creation path

You will have to click on the "Selection" tool and also click on the "Vertex" button below to select only vertices.

Figure 1.8 Selection tool set to Vertex selection

Now you will select only the 3 vertices that we just have created as in Figure 1.7 shows. Go to the "Front" or "Back" viewport so that you can move these vertices out a bit. You will have to keep in mind which direction you will be looking at the polygon faces. So if you were creating your model from the left view as I have you would probably want to use the "Front" viewport and pull the vertices to the right with only x axis free to move. You can lock down axis movement by clicking on the any of the "X", "Y", or "Z" buttons when you have the "Move" tool selected.

So this is the next step: click on the "Move" tool button and lock down the "Y," and "Z" axis. (See Figure 1.9).

Figure 1.9 Move tool with Y and Z locked

Once you have these locked, go to the "Front" viewport and pull the vertices to the left. Move the 3 vertices that we just have created as in Figure 1.7 to the left a bit until you have something that looks like in Figure 1.10.

mt-fig10.gif (6088 bytes)

Figure 1.10 Moving the vertices in the Front viewport


Half-Life Tutorials

Making a World model for Half-Life - by Rat

Now you are about to create the faces of the knife edge. A face is a 3 sided polygon, which takes 3 vertices to make up. Traditionally a face is only one sided, meaning if you look at it from its backside, you will not be able to see it on the video screen. Now you know why some models seem to have parts missing! They really are there but you are looking at their back faces.

Click on the "Face" button. Go to the "Left" viewport. In order to create a face properly so that you can see it when you are looking at it from this view, you will click on 3 vertices in a counter-clockwise motion. (See Figure 1.12).

mt-fig11.gif (4789 bytes)

Figure 1.11 Selecting the Face tool

mt-fig12.gif (15336 bytes)

Figure 1.12 Creating the 1st "Face"

Continue to create the faces in this fashion. You should pay attention to the way you are creating them as well for a 3 sided face may look a little strange if you do not put some thought in the arrangement. For example if you are to come to an corner of a box and you chose a vertex for the third face that was not on the plane as the top edge where the other two were chosen, it would look as though someone smashed in your square box or dented it! If you look at Figure 1.13 you will see an example of this. The author of the box should have selected vertices that should not be used and used the"Edit->Hide" Selection command on the menu selections.

Figure 1.13 Bad "Face" creation of a square box

At this point you need to save and name your file, which will be a reference file, as we are not going to create animations yet. You will name it: "knife2(ref).ms3d." Just select the "File->Save" on the menu selections.

Once you have created all the faces necessary to get the knife blades sharp edge we will proceed with a 3rd path of vertices that will be parallel to the 2nd path that we created. (See Figure1.14).

Figure 1.14 3rd Vertex creation path

You will have to select the 3 vertices that form this 3rd path as we have done before. Move them as before to the left to match up with the 2nd paths x-position.

mt-fig15.gif (8567 bytes)

Figure 1.15 3rd Vertex path alignment to 2nd Vertex path


Half-Life Tutorials

Making a World model for Half-Life - by Rat

Our next step will be to create the necessary "Faces" to the knifes left edge. Figure 1.15 shows all the faces completed.

Figure 1.16 Completed faces for the 3rd path

Are you ready for the 4th vertices path yet? This path will follow the left most edge of the knife blade and will not quite be pulled out as far as the 2nd and 3rd paths, but will go a bit further out than the knifes cutting edge. (See Figure 1.17). My guess would be a halfway point between the cutting edge and the thickest part of the blade.

mt-fig17.gif (31073 bytes)

Figure 1.17 Completed 4th path and alignment

Again create the faces necessary. Once you have done this you are ready to create the part that has the name stamped in metal. These vertices should line up with the thickest part of the knifes blade.

Now you should be proud of yourself! you have almost one half of the knife blade done. It will be a simple matter to make the right side of the blade by duplicating it and mirroring this to the Left<->Right. But before we do this to make our task even easier, we will now texture this side of the blade so that when we make the duplicate and mirror it, we will not have to tediously texture map the duplicate.

First you will have to change to the "Material" rollout by clicking on the "Material" tab as shown in figure 1.18. Next you will click on the "New" button as shown on figure 1.19.

Figure 1.18 Changing to the Materials rollout

Figure 1.19 Creating a "New" material


Half-Life Tutorials

Making a World model for Half-Life - by Rat

Now you will rename the material to something that will fit what we are trying to model.Double click in the text box area that presently says "Material01" and type in what will make more sense: "Knife2.bmp". (See figure 1.20). This will be the material that we will be getting next.

mt-fig20.gif (7188 bytes)

Figure 1.20 Renaming the material

We will have to find where our bmp of the knife2 is. You should put them in the directory where the model is being built or in a subdirectory of the models directory that you have chosen to use. Another thing you will have to keep in mind if you are going to make the skin yourself, is that HL models have to be a 256, 8 bit indexed color bmp format, and it has to be a power of 16. So the smallest bmp you can have would be a 16x16 bmp file. The largest file would be a 256x256 bmp for the reasons that most video cards work in powers of 2 up to 256x256 memory blocks. This was inherited by the Quake engine that Half Life licensed and highly modified for the game play.

To get the material, I have put it in the same directory as the Ms3d file that I am working with. Oh! did I save it as often as you can because of freaking things that happen when your working on a computer, such as Fido coming along and chomping on your power cord to the computer and dying, then you have to take time to bury him and then you lost the blankity blank file! Make backups as well, especially when you are getting ready to make a major change to your work, so you will have something to go back to, in case of a mess!

Nuff said about that. click the first "None" button in the Material section of the "Material" rollout. (See figure 1.21).

mt-fig21.gif (18996 bytes)

Figure 1.21 Importing the material

Select the knife2.bmp file and it will put it into the knife2.bmp material. If you want to have some fun, click and hold the mouse button on the Material sphere and drag it around to see it as it would be applied to a sphere!

We are now going to apply this material to the knife blade that we have just made, or rather one side of it. You will have to switch back to the "Model" rollout, and click on the "Select" button and click on the "Face" button in the "Select Options" portion of the rollout. Drag your mouse across all the faces to select them all, or you can use the "Edit->Select All" on the menu selections.

Now we need to make a group of the selected faces so that it will be easier to select when we start to make other portions of the knife. We do this so we can hide portions of a model so that we can best work with a area of a model such as in the case of "Skinning" a model or texture mapping the faces in a group. Click on the "Groups" tab of the rollouts and click the "Regroup" Button to create or regroup all the selected faces. (See figure 1.22). You will notice in Figure 1.22 that we have the "Auto Smooth" option checked, as it should be. Smoothing a Group will make the rough edges of the poly "faces" appear to blend instead of being razor sharp. Something a character model does not need or most weapons, e.g. a gun barrel or a persons face. You will be renaming this new group to "Blade-Left" the same way that you renamed the material in the "Material" rollout section.

mt-fig22.gif (6947 bytes)

Figure 1.22 Regrouping and Renaming the Group

To do this you will now have to switch back to the "Material" rollout. Next make sure that the "Knife2.bmp" is highlighted in the material list box and click on the "Assign" button as show in Figure 1.23.

mt-fig23.gif (7091 bytes)

Figure 1.23 Assigning a Material to the Group


Half-Life Tutorials

Making a World model for Half-Life - by Rat

Again you will have to switch back to the "Groups" rollout to see if this did indeed assign the material, due to many unexplainable reasons, sometimes the first click doesn't do it. Don't ask me the reasons for this, it just happens that way sometimes.

At this time we will have to do some bit twiddling of the texture coordinates so that the material that we have chosen to assign to this side of the blade is going to align to the faces of our left side of the knife blade.

To do this click on "Window->Texture Coordinate Editor" on the menu selections. Here you will have to chose the group that is presently selected. Next you will click the "Region" button on the dialog box and click and drag a box around only the blade portion as shown in Figure 1.24. Also you will now turn on your "Textured" option in the "3D" viewport by right clicking in it and clicking on the menu option "Textured" also shown in Figure 1.24.

mt-fig24.gif (48849 bytes)

Figure 1.24 Adjusting the Material to the Group and setting 3D viewport to Textured

Now it is starting to look like a knife! We will now make a duplicate of this and mirror this duplicate. To do this you must still have all the faces of the "Blade-Left" group selected. If you do not you can switch to the "Groups" rollout and highlight the "Blade-Left" group and click the "Select" button. You will need to switch to the "Model" rollout. Here we will chose the "Edit->Duplicate Selection" on the menu selections to make a copy of the group. After this is done we will chose the "Vertex->Mirror Left<->Right" on the menu selections. it should perfectly align with the "Blade-Left" group. You should rename this new group by switching to the "Groups" rollout and renaming it to "Blade-Right" to avoid future confusion.

Now this duplicate does not have a material assigned to it. First to see a bit of texture magic, spin the view of the knife blades around in the "3D" viewport, by click and holding you mouse button down and dragging it to the left or to the right in the view port window. Spin it until you can see the backside that has no material. Now click on the Material" rollout and click the assign button. Now you duplicate will assume the texture material and place it perfectly as you have on the "Blade-Left" group. Now takes some bows for your magic act!

The next thing we need to do is weld the halves together, that's right! Get out your blow torch and lets weld this puppy! You do this by selecting the vertices that appear in this case to be already joined on the knifes cutting edge. Look at figure 1.25 to see all off the ones that are selected that need to be welded. We will have to do this one by one to insure that they will be done right.

mt-fig25.gif (15427 bytes)

Figure 1.25 The 4 vertices to be welded

Now switch to the "Model" rollout if you haven't already done so and select one of the four to be welded with the "Select" tool set to the "Vertex" mode. Next, click on the "Vertex->Snap Together" menu selection. Now comes the welding part we were discussing. Fire up that Acetylene Torch and, lets do this! Click on the Vertex->Weld Together" menu selection. If you watch in the "3D" viewport, you may see it go into action, depending on how your looking at it. You might see the faces look like they are fitting together better and change their looks a bit.

At this point we will have to fill the gaps on the back side of the blade. We will first be selecting all the vertices that might get in the way of our creating faces as mentioned earlier about the dented box syndrome. Deselect any vertices that may still be selected from the previous operation, by clicking in a blank area in the "Left" viewport. Next, you will be selecting all of the vertices except the ones on the left outer most edges in the "Left" viewport as Figure 1.26 shows.

mt-fig26.gif (10585 bytes)

Figure 1.26 Selected vertices to be hidden


Half-Life Tutorials

Making a World model for Half-Life - by Rat

In order for us not to be able to accidentally chose a wrong vertex in our face creation, we will hide these selected vertices by clicking on "Edit->Hide Selection" on the menu selections.

Its time we sew up this back side of the knife blade by selecting the "Face" tool once again. We will be working in the "Back" viewport for this operation. Remember to use a counter-clockwise motion to make the faces to be appearing to face us and not turned inside out, so it would appear as if they are missing if we were to view it on the backside.

The vertices at the bottom may be a little tricky to complete as there are 4 of them close enough together that might cause some problems. You might avoid some of this by zooming in closer to see them. This is done by clicking on the "Selection" button to turn off the selection tool and first holding down the "Ctrl" key on your keyboard and dragging in the "Back" viewport to center the area to zoom in on. Then you will hold down the "Shift" key and drag in the "Back" viewport to zoom in. As you can see this is good for fine tuning those hard to get at vertices!

Now we will finish the back portion by clicking on the "Face" button to turn on the tool, then carefully creating the two final faces that sew the bottom of the blade to the left and right sides. (See the faces at the bottom of Figure 1.27).

The Texture mapping is going to be usually way off as new faces are added to the existing groups. The new faces will add themselves to an existing group, usually to the groups vertex that you first click on. We will have to select all of the faces we wish to put into a new group which we will name "Blade-back" group. (See Figure 1.27). Switch to the "Select" tool and turn on the "Faces" option. We will also be using the "Ignore Backfaces" option by clicking in the check box. It should have a check mark to indicate that it will not select backfaces to make our selection of these faces easier. Move to the "Front" viewport so that we can select the faces that we just have created. Now this is a bit odd that we should have to move to the "Front" viewport, when the faces we want to select are on the back with their faces towards us. Don't ask, I don't know why it was programmed this way.

mt-fig27.gif (9402 bytes)

Figure 1.27 Selected Faces to be regrouped

Switch to the "Groups" rollout and click the "Regroup" button. Rename this group to "Blade-back" group.

This group will have to have its texture aligned to it. The "Back" viewport is where we will be working to align the texture. If your "Texture Coordinate Editor" dialog box is still hanging around, perhaps you have minimized it, get it to show up so you can work with it. There is a drop down list box that contains all the names of the groups in it, click on the down arrow and select the "Blade-back" group. Chose the "Back" from the viewport drop down list, as we want it to apply the texture in the back 2d dimension. If you select the wrong 2d view of applying a texture, it may stretch the texture in a manner that will look deformed or like someone took a spray paint can and just streaked the paint on the sides. We want or model to appear as if looks real from all sides. This is the toughest part of what is called "Skinning" a model.

Click the "Region" button, and click and drag your mouse over the back area of the blade where it is dark. (See Figure 1.28).

mt-fig28.gif (34090 bytes)

Figure 1.28 Remapping the back side of the blade

Our job is not quite yet complete to move on to the handle as we need to finish our sewing work. We will have to unhide all the vertices that we have hidden from a a previous operation. Click "Edit->Unhide All" in the menu selections. Again, click on the "Selection" tool button in the "Model" rollout, and make sure it is set to "Vertex." We will also have to uncheck the "Ignore Backfaces" check box in the "Selection Options" portion. If you look at Figure 1.29, it will show you which ones need to be selected and hidden.Click on "Edit->Hide Selection" on the menu selections.

mt-fig29.gif (10451 bytes)

Figure 1.29 More Selected vertices to be hidden

We need to start working in the "Left" viewport to get at some of the vertices on this backside. The tiny areas will have to be zoomed in on to see how to make the faces. (See Figure 1.30). Again, click on the "Face" button and start to sew up this area.

mt-fig30.gif (9658 bytes)

Figure 1.30 Zoomed in area to create face


Half-Life Tutorials

Making a World model for Half-Life - by Rat

If you use the drop down list on the viewport interface, you can select the "Right" viewport. Do the same as before in creating this face. We need to hide the 2 vertices that will interfere with our face creation in the "Back" viewport by switching to the "Select" tool and have the "Vertex" turned on in the "Selection Options." In the "Right" viewport select the vertices as shown in Figure 1.31. Again, click on "Edit->Hide Selection" on the menu selections.

mt-fig31.gif (8453 bytes)

Figure 1.31 Selecting the vertices to be hidden

Switch to the "Back" viewport and sew this up to complete the back blade portion of the knife. You will need to chose the "Face" tool once again. Now it should be easy to create these 2 remaining faces of the back of the blade as Figure 1.32 illustrates.

mt-fig32.gif (10376 bytes)

Figure 1.32 Creating the back face to finish the back blade portion

At this point you may notice that your top portion of the blade overlaps that of the lower portion. We can correct this by clicking the"Edit->Unhide All" in the menu selections first. Next, you will switch to the "Select" tool and have the "Vertex" turned on in the "Selection Options," and using the "Right" viewport, you will select the vertices pictured in Figure 1.33. Then you will click on the "Move" tool button and lock down the "X, and "Y" axis. (Refer to Figure 1.9 for an example of locking the axis). Move the vertices to the left to align with the rest of the vertices that appear to be in a straight vertical line.

mt-fig33.gif (11622 bytes)

Figure 1.33 Moving the back vertices to align with the top portion

Now you may want to fix the texture coordinates. To do this refer to Figures 1.27 and 1.28. The only difference here will be the viewport you will be looking at to apply the texture.Remember to reassign these new faces to a group and you should have at least 2 groups. You can leave the "Ignore Backfaces" check box uncheck and select both the right and left faces of the two faces that we created as Figure 1.30 show the faces to be selected. You should "Regroup" these and rename them to something that makes sense such as: "Blade-Union-LR" and "Blade-Union-Back." Pick the "Blade-Union-LR" first. Then you will choose the "Left" viewport in the "Texture Coordinate Editor" and do a "Region" box in such as illustrated in Figure 1.34. Why did I do this? First we have no long area that has dark metal on it, so we are going to pretend that we do and then "Rotate" and "Move" it to fit in the dark metal area to the right. The procedure will be the same for the Blade-Union-Back" group, except you will be using the "Top" viewport in the "Texture Coordinate Editor."

mt-fig34.gif (28104 bytes)

Figure 1.34 Drawing a simulated region area to map the texture to the faces

Click the "Remap" button. Next, Click the "Rotate" button, and rotate the faces to be in a vertical fashion, rather than a horizontal fashion. Click and drag in the window. It will take some practice to achieve the direction that you want to rotate it in. As you are doing this you may see some distortion that will have to be corrected by the "Scale" feature of the "Texture Coordinate Editor." Click on this button and click and drag in the window. Like the rotate feature it will take some practice to achieve the directions to move in to scale it properly. Finally, click the "Move" button and move it to the dark metal are of the blade.


Half-Life Tutorials

Making a World model for Half-Life - by Rat

The knife blade is still not complete as we have to move to the front to sew it up. You might have noticed, that in the textured view of our 3D Window, that the cutting edge of the knife blade looks like it has a black part that would indicate that we are looking at from the backside. This looks the case on both sides of the knifes cutting edge on the lower portion. What happened here? When we created this section, we did not drag it out slightly to simulate the smooth tapering of a real knife. We will now fix this. (Good thing we didn't weld that spot! Or did you?) We will be closing the "Texture Coordinate Editor" at this point as it just is getting in the way. This time we need to check the "Ignore Backfaces" option by clicking in the check box. This will allow us to only select on vertex at a time that are align to each other. Select the vetex as pictured in Figure 1.35.

mt-fig35.gif (18647 bytes)

Figure 1.35 Single vertex selection to be moved

Now switching to the "Move" tool, you will lock down the "X, and "Y" axis. (Refer to Figure 1.9 for an example of locking the axis). Now in the "Front" viewport move this vertex to the left a bit. Switch the tool to "Select" again and in the "Left" viewport click in a blank area to unselect the last vertex and then select the opposite side of the same area vertex. Chose the "Move" tool once again and in the "Front" viewport move the vertex to the right. Look at Figure 1.36 to see the final positions of these 2 vertices.

mt-fig36.gif (10164 bytes)

Figure 1.36 Final position of the 2 vertices

Its time to hide the unwanted vertices again.They are shown in Figure 1.37. I will leave it up to hide them as you should now be used to this feature.

mt-fig37.gif (10948 bytes)

Figure 1.37 Selection of vertices to be hidden

I am going to let you have at the final sewing up of the front part of the blade. Other than it being tricky in some areas, it should be about the same steps involved as we did before. If you have forgotten, refer to Figures 1.30 - 1.34 and the accompanying text.

Very good! You have suffered through the tough part. Now it should be all down hill! You should have something that looks like in Figure 1.38 by now.

mt-fig38.gif (17193 bytes)

Figure 1.38 Completed knife blade

Now comes the time that we will make the handle portion of the knife. We will be creating what is called a primitive for the joining of the blade to the handle of the knife. First click the "Box" tool on the "Model" rollout. Check the "Redraw all Viewports" check box in the tools options to make all viewports to show the creation of the box to get a feel for the size needed as you creating it.(See figure 1.39).

mt-fig39.gif (4608 bytes)

Figure 1.39 Box tool selected with Redraw All Viewports option on

In the "Left" viewport, try to drag a box out in it like Figure 1.40 illustrates. This illustration shows all 4 viewports as it should appear you have finished with the creation of the box.

mt-fig40.gif (61343 bytes)

Figure 1.40 Box creation in all viewports

It should extend outwards a bit to the right and the left as the "Front" viewport shows. If its necessary, use the "Scale" tool and lock down the "Y," and "Z" axis and drag to the left or right to adjust it as necessary. (Refer to Figure 1.9 and the accompanying text).


Half-Life Tutorials

Making a World model for Half-Life - by Rat

We will be deleting the bottom of this "box" so that we can continue the handle and not have extra faces in out knife. Select the "Bottom" viewport selection in a viewport from its viewport selections drop down list. You might have to right click in this viewport window and select "Reset View" from the menu selection to get the wireframe to show up in this view, and also zoom in a bit. In the the "Left" viewport you will be using the "Select" tool set to the "Face" option and selecting all but the "box" that you just created. Hide these faces. Next, turn on the "Ignore Backfaces" option by clicking in the check box. Click in a blank area to unselect all faces or vertices. Click inside of the box in the "Bottom" viewport of the "box" so that only two of the bottom "faces" are selected. Press the "Delete" button on your keyboard, and those unwanted faces disappear magically!

In order to help us to create the handle portion better, we are going to make the viewport bigger. Right click in the "Left" viewport window and click on the "Maximize" menu selection as shown in Figure 1.41. Your viewport will resize to full screen to you client window of Milkshape3D. This works as a toggle, which means that in order to see all your viewports again, you just do the same step as before.

mt-fig41.gif (23842 bytes)

Figure 1.41 Selecting the Maximize viewport selection

Zoom the viewport window in until you can see the extremities of the knife handle for better creation of the vertices. The creation process will be exactly the same as when we first made one side of the knife blade, only this time it will be totally flat. I told you it would be easier now! You may want to review the procedures in for the creation of the faces. I am going to get you started by telling you that you will create the outline of vertices. I will also give you a tip: 4 of the vertices on each side of the knife handle have also been created for us from the box that we created earlier. So you will have to align the vertices that you have created to complete the outline to the left side of the "box" in the "Front" viewport. Figure 1.42 illustrates what you should have when done. Again review the steps from the knife blades creation to accomplish this step.

mt-fig42.gif (15787 bytes)

Figure 1.42 Completed faces of knife handle

The next step is to Texture this side. Your on your own here as well as you can review the steps that was involved in the the texturing of the knife blade. You will also have to remember to make a new "group" of faces in the "Group" rollout. Figure 1.43 illustrates what it will look like when you have completed this operation.

mt-fig43.gif (20751 bytes)

Figure 1.43 Textured "Group"

Wow! Looking good! Do you remember the trick of duplicating one side and mirroring it to the other side. Also remember to weld the puppy to the other side and texture it in the same way we did the left and right blade mirror. You will then sew it up just like we did on the knife blade. Please review these steps if necessary to refresh your memory. I would like to explain that you will have to delete two faces on the other side of the knife handle that formed part of the "box," as they will get in the way of our duplication. Please refer to Figure 1.44 to see the selected faces to be deleted. Make sure you have the "Right" viewport available to work in to do this and have the

mt-fig44.gif (16070 bytes)

Figure 1.44 Selected faces for deletion

The last thing that should be done is to fix the textures of you handle. You might not realize this, but the top portion of the "box" that you created earlier, has no texture assigned to it and the new groups that you have created will need texture added to them. First select the "box" top, and fake a texture for it by making a region in the "Top" view of the "Texture Coordinate Editor" like we did before. It should have a metal look. The knife handle's "Front" and "Back" texture groups can be faked as well. (Some of the more particular texture artist may take extra time to "paint" the sides of the weapon, but we are just going to fake because we can!) When your finished with the creation of the handle and textured it, unhide everything by clicking the"Edit->Unhide All" in the menu selections.


Half-Life Tutorials

Making a World model for Half-Life - by Rat

Good work! Maybe some big game company is start to take notice of our work! I can see the paychecks now! *Ahem* ..., well seriously folks, take a look at Figure 1.45 to see what we should have at this point.

mt-fig45.gif (14011 bytes)

Figure 1.45 Completed handle with knife blade unhidden

The final thing we need to do is to make it so that we can view it ingame as a world model. But we will first have to check its size and position to be correct for ingame use. Chances are that it will be of monstrous dimensions. The first world model of a Pipe bomb I made was big as a house, and the team laughed so hard when we went into a DM MP game with it in the map that it took weeks of therapy to calm us down! One of the comments about it is shown in Figure 1.46

mt-fig46.jpg (35042 bytes)

Figure 1.46 Disaster strikes in the hearts of Swarm players!

Before we compare the what size we need, first we have to save our file. For us to compare its size to a human or another weapon is that you should open up a v_weapon.mdl file and make a box to fit around the weapon. Then you should delete all the groups and the joints or bones in it so that just your box remains. (See Figures 1.47 and 1.48).

mt-fig47.gif (8435 bytes)

Figure 1.47 Exporting the op4 v_knife.mdl

mt-fig48.gif (27377 bytes)

Figure 1.48 Creating a box to use as a guide

We will next delete all the joints by going to the "Joint" rollout and selecting the first bone in the list as shown in figure 1.49, then deleting it by using the "Delete" key on the keyboard.

mt-fig49.gif (31631 bytes)

Figure 1.49 Selecting the main joint of the biped for deletion

You will next switch to the "Groups" rollout and select and delete one by one all the "groups," except of course the "box" group that you just created. Next go to the "Materials" rollout and delete all the materials, as we do not want any unwanted references to materials that are not used in our knife file. Then you will save this in the directory that you created your knife. You should name it something like "Box-Scale.ms3d," so as to remind you what this file is.

At this point you will open the "knife2(ref).ms3d." You need to merge the box into this file now. Select "File->Merge..." on the menu selections, and choose the "Box-Scale.ms3d" file. You may find it hard to find this new item, if you do not first zoom out in all viewports before the merge. You might want to rotate this box so that it will be easier to scale the knife to about the same size. In Figure 1.50 you can see that my knife creation was a bit to large, and will need to be scaled down. Refer back to the reference on how to scale and do this now. Here is a tip to help: set the scales of the "X," "Y," and "Z" axis to .9 in the scale text boxes and keep clicking the "Scale" button in the "Scale Options" section until the desired size is achieved.

mt-fig50.gif (15598 bytes)

Figure 1.50 Checking the scale of the knife model to a know size


Half-Life Tutorials

Making a World model for Half-Life - by Rat

The box can be deleted from the "Groups" rollout, as it has served its purpose. Save your file at this point. Another thing to note is that you will have to move it to match the axis bottom as this is the point that model use for his feet placement. Look at our favorite character in HL Barney and notice his position in the "Front" and the "3D" viewports in Figure 1.51 for an example of this.

mt-fig51.gif (38813 bytes)

Figure 1.51 Example of proper placement of a model

You will now need to rotate this knife so that your looking at in the "Front" viewport laying on its side with the knife edge facing you. This is how it will be viewed in the HL world. Look at Figure 1.52 for the final position of the knife.

mt-fig52.gif (20640 bytes)

Figure 1.52 Final position of the knife

Lets look at this beauty one more time. You will notice in Figure 1.52 that I have adjust the width of the knife to make it look a bit more realistic, by moving vetices in nudges. I set the "Move" tools "X" axis to ".03" in the move axis text box and clicked on the "Move" button in the "Move Options."

You may have noticed some of the faces not showing up at this point. You should right click on the "3D" viewport and uncheck the Draw Backfaces option of the viewport window. This is a toggle, so you can turn it on and off by right clicking and choosing it again. Spin the model around and look carefully to see if any "faces" have their faces flipped. If this is the case you will have to select on the faces that appear as they are not showing, or have their "faces" flipped. To correct this you must select "Face->Reverse Vertex Order" in the menu selections.

To get it compiled as a HL world model we will have to add a joint for our knife.Click on the "Joints" tab rollout and check the "Show Skeleton" check box so there is a check mark in it to show the joint that we will create. Click on the "Model" tab rollout to switch back to create the actual "joint."

mt-fig53.gif (22192 bytes)

Figure 1.53 Creating a joint for the knife

The final thing we need to do to our model, is to assign all the vertices to this "joint" that we just have created. If you have lots of joints, you would first go to the "Joints" rollout and select the proper joint that you want to assign vertices to. In this case our "joint" is presently selected and we want to assign all the vertices to this "joint." Select "Edit->Select All" on the menu selections.

Switch to the "Joints" rollout and click on the "Assign" button to assign all vertices to this joint as Figure 1.54 depicts.

mt-fig54.gif (4530 bytes)

Figure 1.54 Assigning a joint to the vertices

Our model is now ready to be exported to be used in the compilation of a Half-Life world model. Select "File->Export->Half-Life SMD..." and in the "Save As" dialog box "File name" text box, type "knife2(ref)" for our smd file. Click the "Save" button. You will have a new dialog box appear with 2 choices, "Reference," and "Sequence." We will choose "Reference" as we do not have any animations that require the saving of "Sequence" frames. We can reuse this "Reference" smd file to fake an "Sequence" or animation frame. This is quite acceptable in a world model. We will discuss animation creation in a later tutorial. Look at Figure 1.55 to see an example of choosing a "Reference" smd file.

mt-fig55.gif (15182 bytes)

Figure 1.55 Saving a Reference smd file

Sometimes errors will occur at this stage, as you may not have all the "vertices" assigned to a "joint." this is easily corrected in our world model case as all the "vertices" will only be assigned to one "joint." You might think that you have assigned all the "vertices" to the "joint," but in reality you may have not have had them all selected in the step where we choose all in the window. You may have inadvertently have had some "faces" or "vertices" hidden from view when you used the "Edit->Select All" operation. To fix this you would click the"Edit->Unhide All" in the menu selections. Then you would use the "Joints" rollout and click on the only "joint" in the list and then use the "Edit->Select All" on the menu selections. Finally, you once again click on the "Assign" button to assign all vertices to this joint as Figure 1.54 gives an example of doing this.


Half-Life Tutorials

Making a World model for Half-Life - by Rat

If you have made it this far, your are doing great! The final thing to get this model into a Half-Life, will be to create a QC file. Milkshape 3D has made the job easier for us. Select "Tools->Half-Life->Generate QC file..." and type in the "File name:" text box "w_knife2" for a file name. What will result in this will not be perfect, so we will have to open it for editing. Select "Tools->Half-Life->Edit QC file..." and select the "w_knife2.qc" file. You will see the text as shown in Figure 1.56 in "Notepad" window. You should alter it to like like the text in Figure 1.57.

mt-fig56.gif (12778 bytes)

Figure 1.56 Generated QC file

mt-fig2.gif (13573 bytes)

Figure 1.57 Corrected QC file

Some of the differences may not be obvious. One of the most important things to change is the $scale command to read: "$scale 1.3" as world models should appear larger as they will not be held close to the screen like the perspective view of the first persons models. You probably also want to correct the models name. You can call it whatever you like, but it is best to keep the naming convention the same as the rest of the Half-Life models. That is to say put a "w_" in front of the model name. It makes it easier for the coders to figure out what is going on, especially since usually you need 3 models to represent one weapon. You will need a "v_" and a "p_" and a "w_" model for each weapon that you design. Some thought should go into this. A lot of times modelers will strip down a "v_" model to make it into a "w_" model as you will not usually be looking at this model as closely as the "v_" model. The "v_" suffix implies that it will be a "view" model or seen up close in you hands as a player. The "p_" models are usually stripped down versions of the "v_" model as well as these are seen in the 3rd person models or what you see another player hanging onto in battle.

Well lets rap up this model and get it compiled! Select "Tools->Half-Life->Compile QC file..." to start the magic show! If all goes well, (you didn't have doubts did you?), you will have you world model called "w_knife2.mdl" in your directory. To view it you should use "Half-Life Model Viewer" to look at your handy work.

Hopefully this tutorial has been helpful to you in the creation of world model and I will get enough response to continue the series of tutorials. If all goes well we will be taking the model that we just made into a "p_" model next, then move on to a "v_" model, which will require animation. Then I hope to help you make a character model.

All material in this tutorial is copyrighted © 2000 by Rick J. Kelley and is not to be copied without the express permission of Rick J. Kelley. Half-Life® is Registered Trademark by Valve. Opposing Force® is a Registered Trademark of GearBox Software. Use of the pseudo name Rat is a referral to the author Rick J. Kelley.


Half-Life Tutorials

Making a 3rd Person Model for Half-Life - by Rat

A lot of you that have dropped in on the some of the chat channels I frequent to say thanks. I am proud to see such budding artist in the 3D realm and the prais is much appreciated! As mentioned on the last page of "Making a World Model for Half-Life" we will be taking the model that we just made into a "p_" model. And if all goes well with the series, we will move on to a "v_" model, which will require animation. Then I hope to help you make a character model. download of this entire Tutorial in HTML is available at: http://www.drawcad.com/upload/HL-P-model-Tutorial.zip

Note: You will need to have Internet Explorer version 4.0 or higher to view this on your computer as it was written in the Microsoft CHM help file format.

What is needed to complete your model

As mentioned in the "Making a World Model for Half-Life" tutorial, you will need to get a copy of the Milkshape 3D program by Mete Ciragan. This can be found at the following web site: http://www.swissquake.ch/chumbalum-soft/index.html

Another program that we will be using for the extraction of Valves and other add on packs and Modifications models is called Qped. You can find this at:

http://www.planetquake.com/qped/

Another program that will be useful in your creation of models is the Half-Life Model Viewer that can be found at:

http://www.swissquake.ch/chumbalum-soft/hlmv/

The p_ model and what it is

These models are what you see in the 3rd person, as what you see another player hanging onto in battle, e.g. a glock, etc. This is a required model to be able to view your model if someone else happens to be using it to get you with it.There is no animations that are involved in it. In actuality it should be easier than a world model, because on rare occasions you see a world model that has some animations. For example, take a look at the "w_squeaknest" model in "HLMViewer.exe." You will see it has 2 animations, one that never is used in HL, called "walk." The hard part about the "p_" model is that you have to have the supporting biped's bones added to it, or at least a portion of it, for it to look like it is attached to the model that is using it. Look at Figure 1.1 for an example of our "p_knife2.mdl," to see how this weapon will look with a partial Skeleton that has to be used to reference the full "biped," (a biped is the skeleton or all the joints of a model. You have to make some sort of a biped so that the mesh of your model can distort to look like it is alive or in movement). of the model.Where as our World Model, or "v_" model, scale is slightly larger than , 3rd Person, or "p_" model, around 1.3 instead, compared to that of 1.0, you can use the very same model..Now you know why we made the World Model first! A modified version is made for the ViewModel, or "v_" model, in which you can remove the hidden faces to reduce the polygon count. But more on that latter. On with the "p_" model!

mt-fig2-1.gif (37959 bytes)

Figure 1.1 Screen shot of completed 3rd person model in Milkshape 3D

In this tutorial, we will be learning how to get the model so you can view the knife2 model that we made in the first tutorial as a world model, as a 3rd person world model. There is not much going on with it, but you can have some fun with it as I show you a few tricks in how to get it ingame to look at your handy work.

Creating a Skeleton or Biped for your 3rd Person Model

You will need to either create Skeleton, partially that has the same joint, or bone names that the player model has that you wish to see you model attached to. Here is where, if you wish to not create a entire Skeleton, or Biped, from scratch, is to steal from a previously created Skeleton.

Note: If you choose to create a new biped, you will have to animate each and every animation that is required for a DM player in HL. There are presently 77 animations, (some are two of them combined called "blends," that are a combination of 2 animation to make 1 animation. A blending of two separate animations to effectively make it look like you are changing or morphing from one animation to the next, to create an illusion of if you happen to be using the mouse up, or the page up, or else you would be using the mouse down, or page down in aiming, shooting, etc. This brings us to 129 total animations that have to be made for scratch!).

The reason behind doing skeletal animations is that you do not have to make or distort your model's mesh for each frame of action. Quake models used mesh animations, and this took forever to do this kind of thing to hammer out a model. With Skeletal animation, you only need to create the mesh, once. The skeleton is then animated and the mesh is later deformed to fit the skeletons animation on the fly. This is done by code that checks for the particular position of all the bones and making sure that the mesh that is assigned to the proper bones are in place for that particular frame of animation. e.g. if you are walking, the code checks the frame of animation that is current, and places the foot where the skeletons animation currently is. Some deforming has to be done, this is why some animations may not be perfect, and reassignments of joints, or bones are done so the deformation looks realistic. i.e. if you assign on of the fingers on a hand on the left hand to the right hands finger of the same position, it will look as if the finger had stretched to the tip of the bone on the right hand, causing an unwanted distortion! No we do not want to create an unusual creature from the murky depths, but a natural looking humanoid!

Open the "w_knife2.ms3d" file that you created in the last tutorial, or download it from:

http://www.drawcad.com/upload/p_knife2.zip

Note: You will need Milkshape Version 1.4.0 to open the Ms3d file that is contained in the zip.

Of course you will want to be making a new directory for this "p_" model and we will name the directory "p_knife2" so as not to be confused with the "w_knife2.mdl" that we made in the last tutorial. save this file as "p_knife2.ms3d."

Lets get to work on our Skeleton. I am going to be looking at a similar biped that would be used for the creation of the character that we will be eventually be making. This is going to be a secret for now as to how the player model is going to look.

First off you do not have to create the skeleton completely to make a "p_" you only have to make a portion of it. But as mentioned before, these "joints" or bones need to have the bone names exactly the same as the "biped," or skeleton of the full character model that we will eventually create.

I would like to pause here a bit to show you how you can save yourself some time in the creation process of a biped. Milkshape 3D has as mention in the "Making a model for Half-Life" tutorial, has a decompile utility. This means that you can decompile models that have a similar mesh build and taking the biped out of it.

Create a new directory called "op4_knife" to save to when we export the knife for the next step.

You will be looking for the op4 knife in the add on pak0 file of "Opposing Force®" and decompiling it to see how its "p_knife.mdl" looks like and what the bone names are called. So start up Qped and lets extract it. Choose "File->Open..." and find your "pak0.pak" file from the "Opposing Force®" directory. I found mine in this directory structure: "C:\SIERRA\Half-Life\gearbox" yours may vary.

Export the knife to your "op4_knife" directory. See Figure 1.2 for and example of this.

mt-fig2-2.gif (8448 bytes)

Figure 1.2 Exporting the op4 p_knife.mdl


Half-Life Tutorials

Making a 3rd Person Model for Half-Life - by Rat

Close the Qped program as we are done with it. Select "File->New" in Milkshape 3D to clear out the model and joints that may interfere with importing of the op4 knife model. Select "Tools->Half-Life->Decompile Normal HL MDL file..." in the menu selections. Look up the "p_knife.mdl" in the "p_knife" folder on your hard drive.Click "open" to get the dialog box as in Figure 1.3. You want to have all the check boxes checked as in Figure 1.3.

mt-fig2-3.gif (1586 bytes)

Figure 1.3 Decompiling the op4 p_knife.mdl

Open the "p_knife_Reference.smd" by selecting the "File->Import->Half-Life SMD..." and you will want to have all the check boxes checked as in Figure 1.4 in the import dialog box.

mt-fig2-4.gif (1220 bytes)

Figure 1.4 Importing the op4 p_knife.mdl


Half-Life Tutorials

Making a 3rd Person Model for Half-Life - by Rat

Now you should be able to see the skeleton and we will be examining its joints or bones.

Figure 1.6 Selecting the Joint to examine

If you examine all the joints or bones, you should see that this skeleton does not contain the full skeleton of a character model. This should be obvious from that you see only one finger listed on the right hand, while the left hand is missing all together. Our bone for the knife is called "knife" and you should select it as shown in Figure 1.6. You should see the "joint" turn red when it is selected. Also, the rotational axis show up if you zoom in on it. If you were to switch to the "Model" rollout, and select the ""Rotate" tool, you would see the knife rotate and the axis reflect its "X," "Y," and "Z" directions.

One of the most important joint or bone, called "Bip01" is where all joints should connect to, and is the first one that should be created. This is because this bone is where the center of gravity for the mass of the model is, sometimes called "COM" or "Center Of Mass" in modeling. In the 3D Studio Max world this is what this joint is referred to.

We will merge our "p_knife2.msd3" file with what we have already open. Doing this will enable us to get a relative height and position of the knife. This will save a lot of trial and error on our part. As time goes on you will have a library of your own to quickly access and not have to create new skeletons for each and every model. Merge the "p_knife2.msd3" file, by selecting "File->Merge..." from the menu selections, then choose the "p_knife2.msd3" file. If you were to open the copy of the "p_knife2.msd3," and then the op4 "p_knife.mdl" the op4's model skeleton would not show up. Milkshape keeps the old skeleton, assuming that you just want the models mesh and not the skeleton.

Switch to the "Model" rollout, and click on the "Select" in the "Tools" options. Also click on the "Face" in the "Select Options" as shown in Figure 1.7.

Figure 1.7 Selecting all the faces in the p_knife model


Half-Life Tutorials

Making a 3rd Person Model for Half-Life - by Rat

Before moving on, we will be regrouping this model so that it will be easier to work with and not get confused as to what we need to select later. Switch to the "Groups" rollout and click on the "Regroup" button in the "Group" options as shown in Figure 1.8. It doesn't mater what is highlighted in the list as you have isolated all the faces you wish to regroup.

Figure 1.8 Regrouping all the faces in the p_knife model

Rename this group to "p_knife2.mdl" by double clicking in the text box to the left of the "Rename" button, and typing in the new name. Click the "Rename" button. As you can see you can now quickly reselect the entire knife for manipulation.

It now is up to you to position your knife by moving and rotating it to match the position of the op4 knife.

After you have it in place as Figure 1.9 shows, you will be deleting all the groups of the op4 knife and the materials that were used for it. Click in a blank area of a 2d viewport window to deselect your "p_knife2.mdl" group. Click on a group that is part of the op4 groups in the list area and click the "Delete" button. Repeat these steps until all the groups except the "p_knife2.mdl" group remains. (See Figure 1.9).

Figure 1.9 Deleting the unnecessary Groups


Half-Life Tutorials

Making a 3rd Person Model for Half-Life - by Rat

Once in awhile you have to check for stray "vertices," and delete these. They usually show up in the 2d viewport as red dots as shown in Figure 1.10. Just simply press the "Delete" key on your "keyboard," to get rid of these.

Figure 1.10 Stray Vertices from previous Delete

Switch to the "Materials" rollout. Select the material for the op4 knife called "knife_blade.bmp" in the list area. Click the "Delete" button as shown in Figure 1.11.

Figure 1.11 Deleting the unnecessary Materials

If you would like to use the op4 skeleton for viewing your knife as attached to a model. you could do as described in the next paragraph. We will be creating our own skeleton though. I am just going to step you through how to use an existing skeleton so that in the future you will not have to create a new skeleton each time.The first step for making the "p_knife2.mdl" will be exactly the same as we just have done in the paragraphs preceding this, even if you are going to create your own biped.


Half-Life Tutorials

Making a 3rd Person Model for Half-Life - by Rat

Find the "Knife" in the "Joints" list box and click on it.Switch to the "Model" rollout and make sure you have the "Select" button, and the "Vertex" button both on. Switch back to the "Joints" rollout and click on the "Assign" button as shown in Figure 1.12.

Figure 1.12 Assigning the vertices to a Joint

That's really all there is to this as you only need to make one assignment. As stated before, you could actually save this as the reference and compile this for use to see this as a 3rd person model. However we are now going to take a step backwards to the point where we just have moved the knife into position and deleted the op4 knife.

To get rid of a "Biped" or Skeleton entirely in Milkshape, you need to find its "root" bone, or joint. Remember we talked about the most important bone in the model? That's right it is the "Biped01" bone that we described earlier and called it the "COM" bone.

Before we do this though, we need to have something that can help us in setting up a brand new skeleton. Save your "p_knife2.ms3d" file, then save a copy of it by naming it as "temp.ms3d" file. You will need to start paying attention to the "Title" bar of Milkshape from now on as we are going to open up a second Milkshape 3d program and load the "p_knife2.ms3d" file into it as Figure 1.13 show them lined up side by side. See Figure 1.13 for an example of this.


Half-Life Tutorials

Making a 3rd Person Model for Half-Life - by Rat

The reason for two Milkshapes is that we will be deleting the Skeleton from the "C:WINDOWS\Desktop\models\p_knife2.msd3" program. In the "Joints" list box, click on the Biped01" joint as shown in Figure 1.12. Press the "Delete" button on the "keyboard" to delete it. The entire skeleton will be deleted in a single operation because of it being the "root" joint. Now you will be looking at the "C:WINDOWS\Desktop\models\temp.ms3d" for its position of the first joint or "root" joint that you will be creating. Pay particular attention to this. This is the "COM" that we talked about and the game engine will pay attention to it for placement in game when we will be completing the entire skeleton for a character model in a later tutorial.

To create your "root" joint, switch to the "Model" rollout and click on the "Joint" button. Then click in the same relative position as seen in the "C:WINDOWS\Desktop\models\temp.ms3d" but in your "C:WINDOWS\Desktop\models\p_knife2.ms3d" program. If necessary count the grid positions in "C:WINDOWS\Desktop\models\temp.ms3d" and try to match it in "C:WINDOWS\Desktop\models\p_knife2.ms3d." (See Figure 1.14).

Figure 1.14 Creating the root or "COM" Joint

We will be renaming this new joint. Switch to the "Joints" rollout and click on the new joint that you just created and double click in the name text box next to the "Rename" button so that the name is highlighted for overtype mode. Type in "Bip01" and pay particular attention to the capitalization of the joint naming convention as this matters in the compilation of models when dealing with "QC" files. If they are not named exactly the same thourghout your models designs, parts will not fit up correctly or may not even appear in game or cause game crashes. One of the most disappointing things that will happen to you if you do not name them correctly, is that what is called "Attachments." These "Attachments" are responsible for positions of things like "Muzzel Flash" points. Now you know why some guns that have been created for a new weapon model, seem to shoot from the stomach or head or some other weird place ingame! As an example of the "Attachment" look at the "v_9mmhandguns.qc" file. It has a line that reads:

// 1 attachments

$attachment 0 "Bip01 R Hand" 10.000000 2.250000 4.250000

You might experience and error during compilation that will say:

************ ERROR ************

unknown attachment link 'Bip01 R Hand'

Now this should become obvious to you as to why this error will occur, either you have named a bone wrong, or you have no assignments to this bone.

You will continue to create the rest of the Skeleton in the same fashion as outline in the preceding paragraphs until you have all the necessary joints created. Remember to switch back and forth to the other Milkshape window

You will assign all the vertices of the knife to the "Knife" joint, by switching to the "Joint" rollout and clicking on the "Knife" selection in the list box, then clicking the "Assign" button.

At this point we are now ready to export our file as a Valve smd. Select "File->Export->Half-Life SMD..." and type in the "File name:" text box: "p_knife2(ref)" then click the "Save" button. Make sure you have the "Reference" Radio button checked like Figure 1.15 shows.

Figure 1.15 Exporting the SMD Reference file


Half-Life Tutorials

Making a 3rd Person Model for Half-Life - by Rat

You will now need to create a "QC" file for this new model. Select "Tools->Half-Life->Generate QC file..." and type in the "File name:" text box: "p_knife2" then click the "Save" button. You will need to alter this "QC" file like we did in the creation of the world model. So we will edit it by selecting "Tools->Half-Life->Edit QC file..." then click the "p_knife2" and the click on the "Open" button. You will need to change it like Figure 1.16 depicts.

Figure 1.16 Correction of the QC file

The final part of the model creation is to compile the file to make your model. First dont forget to save the corrected "QC" file! Next select "Tools->Half-Life->Compile QC file..." and select "p_knife2.qc" and the click on the "Open" button.

After a bit of scrolling in the "Message Window of Milkshape, the compiling will be done and your now ready to see your newly created model in "HLMViewer" or..., you can view it ingame!

How to view your model in a HL gameplay

You heard me right! After a bit of discussion, you should be able to see your new knife ingame, using tricks that HL modelers use without having to know a bit of coding a new dll to see it ingame.

If you had to recode a new dll just to see what your new weapon will look like ingame, you probably would get discouraged, really fast. Plus the fact is that you may not at this point in time, or ever even want to spend the time to learn how to code. You are probably also tired of looking at the model in HLMViewr. Now you want the thrill of seeing the model and its animations of the model that is using it with your brand new model. It has been know for quite some time, that you can view the player model in what is called 3rd Person View.

The steps necessary to do this is:

  1. Find your "Half-Life\valve\models" directory, (this could be different from some, mine is: "C:\SIERRA\Half-Life\valve\models").
  2. Place your "p_knife2.mdl" in this directory.
  3. Rename you model to "p_crowbar.mdl."
  4. Make a short cut for Half-Life to play in 3rd person mode by creating a new shortcut on your desktop by first right clicking on a blank area of your desktop
  5. Click "New->New->Shortcut."
  6. Type in the "Command Line:" text box: "C:\SIERRA\Half-Life\hl.exe -dev -toconsole +map boot_camp +thirdperson +cam_idealyaw 220 +cam_idealdist 90"
  7. Click "OK"
  8. Click on this new shortcut.
  9. Pull down the console by using the "~" key on your keyboard.
  10. Type in the console:"impulse 101"
  11. Go back to game play by using the "~" key on your keyboard.
  12. Select the crowbar in slot 1 by using the "1" key.
  13. Enjoy looking at your new knife model!

See how easy it is to see your weapon or other models ingame without the use of code?

Note: You may choose to view the model a bit closer or further than I prefer to, you can change this by changing the command line where it says: "+cam_idealdist 90" to a greater or lesser number. If you wish to view the player model at a different angle than I do, then you can do this by changing the command line where it says "+cam_idealyaw 220" to to a greater or lesser number.

Next tutorial we will move on to making a working view model or "v_knife2.mdl" for your viewing pleasure.

All material in this tutorial is copyrighted © 2000 by Rick J. Kelley and is not to be copied without the express permission of Rick J. Kelley. Half-Life® is Registered Trademark by Valve. Opposing Force® is a Registered Trademark of GearBox Software. Use of the pseudo name Rat is a referral to the author Rick J. Kelley.


Half-Life Tutorials

Tips for adjusting a v_ Model for Half-Life - by Rat

I often get asked the question, "how come I cant see my weapon when I choose it while playing Half Life?" There is a simple reason for this perplexing anomaly; the model is not in the viewers site. It position in relation to you, or what is known as players view, is set to some outside area of the game FOV, (Field Of Vision). This could be below, above, left, right or behind your line of sight. So another question will come up: "how can I move it to a position where I can view it ingame?" Or: "I have been moving this model around and still cant see it, how can I know wTo help you out with this situation, I have made up a Milkshape 3D file to use to help find out where the model is hiding from you. You can download this file at: hl-v_origin.zip

These are valid reasons to pull your hair out by its roots, as you can spend a lot of time using the trial and error method of moving the model around to be able to view it. In a discussion of this nature in the chat room on #wavelength on irc.gamesnet.net, I was trying to explain the method of movement from the statement that you have to add to the models qc file to get it to move to a new origin, when this simple solution came to mind that I am going to explain in this article.

My method is a fairly simple one: create some boxes with lines and numbers on them that reflect units to show you what numbers to put in the $origin statement in the qc file. Lets take a look at this statement and dissect it to see how it affects the models movement:

$origin 5 10 32

The word origin tells the compiler to move the model to a new point in 3D space to the world that you are viewing. You are the center of its universe. (Hey didn't they used to believe that we were in the center of the universe back a few centuries ago?). The origin point 0 0 0 means that you would not move it from its present position. The origin points are measured in the X, Y, and Z coordinate positions in the 3D world of which you are part of as a player. You can see an axis similar to this when your creating a model in 3D Max or Milkshape 3D. (See Figure 1.1)

Figure 1.1 The Axis as viewed in Milkshape 3D

First, you need to put my "origin.ms3d" file in the same directory that you have your "v_" model in as well as the textures that came with it to show the grid. Next, open your model in Milkshape 3D, and most importantly, deselect any thing that may be selected by clicking on Edit->Select None. Next merge the "origin.ms3d" file. (See Figure 1.2 and Figure 1.3).

Figure 1.2 The Merge command

Figure 1.3 Merged files

After Merging the two files, do not deselect the boxes as you will need to move them to a position that matches the center of your model. If you accidentally deselect them you will need to reselect only the boxes with numbering on them. Position the boxes so that they will line up to the center of your weapons center position like you would be viewing it in its idle position. (See Figure 1.4)

Figure 1.4 Centering guides to the v_ model

Now you will want to assign the boxes to a joint that does not move around or rotates in players view. My choice was Bip01 since it does not move or rotate at all. Again refer to Figure 1.4 for how to choose the box vertices as they have not been assigned to any joint yet and all the other vertices should already have an assignment. This is done by clicking on the "Joints" tab and clicking on the "Bip01" in the "Joints" list. After this you will click on the "SelUnAssigned" button, then click on the "Assign" button to assign the vertices to this joint.

A few things are in order for you to do before you might be able to see these boxes ingame. Position the about a body length away from your weapons foremost point. This would be a normal player models length if he was laying horizontally, rather than vertically. You will need to save this as your reference smd file. Recompile your model and save this new model to the directory that you will be able to view it ingame when you choose this weapon. Start HL and choose the game that you need to view this weapon, then select it. You should now be able to see the boxes somewhere in the field of vision, since these puppies are pretty big. If you do not, then the model is way off from the line of site, including the boxes. If this is the case you will need to run extra parameters in your command line start up. To do this you will need to create a destop shortcut like this:

  1. Right click on a blank area of your desktop.

  2. Click on New->Shortcut.

  3. Click the Browse button.

  4. Locate your "Hl.exe" file. (Mine is C:/Sierra/Half Life/valve/hl.exe)

  5. Click before the last " and type a space then type "-dev -toconsole -map doublecross"

This will enable you to start up HL in a the map doublecross for testing. Once you have the game running, pull down the console by typing the "`" key. Type "impulse 101" then "Enter" to get all weapons. (Yes I know, your cheating, but someone's got to do it to fix this weapon!). Select the weapon that is having the problem, and take a look at the guides to see how far off you are. Take a look at Figure 1.5 to see how I viewed a new weapon that I got finished making.

Figure 1.5 Badly aligned weapon at top of viewport.

Now, judging from what I can see in the game, I took a guess from the guides that I needed to bring the weapon down about 32 units. I typed this on the Z axis portion of the $origin statement that I added to my qc. file. Take a look at my qc file in figure 1.6 for an example.

Figure 1.6 Adding the $origin statement to the qc file.

Looking at my qc file shows that putting a "-" in front of the number where the Z axis, or in the case of an UP-DOWN movement on the Z axis would make it move upwardly. So I needed to type just a plain 32 which the compiler will take it to mean +32. Once you figure out what numbers to type in the $origin statement, save the qc file and recompile your model. Run the game from your shortcut and see if your model has adjusted itself correctly like mine did as seen in Figure 1.7 shows.

Figure 1.7 Corrected v_ model.

You may need to make some minor adjustments to your $origin statement so as to get your "v_" model in the right place. Once you have your model in the right view area for your Half Life game, you will open up the merged files and remove the grid boxes by deleting them. Then recompile the model and you have yourself a brand new "v_" model! After using this method I have saved myself a lot of grief and hair pulling! Hopefully now we can get on to making a useful "v_" model without the hassle of trying to find where in the world, or should I say, 3D world, is our model?

This publication is copywrite © 2001 by Rick J. Kelley and is not to be copied without the express permission of Rick J. Kelley. Half-Life® is Registered Trademark by Valve. Use of the pseudo name Rat is a referral to the author Rick J. Kelley.


MilkShape 3D FAQ

1. Registration

Why does my copy of MilkShape 3D not work after I register it?

2. Modeling

Why do some surfaces of my model appear black?
Why are there holes in my model when I export my model into a game?
Why does my background image not appear when I use the 'Choose Background Image...' option?
How can I get rid of the background image once I'm finished with it?
What are the limitations I should consider when modelling?
Why do I get funny lines when I use the extrude tool?
My models always look really smoothed over many surfaces, how can I achieve an angular effect?

3. Skinning

Why do I get an error "Failed to Load Texture" when I try to load my texture?
What sizes of texture can I use when skinning my model?

4. Animation

Why are the joints in my model so small or too big?
When I try to Copy a keyframe then paste it to another location, why does it not seem to work correctly?
Why, when I paste a keyframe does it not stay there when I select another frame, or perform another action?
My pasted keyframe does not show the bone positions as they are in the frame I copied from, why?

5. Misc

Why do I get the error 'Failed to Record AVI' when I try to record an AVI file from the viewport popup menu?

1. Registration

Why does my copy of MilkShape 3D not work after I register it?

When you register your copy of MilkShape 3D after the trial period has run out problems are known to occur. You will generally get a message asking you to wait for two minutes before starting MilkShape 3D up again once it has been registered. If the application does not work, which is a very rare case then you should contact Mete Ciragan, the author and explain the situation. Generally registration problems are down to mis-typed registration codes or user names, make sure to copy and paste the username and password that you were sent directly from the e-mail to the registration box. See the About form for more details.

Return to top

2. Modeling

Why do some surfaces of my model appear black?

This is usually down to the fact that the face/s in question are facing the wrong way. Generally you want all faces to face outwards with an Anti-Clockwise Vertex Order. In order to correct the problem, select the faces in question and then select menu item Face->Reverse Vertex Order.

Why are there holes in my model when I export my model into a game?

The faces where the holes are, are facing inwards, they have a Clockwise Vertex Order. To correct this go back to MilkShape and right-click the perspective viewport then select Flat Shaded from the pop-up menu. All faces that are black should be selected then the action Face->Reverse Vertex Order should be performed. It is recommended that before exporting that you perform this procedure to avoid wasting time exporting models with holes in them.

Why does my background image not appear when I use the 'Choose Background Image...' option?

In some cases background images have to be of a dimension that is a power of two and in all cases there is a maximum size of image. This is completely dependant on the kind of graphics card you have. Some people find that their image does not display unless it is of a power of 2. I originally ran MilkShape 3D on a 3dfx Voodoo 3, the maximum image size I could use was 256x256 and it had to be of a power of 2. Now I use an NVIDIA GeForce 2 Ti and I can use any size I want (deduced from numerous tests). If it doesn't work on your machine try to match some of the special cases I have just talked about, trial and error is your best bet.

How can I get rid of the background image once I'm finished with it?

This is a simple one, click on the 'Choose Background Image...' again from the Viewport Popup menu and then click 'Cancel' in the open box that appears.

What are the limitations I should consider when modelling?

There are limits to the number of vertices, triangles, groups, materials, joints and keyframes allowed in MilkShape 3D, it is important to consider these limitations when modelling.

  • Vertices: 8192
  • Triangles: 16384
  • Groups: 128
  • Materials: 128
  • Joints: 128
  • Keyframes: 256

    These are the definitions taken from the MS3D file format 'ms3dspec.txt.c' from the MS3D SDK. While your model/s may exceed some of these limitations, the limitations shown here are the limitations under which you will see predictable behaviour when using MilkShape 3D. It is not known what would happen (in respect to the behaviour of MilkShape 3D) to models which exceed these limitations.

Why do I get funny lines when I use the extrude tool?

The extrude tool can be used only on faces. If you get this behaviour from MilkShape 3D it is because you are trying to perform the extrude operation on vertices.

My models always look really smoothed over many surfaces, how can I achieve an angular effect?

This effect can be achieved fairly easily as of MilkShape 3D version 1.6.3 and onwards. Here is an copy of a reply to a post requesting information on how this is done.

"This functionality was suggested to Mete (by me infact) to make stuff like this easier.

The way to achieve this angled look is by selecting all the vertices and using the Vertex->Unweld option. This treats all vertices as being for ONLY one face, i.e. all faces have three verts and none are shared. It can increase the vert count but thats not really a factor here. Once the vertices are not shared they have a normal that represents the direction that the face is facing in and not an average of all faces around the same area. If you catch my drift. Check out the image.

Note that both before and after are displayed in Smooth Shaded."

This is explained further in the Normals section of 3D Theory & Practice.

Return to top

3. Skinning

Why do I get an error "Failed to Load Texture" when I try to load my texture?

This can be for a number of reasons. First you must make sure that the format of texture you are trying to import is supported by MilkShape 3D. Do this by checking in the drop down file type box in the texture browser box.

What sizes of texture can I use when skinning my model?

The texture dimensions should always be a power of 2, e.g. 64x64, 128x128, 256x256. The maximum size of texture you can use is dependant on your graphics card.

Return to top

4. Animation

Why are the joints in my model so small or too big?

The problem here is that the pre-set joint size that is defined in the preferences window is too small. Select File->Preferences... and then click the Misc tab. In the Joint Size box insert a higher number than is already there, experimenting with this will give you a good size to work with.

When I try to Copy a keyframe then paste it to another location, why does it not seem to work correctly?

This is a problem often encountered by beginners (and experts who forget). The solution is to make sure the joints you want to copy the position of are selected before Copying the keyframe. The best way to achieve this is to select the whole skeleton.

Why, when I paste a frame does it not stay there when I select another frame, or perform another action?

Pasting a keyframe does not mean it has been set as is the mistake of most people with this problem. When you have your model in the pose you want for that keyframe always remember to set it by using the command Animate->Set Keyframe (Ctrl+K).

My pasted keyframe does not show the bone positions as they are in the frame I copied from, why?

This is most probably down to when you selected the keyframe to be copied. When copying keyframes use the Select Joint tool and select every joint that you wish to copy the position of, then use the Copy Keyframe command. Usually in a biped model this is all the joints in the model.

Return to top

5. Misc

Why do I get the error 'Failed to Record AVI' when I try to record an AVI file from the viewport popup menu?

This can be due to a number of things. The first thing you should try is adding the .avi extension to the end of the filename that you enter into the filename box in the windows save box that appears. There are rumoured to be other factors such as the viewport width and height have to be an even number, this is not concrete though. As the Record AVI is new functionality as of version 1.6 onwards problems have still not been entirely ironed out.

Return to top


Supported File Formats

MilkShape 3D supports a wide range of 3D and bitmap image formats. User made plug-ins allow support for files that users wish to create.

3D Model Formats

Half-Life SMD | Import + Export
Quake 2 MD2 | Import + Export
Quake 3 Arena | Import + Export
Genisis 3D BDY | Import + Export
Genesis 3D MOT | Import + Export
Unreal/UT 3D | Import + Export
Serious Sam MDL | Import
Serious Sam LWO/SCR | Export
Serious Sam SKA | Export
Max Payne KF2/KFS/SKD | Import + Export
The Sims SKN | Import + Export
Gamestudio A5 MDL | Import + Export
Wavefront OBJ | Import + Export
3D Studio ASC | Import + Export
Lightwave LWO | Import + Export
Lightwave 6.5x LWO | Export
AutoCAD DXF | Import + Export
POV-Ray INC | Export
VRML 1 WRL | Export
Viewpoint Experience Technology MTS/MTX | Export
Autodesk 3DS | Import + Export
GenEdit 3DT | Export
No One Lives Forever ABC | Import + Export
Lithium UnWrapper LUV | Import
MilkShape 3D ASCII | Import + Export
Blitz Basic 3D | Export
DirectX 8.0 File + DirectX (by JT) | Export
Nebula Script | Export
Vampire: The Masquerade NOD | Import + Export
Unreal Engine Skeletal Mesh | Import
Rogue Spear QOB | Import
Orbiter Mesh | Export
RAW | Import + Export
VRML97 | Export
PlayStation TMD | Import
SoftImage XSI | Import
Kingpin MDX | Import
Jedi Knight 3DO (by Zy) | Export

2D Texture and Viewport Background Formats

Windows Bitmap BMP
Lithtech Textures DTX
Serious Sam Textures TEX
Zsoft Paintbrush PCX
Truevision Targa TGA
JPEG Compliant gif/JPEG
Tagged Image File Format TIF/TIFF
Portable Bitmap PBM
Portable Greymap PGM
Portable Network Graphics PNG
Portable Pixelmap PPM
Kodak Photo CD PCD
Windows Icon ICO


The Toolbox - Joints

3D Theory & Practice

The area of 3D graphics covers a massive area and can only be done justice to by reading books and browsing the net, this section only serves as a basis from which to work in MilkShape 3D and understand what is going on, which is not strictly necessary but it fills a few gaps where knowledge may be desired.

The Basics of 3D

3D Space is represented by 3 planes or dimensions (hence 3-Dimensional). These are the X, Y and Z planes. Y Ranges in the up and down directions, X in the left and right and Z in the depth. Y is the height, X is the width and Z is the depth.

In 3D space every point has 3 coordinates, these are (you guessed it) X, Y and Z. These represent the position of a point in the respective plane.

This is the MilkShape 3D axis viewed from the 3D perspective window.

The Constructs of 3D

There are many different building blocks available in the area of 3D. High-end 3D applications allow the use of Splines, Curves, NURBS (Non-Uniform Rational B-Splines), etc... MilkShape 3D deals with the basics that are widely supported on numerous Graphics Cards and Graphics Application Programming Interfaces (APIs) such as DirectX and OpenGL. The basic building blocks MilkShape 3D deals with are Polygons, Vertices and Normals.

Vertices

A Vertex is the simplest construct, it is a point in 3D space, which has an X, Y and Z coordinate value. In MilkShape 3D vertices can be placed and used to define a polygon (triangle) and are represented by a dot.

Polygons

The word 'polygon' can mean a lot of things to many people. In generic terms a Polygon is a flat surface with either three sides (triangle) or four sides (quad). MilkShape 3D uses only triangles. However in 3D Theory a polygon can have an infinite number of sides. As computers cannot handle 'infinity', in practice the number of sides a polygon can have is usually limited to three or four. In MilkShape 3D a polygon (triangle) is represented by lines joining three vertices. An outward (forward) facing polygon is defined counter-clockwise, an inward (backward) facing polygon is defined clockwise.

By definition a Polygon is a convex shape, there are no concave areas around its edge. The following image shows a variety of valid and non-valid polygons.

As a rule of thumb, a shape with any side which would intersect any other side, if an infinite line was projected from it, is a non-valid polygon. All of these shapes can be made in MilkShape 3D using triangles, the Non-Valid shapes would be valid as they would be composed of triangles which are themselves Valid polygons. However, as single polygons (i.e. not composed of other Valid polygons) the Non-Valid polygons are still Non-Valid, that is; not a polygon.

Normal

A normal is basically a vector, that is; a straight line. It is defined by a start point and an end point, both of which are points in 3D space (meaning they have an X, Y and Z coordinate value). In a 3D object only one vertex is needed per normal as the vertex the normal is attached to defines the start position for the normal.

Normals are used to determine how a polygon is lit by the light sources around it. A normal (in Flat Shading) can be imagined to project from the middle of the polygon at a 90 degree angle to the surface of the polygon. The normal always faces from the side of the polygon looking outward.

Graphics Hardware will calculate the intensity of the light on the surface of the polygon by using the normal. The intensity depends on how close the angle of the normal is to the angle of the light, e.g. if the normal is perpendicular (on the same angle) with the angle of the light, this is the point at which the intensity of the light on the polygon is brightest. If the normal is facing away from the light direction then this will be the point at which the intensity of the light is at its darkest.

This image shows the different light intensities on the surface of the model. Each side is composed of four triangles, so strictly speaking there should be a black line (representing a normal) originating from the centre of each triangle upwards in a 90 degree angle to the surface of the polygon. In this demonstration though, we can deduce that because the light intensity is the same for each side (the four triangles) the normals are also the same i.e. they are equal. In MilkShape 3D the light in the scene comes from the viewing perspective of the camera in the scene, like a camera with a flashlight on it. The normal with an angle closest to that of the light (the same position as the camera) is number one; therefore the surface it is attached to is the brightest. The surface that normal two is attached to is less bright as this normal is facing away from the light more. Normal three is facing away from the camera the most and therefore its surface is even darker.

MilkShape 3D possesses another method of surface shading called Smooth Shading. If you have switched between Smooth and Flat Shading you will have noticed that polygons in Flat Shaded mode are more defined, this is due to the difference in lighting methods.

With Smooth Shading a normal is projected from each vertex at a 90 degree angle from the face it is attached to. Where a vertex is attached to more than one face an average of the angles between the faces and the vertex is used.

This image shows the normals that are attached to the vertices. Vertex Lighting (as it is termed) results in a Smooth finish to the surfaces. This is due to an averaging of light intensity between surfaces that results in a gradient, rather than a solid fill as would be achieved by Flat Shading.

This concept can be further explained by taking a better example. In the image immediately below is a box. The right side of the image is a flat shaded box therefore all normals attatched to vertices are pointing in exactly the same direction as the face is pointed. By Unwelding vertices (Vertex->Unweld) you create more vertices, four for each face and none are shared, so in the image instead of having eight vertices (as the Smooth Shaded box on the right of the image does) there are 36 i.e. 12 triangle faces times 3 vertices for each face = 36. The white lines show where the normals would be if a line was drawn from the vertex to the normal.

One more thing to note is that Normals are of a unit length, i.e. they are a length that is a whole number; 1, 2, etc... To Normalise something means to introduce an equation that will make a number equal to one, that equation is commonly the number divided by itself.

With everything that has been said before you are probably in the state if mind that Normals are lines. Well metaphorically speaking, they are lines, they have a start point (the vertex it is attatched to) and an end point (the normal position). But in actual fact a normal is a point in space, a vector, much as a vertex is a vector. A vector, if you have not heard of one before, generally speaking is a numerical quantity. In 3D graphics it can be literrally described as a direction. A direction is a straight line and the direction can be obtained by knowing the current position and the destination position. A normal therefore is a point in 3D space, a vector, 3 values x, y and z. The renderer in 3D engines takes the position of the normal in relation to the position of the vertex it is attatched to, in order to figure out the lighting intensity the surface will have.

Texture Mapping

Texture Mapping literally means mapping a texture onto a surface. In order for a texture to appear correctly on a surface UV coordinates are used at each of the vertices that compose the surface. The U coordinate is the Texture X coordinate and the V is the Texture Y coordinate, we deal with only two dimensions as images are only two dimensions (there are also 3D textures but that goes out with the scope of this document).

As the following image shows, imagine taking the texture and pasting it on top of the surface (in this case a triangle). The coordinates that the image is transposed onto the surface are stored at each vertex that make up the surface.

The bit that is not mapped to the triangle (i.e. the lower right triangle of the bitmap) is cut off. UV Coordinates allow the surface to have mapped any area of the applied texture the user wishes. In the texture coordinate editor the vertices represent the UV coordinates on the texture, on the model the texture is applied to the surface using the UV coordinates.


MilkShape 3D Help Credits

Mete Ciragan | The creator of MilkShape 3D. Thanks for a great program and for the help of clearing up certain aspects of its functionality and for the file hosting on the MilkShape 3D download page.
(Vagabond) | MilkShape 3D forum moderator. Thanks for the tutorials, guidance and the sticky post :)
Andrew Murray (sckoobs) | Creator of these help files, I hope you find them useful.
Rick J. Kelley (Rat) | For the excellent Half-Life model tutorials and testing and the file hosting.
(Mooseboy) | For the suggested additions.
Jerome W. Norgren (Dimple) | For the suggestions and testing.
Dan (Rikerone) | For the file hosting on Polygods.com.


Help Me Help You

In the infamous words of Jerry Maguire.

This is the final version of the MilkShape 3D help file. It is final in the sense that it is up to date with the current version of MilkShape 3D and that all the sections I intended in including are all here.

However, its rarely that simple, especially with computer orientated things. So all I ask you is: if you find any errors in this Help file please report them to me. If you find spelling mistakes they will not warrant an entirely new release but will instead be included in bigger changes and increments of the help file.

As new releases of MilkShape 3D appear I will release new versions of the help file if I think that a new feature is particularly difficult to understand.

I am also open to suggestions, so send all error reports and questions to sckoobs@yahoo.com. I check this address daily so you should recieve a reply within a day or so, as long as I'm not particularly snowed under.


Registering MilkShape 3D

MilkShape 3D is a trial based program that requres registration for it to become fully functional outside of its 30 day trial limit period.

Registration of the 1.x version series of MilkShape 3D costs 20 US Dollars (25 Euros). With a credit card you can register MilkShape 3D online at the Chumbalum-Soft web site at the address:

http://www.swissquake.ch/chumbalum-soft/ms3d/register.html

MilkShape 3D can also be ordered through the post by printing and filling out a simple order form.


Title

From A to Z: Complete Model Construction

This tutorial is aimed at the total beginner to the intermediate skill level of 3D model construction. It deals with fairly advanced topics but nothing is taken for granted and everything is explained clearly so that mostly everyone can understand.

In this tutorial I aim to have a completely modeled and animated human female biped model. The steps involved in this creation process are as follows.

  1. Create the model in MilkShape 3D. This involves creating the meshes for the different parts of the body using vertices and polygons and grouping them to create meshes (groups of polygons).
  2. Unwrap the meshes in Ultimate Unwrap 3D. This invloves mapping a checker material onto the surfaces of the model and adjusting the UV coordinates to achieve the best planar material distribution over the faces. This means adjusting the UV coordinates to avoid texture stretching.
  3. Texturemap the model using the UV maps exported from Ultimate Unwrap 3D as a result of UV unwrapping. These UV maps will be painted using Adobe Photoshop 5.5.
  4. Animate a walk animation using MilkShape 3D. This involves creating a skeleton and posing it at key-frames in the animation cycle.