Hands On Milkshape First Steps in 3D Modelling Alistair Stewart Digital Skills Milton Barr Girvan Ayrshire KA269TY www.digital-skills.co.uk Copyright©AlistairStewart2009 Allrightsreserved. Nopartofthisworkmaybereproducedorusedinanyformwithoutthewritten permissionoftheauthor. Althougheveryefforthasbeenmadetoensureaccuracy,theauthorandthe publisheracceptneitherliabilitynorresponsibilityforanylossordamagearisingfrom theinformationinthisbook. MilkshapeisproducedbyMeteCiraganofChumbalumsoftandcanbedownloaded fromhttp://chumbalum.swissquake.ch PrintedAugust2009 Title : HandsOnMilkshape ISBN : 978-1-874107-10-1 Other TitlesAvailablebythesameauthor: HandsOnDarkBASICProVolumes1and2 HandsOnC++ HandsOnJava HandsOnPascal HandsOnXHTML Table Of Contents Chapter 1 Background 3D Conceptsand Terminology . . . . . . . . . . . . . . . . . . . . . . . .2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Working WithCoordinates . . . . . . . . . . . . . . . . . . . . . . . .2 1 Dimensional Space (1D) . . . . . . . . . . . . . . . . . . . . . .2 2D Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 3D Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Modelling Ideas andTerminology . . . . . . . . . . . . . . . . . . . 11 Culling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 MeshEditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ObjectTransformation . . . . . . . . . . . . . . . . . . . . . . . 15 LocalAxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Symmetry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Lighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Texturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Viewing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Chapter 2 Basic Controls Getting Started withMilkshape . . . . . . . . . . . . . . . . . . . . . . . 30 The Start-UpScreen . . . . . . . . . . . . . . . . . . . . . . . . . . 30 WindowLayoutControls . . . . . . . . . . . . . . . . . . . . . . . . 32 Viewport Layout andSize . . . . . . . . . . . . . . . . . . . . . 32 Movingthe ControlPanel . . . . . . . . . . . . . . . . . . . . . 33 Hidingthe Keyframer Area . . . . . . . . . . . . . . . . . . . . . 34 Showing the MessageWindow . . . . . . . . . . . . . . . . . . 34 Viewport Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Displaying ViewportCaptions andOther Details . . . . . . . . . 34 Setting a Viewport'sPerspective . . . . . . . . . . . . . . . . . . 35 Setting the MagnificationFactor . . . . . . . . . . . . . . . . . . 36 Shifting Viewpoint . . . . . . . . . . . . . . . . . . . . . . . . . 37 Setting the Grid Size . . . . . . . . . . . . . . . . . . . . . . . . 40 Hidingthe Grid andAxes . . . . . . . . . . . . . . . . . . . . . 40 Changing Colours . . . . . . . . . . . . . . . . . . . . . . . . . 41 Viewing Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 WireFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Flat Shaded . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Smooth Shaded . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Textured . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Coloured Groups . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Coloured SmoothingGroups . . . . . . . . . . . . . . . . . . . . 43 Wireframe Overlay . . . . . . . . . . . . . . . . . . . . . . . . . 43 Maximize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Chapter 3 Basic Constructs and Operations First Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 CreatingVertices andFaces . . . . . . . . . . . . . . . . . . . . . . 50 Other Options on the ModelPage . . . . . . . . . . . . . . . . . 52 Selectinga Vertex . . . . . . . . . . . . . . . . . . . . . . . . . 52 An Alternative Wayof Creatinga Face . . . . . . . . . . . . . . 53 Undoing AnOperation . . . . . . . . . . . . . . . . . . . . . . . 53 Viewing the Backof a Face . . . . . . . . . . . . . . . . . . . . . . 54 Savingthe Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Loading a Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Merging Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Exporting a Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 ImportingAModel . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Basic Mesh Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 MovingVertices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 MoreAbout Selecting Vertices . . . . . . . . . . . . . . . . . . . 59 Deselectinga Vertex . . . . . . . . . . . . . . . . . . . . . . . . 59 Snapping Verticesto the Grid . . . . . . . . . . . . . . . . . . . 60 Freehand Movement . . . . . . . . . . . . . . . . . . . . . . . . 61 AbsolutePositioning . . . . . . . . . . . . . . . . . . . . . . . . 62 RelativePositioning . . . . . . . . . . . . . . . . . . . . . . . . 63 A Final MethodofSelectingand MovingVertices . . . . . . . . . 64 MovingEdges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Selectingan Edge . . . . . . . . . . . . . . . . . . . . . . . . . 65 Movingan Edge . . . . . . . . . . . . . . . . . . . . . . . . . . 65 MovingFaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Selectinga Face . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Movinga Face . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 ScalingEdges and Faces . . . . . . . . . . . . . . . . . . . . . . . 68 Basic Principles . . . . . . . . . . . . . . . . . . . . . . . . . . 68 ScalingControls in Milkshape . . . . . . . . . . . . . . . . . . . 70 Freehand Scaling . . . . . . . . . . . . . . . . . . . . . . . . . 70 Fixed Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 VolumeScaling . . . . . . . . . . . . . . . . . . . . . . . . . . 74 RotatingEdges andFaces . . . . . . . . . . . . . . . . . . . . . . . 75 RotationControls inMilkshape . . . . . . . . . . . . . . . . . . 75 RotatingEdges andFaces . . . . . . . . . . . . . . . . . . . . . 77 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 A Multi-Facetted Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Addinga Second Triangle . . . . . . . . . . . . . . . . . . . . . . . 81 Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 CreatinganEnclosed Shape . . . . . . . . . . . . . . . . . . . . . . 81 The BackfaceProblem . . . . . . . . . . . . . . . . . . . . . . . 82 A FewMoreEditing Options . . . . . . . . . . . . . . . . . . . . . . 82 Subdividing a Face . . . . . . . . . . . . . . . . . . . . . . . . . 83 Turningan Edge . . . . . . . . . . . . . . . . . . . . . . . . . . 84 DividinganEdge . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Chapter 4 Primitives Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 The Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 The Sphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 The Cylinder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 The Plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 The Geosphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Usinga Primitive'sParameterstoCreateNewShapes . . . . . . . . 99 Extended Primitives . . . . . . . . . . . . . . . . . . . . . . . . . 100 3D Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Chapter 5 Reshaping Meshes AdvancedMesh Editing . . . . . . . . . . . . . . . . . . . . . . . . . 108 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 ManipulatingPrimitives . . . . . . . . . . . . . . . . . . . . . . . . 108 Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 MovingVertices and Faces . . . . . . . . . . . . . . . . . . . 111 ScalingFaces . . . . . . . . . . . . . . . . . . . . . . . . . . 112 RotatingFaces . . . . . . . . . . . . . . . . . . . . . . . . . . 114 DeletingFaces . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Combining Operations . . . . . . . . . . . . . . . . . . . . . . . . 116 VertexMenuOptions . . . . . . . . . . . . . . . . . . . . . . . . . 116 The Flatten Operation . . . . . . . . . . . . . . . . . . . . . . 117 The Snap Together Operation . . . . . . . . . . . . . . . . . . 118 The WeldTogether Operation . . . . . . . . . . . . . . . . . . 120 The WeldToNearest Operation . . . . . . . . . . . . . . . . . 122 The UnweldOperation . . . . . . . . . . . . . . . . . . . . . . 123 The UnweldRadialOperation . . . . . . . . . . . . . . . . . . 124 The SpherifyOperation . . . . . . . . . . . . . . . . . . . . . 125 The Mirror Operations . . . . . . . . . . . . . . . . . . . . . . 126 Modelling a Fin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Chapter 6 Extrusion Extrusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 UsingExtrusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Measured Extrusion . . . . . . . . . . . . . . . . . . . . . . . 143 Freehand Extrusion . . . . . . . . . . . . . . . . . . . . . . . 145 Looped Extrusion . . . . . . . . . . . . . . . . . . . . . . . . 147 ScaledExtrusion . . . . . . . . . . . . . . . . . . . . . . . . . 149 NullExtrusion . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Indenting Extrusion . . . . . . . . . . . . . . . . . . . . . . . 151 Other Examplesof Extrusion . . . . . . . . . . . . . . . . . . 155 EdgeExtrusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Cubist Man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Chapter 7 Additional Tools AdditionalTools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 The ToolsMenu Options . . . . . . . . . . . . . . . . . . . . . . . 166 The ShowModelStatisticsOption . . . . . . . . . . . . . . . . 166 The EditShortcutsOption . . . . . . . . . . . . . . . . . . . . 167 The Positioning Tools Option . . . . . . . . . . . . . . . . . . 168 The Clean Option . . . . . . . . . . . . . . . . . . . . . . . . 173 The DirectX Mesh ToolsOption . . . . . . . . . . . . . . . . . 174 The Height Map GeneratorOption . . . . . . . . . . . . . . . . 175 The Lathe Option . . . . . . . . . . . . . . . . . . . . . . . . 177 The Model InformationOption . . . . . . . . . . . . . . . . . . 178 The Mirror All Option . . . . . . . . . . . . . . . . . . . . . . . 179 The SmoothEdges Option . . . . . . . . . . . . . . . . . . . . 179 The Selection Editor Tool . . . . . . . . . . . . . . . . . . . . 180 The Stretchand SquishOption . . . . . . . . . . . . . . . . . 183 The Terrain Generator Option . . . . . . . . . . . . . . . . . . 184 The ArrayOption . . . . . . . . . . . . . . . . . . . . . . . . . 184 The Model Cleaner Option . . . . . . . . . . . . . . . . . . . . 188 The FatBoyOption . . . . . . . . . . . . . . . . . . . . . . . . 189 The ScaleAll Option . . . . . . . . . . . . . . . . . . . . . . . 189 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Chapter 8 Groups Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Meshgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Renaming Groups . . . . . . . . . . . . . . . . . . . . . . . . 197 SelectingGroups . . . . . . . . . . . . . . . . . . . . . . . . . 198 HidingGroups . . . . . . . . . . . . . . . . . . . . . . . . . . 198 GroupCreation . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Other MinorOperations . . . . . . . . . . . . . . . . . . . . . 201 Regrouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 SmoothingGroups . . . . . . . . . . . . . . . . . . . . . . . . . . 204 The Effect of Smoothing Groups . . . . . . . . . . . . . . . . . 204 Automatic SmoothingGroup Creation . . . . . . . . . . . . . . 204 ManuallyAssigning SmoothingGroups . . . . . . . . . . . . . 207 ShadingProblemswiththe Fin Model . . . . . . . . . . . . . . 209 SmoothingGroups andExtrusions . . . . . . . . . . . . . . . 210 SmoothingGroups andModifiedCylindersand Spheres . . . . 210 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Chapter 9 Creating Models ConstructingModels . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Combining Primitives . . . . . . . . . . . . . . . . . . . . . . . . . 218 Dumbbells . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 A DiningRoom Chair . . . . . . . . . . . . . . . . . . . . . . 220 A PiggyBank . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 EditingMeshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 A 70s Chair . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Paddingthe DiningRoomChair . . . . . . . . . . . . . . . . . 224 A RayGun . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 UsingAnImageforInspiration . . . . . . . . . . . . . . . . . . . . 229 A Derelict Cottage . . . . . . . . . . . . . . . . . . . . . . . . 230 Tracing an Image . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 CreatingRooms . . . . . . . . . . . . . . . . . . . . . . . . . 234 A Spitfire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Chapter 10 Texturing Texturing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Reflective Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 UsingImages in a Material . . . . . . . . . . . . . . . . . . . . . . 261 TransparencyWithinanImage . . . . . . . . . . . . . . . . . 263 ImageMapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Seams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 UsingGroups to Control Texture Mapping . . . . . . . . . . . . . . 268 The Texture CoordinateEditor . . . . . . . . . . . . . . . . . . . . 269 Usingthe Texture Coordinate EditoronPrimitives . . . . . . . 272 Texturingthe RayGun . . . . . . . . . . . . . . . . . . . . . . 273 Howa Materialis Mappedto an Object . . . . . . . . . . . . . . . 279 Curingthe Problemwiththe DiningChair . . . . . . . . . . . . 280 Other Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 A SlightlyLonger Look at UVMapper. . . . . . . . . . . . . . . . . 284 Texturingthe Derelict Cottage . . . . . . . . . . . . . . . . . . . . 286 Two Last Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Tile Texture Mapper . . . . . . . . . . . . . . . . . . . . . . . 288 SphereMapping . . . . . . . . . . . . . . . . . . . . . . . . . 290 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Chapter 11 Animation Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Rigging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 AnimationControls inMilkshape . . . . . . . . . . . . . . . . . . . 300 Movingan Object . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 AddingMoreKeyframes . . . . . . . . . . . . . . . . . . . . . 304 Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 MoreComplex Animation . . . . . . . . . . . . . . . . . . . . . . 307 A Desklamp . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 AnimatingABiped . . . . . . . . . . . . . . . . . . . . . . . . 311 WeightedVertices . . . . . . . . . . . . . . . . . . . . . . . . 317 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Scale Animation . . . . . . . . . . . . . . . . . . . . . . . . . 319 ReverseAnimation . . . . . . . . . . . . . . . . . . . . . . . . 319 Explode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 ZeroJoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 Exporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 DirectX8.0 File . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Chapter 12 Using Exported Models UsingExportedModels . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 DarkBASICProfessional . . . . . . . . . . . . . . . . . . . . . . . 330 Starting DBPro . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Coding a Program . . . . . . . . . . . . . . . . . . . . . . . . 331 Loading anAnimated Model . . . . . . . . . . . . . . . . . . . 334 FurtherOptions . . . . . . . . . . . . . . . . . . . . . . . . . 335 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Acknowledgements I wouldliketothankVirginiaMarshallforthethanklessjobofproof-readingand being theguineapig that hadtowork through all theexercises. Thanks also toAlan Fitch oftheFoxearthand DistrictLocalHistorySocietyfor permissiontousetheoldcottageimagewhichIfoundonhisfascinatingwebsite www.foxearth.org.uk. Manyofthetexturesusedherewereacquiredfromwww.CGTextures.comwhich hasa wealthof high qualityimageswhichare freeto downloadand use. Thanks also to Mete Ciragan (Chumbalum Soft) forthe wonderfullyeasy-to-use Milkshape package (not forgetting the others who wrote many of the additional tools included in the software).You can download the Milkshape software from http://chumbalum.swissquake.ch. The UVMappersoftwarecoveredin Chapter11 waswrittenbySteven LCox and a free version can be downloaded from www.uvmapper.com. Although only coveredbrieflyinthistext,therearemanytutorialsonthepackageavailableonthe internet. Finally,thankstoeveryone ofyouwhohasboughtthisbook and givenuptheir timetoworkthroughit.Ihopeyoufinditusefulandgetasmuchpleasureoutof usingMilkshapeasIhave. Ireallywouldappreciateanyconstructivecommentsorsuggestions.Emailmeat [email protected]