-=-= INTRODUCTION =-=- I made this as a tribute to a truly great villain from the childhood-defining world of BIONICLE. This is the Makuta Teridax as he appears in the classic 2001 Mata Nui Online Game (MNOG). I chose this incarnation as it has the simplest shapes, plus it's a smaller visual target ;) This was my first ever 3D model and I picked up new skills in 3D and 2D tools. It took a few months of maybe 3 mornings/evenings a week, July-September 2022. I wanted to spend as long as it took to get something I would be happy with. It's not perfect, but I am very proud of it. Joel Jakubovic (Makuta Bones) Formerly Hemo / Hemo's grenade Makuta/Matoran low-poly model © 2022 by Joel Jakubovic is licensed under CC BY 4.0. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ -=-= TECHNICAL NOTES =-=- I developed everything on Ubuntu 20.04, but most of my tools work or have equivalents on Windows or Mac. I've written these notes for anyone new to making Q2 models in 2022 or who wants to build off mine - stuff's in the "source" folder. I had to discover a lot of things, and maybe it will save someone time before it inevitably goes out of date too :) == SOUND == This was the easiest step so I did it first. Makuta is voiced in the first two movies by the talented Lee Tockar, so I went through relevant scenes on YouTube and recorded via system sound into Audacity. I then cut down and mixed clips until I had what I wanted, using the default male/female sounds as reference. I had to amplify to the max for them to be audible in-game. For export, I converted to mono and exported to WAV, adjusting the resolution to roughly match the reference file sizes. == MODEL == I picked up Blender 3.2 thanks to some video tutorials. The official 2.8 ones[1] are great, as is the donut man[2] though I only got about halfway through those. For rigging and animation I used the Low-Poly Character tutorials[3]. I built up each part separately kinda by brute force because I couldn't be arsed to sit through more tutorials to master the various tools. So I manually placed vertices and connected triangles and using the mirror modifier for symmetry. Knife tool was very useful too. For animation, I imported[4] the default female model and posed the rig to match the frames, using creative alternatives where appropriate. Following the Low-Poly tutorials, I had an Action for each animation. Then I had to figure out how to give all this to the MD2 Exporter plugin[4]. I would first bake the action's keyframes into a new action (Pose > Bake Action...). Then I would carefully copy all the baked frames into the appropriate frame numbers[5] in my special "quake2" action, which would hold all the baked frames from all actions. The exporter goes through all frames in the current timeline and records the pose at each one, so this is a way to get that. Note that it starts at frame 1, while the docs start at 0, and for some reason the imported female animations start at frame 2! So the two models are synchronised in the individual actions, but not in the master quake2 one. For the death "sunglasses" and chaingun rotation, I used Shape Keys at the relevant frames in the quake2 action. One final problem blocking export is that I had modelled with disjoint objects for Head, Torso and arms/legs. Yet the exporter only works on a single object. Therefore when ready to export I save, select all of these (Head last), right-click and Join into a single object. Then use the exporter (with Export Animation selected.) Then I make sure to Undo the join afterwards. This is of course not necessary for exporting weapon models, which are all single objects. Afterwards I get an MD2, but the skin name's probably wrong. Finally I open it in a hex editor (for me, GHex) and manually patch the texture (!) near the top of the file to say something sensible. Weapon skin names can just be copied from the male/female weapon models. [1] Blender Fundamentals 2.8 https://www.youtube.com/playlist?list=PLa1F2ddGya_-UvuAqHAksYnB0qL9yWDO6 [2] Blender 3.0 Beginner Donut Tutorial https://www.youtube.com/playlist?list=PLjEaoINr3zgFX8ZsChQVQsuDSjEqdWMAD [3] Rig A Low Poly Character in Blender 2.9x (Imphenzia) https://www.youtube.com/watch?v=XkiWBSSuxLw [4] io_mesh_md2_28_python.py, my local mod adding proper frame names to the export. Original at https://github.com/michaeleggers/Quake2modding/blob/main/scripts/io_mesh_md2_28_pythno.py [5] http://tastyspleen.net/~panjoo/downloads/quake2_model_frames.html == UV MAPPING == UV mapping was a bitch. I placed seams in sensible seaming places and used some combination of Blender's unwrap tools. I scaled, rotated and manually placed islands in the UV map. Occasionally I manually adjusted vertices. I knew I needed the head and torso textures to be asymmetric, so they're present in full. I decided in the end that I couldn't be arsed doing separate arms/legs and probably didn't need to, so there's only one copy for them. My UV placement was certainly not optimal and there's free space, but idk how else to do it. == TEXTURES == I used Blender's Texture Paint to fill the main polygons of interest for the base texture PNG. Then I used a free online tool to vectorise this into an SVG [1, 2]. I picked up InkScape to draw all the details, using screenshots from MNOG etc. as reference. I exported this to a 640x480 PNG with transparent background. Then I loaded this into GIMP, added a black layer below, and merged. Then I imported the Quake2 palette to GIMP's palettes, used Image > Mode > Indexed, selected the palette, and converted. Finally I exported as PCX. [1] makuta-base.svg [2] https://vectorization.eu/ == CODE == Lucky me, I'm a programmer so I was able to move forward at some points others may have just gotten stuck. I found some ancient Q2 model viewer programs [1] and ran them on Wine, and I also modded Q2Pro's player setup menu to show different animations from different angles [2]. [1] Wally, Q2 Model Editor (MDL.exe) v0.9 http://www.rmdsoftware.com/q2modeller (official broken link, try Wayback, can't remember how I found downloads) [2] https://github.com/jdjakub/q2pro/tree/enhanced-modelviewer == FLAWS / THINGS TO IMPROVE == - His head goes through the back of the gun on the idle animation, don't really care - The leg pieces IRL have a lot of empty space for which I just put black texture. This is because I only realised the disjoint shape technique (e.g. the torso pistons) too late and I didn't want to re-texture etc. - The characteristic back-of-the-arm shape got simplified a lot, cos I didn't know how many more tris I could afford. I could probably have done better. - I had to manually lay out the texture map so it's probably not as space-efficient as it could be. - Black borders are still slightly visible in places on the model which I can't be arsed fixing. - The model is still slightly sunk into the ground in the idle pose, oops. - I got sick of manually placing the Makuta grime shapes so I did a lot of copy+paste. This means I didn't make full use of the asymmetry potential I spent precious texture resolution on. - I tried very hard to get the "sunglasses" geometry working to black out the eyes in death poses, placed as close as possible to the eye tris. Some holes remain at some angles, but it's good enough for in-game usage. - I added bones controlling the "toes" on the feet, but didn't make use of them in the end. - It would've been cool to have him explode into disjoint pieces for a death animation. I knew this was possible since the samhain model's head pops off. But I discovered Blender's "detach bone" feature late in the process and only made use of it for the "taunt" animation.