Game Development, Graphics Programming, GPU, Computer Science

OverviewBefore importing my models into UE4, I did some edits mostly with MeshLab and Maya. I also played with other 3d modeling programs such as meshmixer, 3d builder, netfabb, blender, and 3ds max.

I started with 62 STL files from 3d scans, and I don’t want model editing to become too heavy of a focus on this project. So I followed the 80-20 rule (aim for 20% effort to get 80% results). With a little effort, I can at least make these models much better than my original placeholder art (box + photo texture), plus I can get some more experience working with 3d models.

MeshLab EditsThe scans had way too many polygons, so I used MeshLab to reduce polygon count from ~1-2 million to 15k. MeshLab has a *.mlk XML format for scripting that seemed promising to automate (Filters > Remeshing etc > Quadratic Edge Collapse Detection > faces 1500). But when I tried it with meshlabserver.exe (MeshLab_64bit v1.3.4BETA (May 28 2014)), it didn’t work. So I ended up writing an AutoHotKey script to run my *.mlk file from the GUI for each of the 62 STL files.

In MeshLab, it was also easy to do some other manual per-model edits – delete junk triangles (artifacts from scanning), use Remeshing > Close Holes, and export as OBJ. Export as OBJ created a file that imported cleanly into Maya (and other software).

MayaMesh > Cleanup. To selectively reduce polygons for the flat bottom of the hero/monster figures, I did – select the part you want to reduce, then Mesh > Reduce. The grid view made it easy to select just the base platform. To rotate: ctrl+shift+A selects all, then E puts you in rotate mode, or W puts you in translate mode, or ctrl+A for Attribute Editor > *:Mesh tab > rotate or translate. Modify > center pivot.

I tried out other various Maya tools such as Modify > Align Tool, Mesh > Fill Hole. I quickly found that with 62 files, I could eat a lot of time editing each file in Maya, so I made sure to balance (getting better results and learning Maya) with (a bias towards getting it done faster).

To delete selected vertices, “Delete” is not enough – you have to do “Ctrl+Delete” or Edit Mesh > Delete Edge/Vertex.

I imported OBJ and exported to OBJ when I wanted to continue editing the file in other software (eg MeshLab). When exporting OBJ, I did not export Materials. For use with UE4, I exported to FBX since that’s UE4’s standard. I used the following FBX export options – Include Smoothing Groups, Smooth Mesh, Selection Sets. Axis Conversion Up Axis Y. FBX File Format Binary, FBX 2014/2015.

GargoyleUnlike the other hero/monster figures (miniatures), the gargoyle is composed of three pieces – the body, the wings, and the head. Rather than scan this as one piece, I scanned this as three separate pieces then merged them in Maya. The 90 degree angle orthographic views (Side, Front, Top) were very useful for lining up the wings correctly.

All of the objects were small for the EinScan-S, but the gargoyle head was even smaller. The EinScan-S scanning software failed to auto-merge my gargoyle head scans, so I took separate turn table scan and merged them in Maya.

Unreal EditorFor the hero/monster figures, I used simple solid color materials that I created in the Unreal Editor designed to look like plastic. I worked on the hero/monster figures first. A texture isn’t necessary because each model is a single color.

Heroes/Monsters now, Furniture later
Editing the furniture will be a bit more involved. For the furniture, I only scanned the plastic parts (not the cardboard), so I’ll need to create simple geometry for the cardboard pieces and add a texture to it based on 2d scans of the cardboard pieces. The long-run is TBD – I might even redo all of this starting from more detailed scans (LMI HDI 109?) and/or I might find an artist to focus on the model edits.

So for now I’m just doing the hero/monster figures, and I’ll save the furniture for later. Focusing on just the hero/monster scans for now means I’m starting from 23 STL files rather than 62.

Results and Next StepsI was excited to see the hero/monster models in-game. You don’t have to zoom in too close to see that the scans are lacking in fine detail. The skeleton model was made by someone else using a NextEngine scanner, and it’s noticeably more detailed. It feels incomplete with the furniture still using the box-with-texture placeholder art.

But overall the results are awesome – and I am motivated to continue working on this. My day job has to take priority, but so far in 2016 I’ve consistently found time to work on this, and I’m planning to continue for at least the full year of 2016. For the next steps, I’m planning to get back to other aspects besides scanning and model editing – eg writing code for game logic and user interface interactions.

I’ll close with screen shots and a video – quest 1, a “family portrait”, a room full of orcs, and a room full of goblins. Goblins and orcs are unique in that they have multiple unique models (4 orcs, 3 goblins).