Halo CE to Halo 2 GBXModel Upgrader version 1.0 public beta By Jahrain With a the click of a button this utility will allow you to upgrade your .gbxmodel tags from Halo CE to Halo 2’s .render_model format. As well as making it easier to transfer from Halo CE to Halo 2, this will for the first time allow you to create custom models for Halo 2’s editing kit since the official tools provided does not allow it. However, there are still currently limitations with the editing kit that will make it difficult to do much with custom models as they must use existing model animations, collision geometry, and physics tags. Upgrading directions: Note: Before trying to upgrade your model, go to Edit -> Preferences on the menu and specify your default Halo CE, and Halo 2 Map editor directories. Step 1) By either going to File -> Open on the menu, or clicking the […] button next to gbxmodel source path textbox, locate and open up the gbxmodel tag you wish to upgrade. Step 2) After the model finishes loading, you can use the material editor to change the reference paths to the new shaders which the upgraded model will use. Be sure to click apply after changing the path. Step 3) Click the […] button next to the “Export to” path textbox to specify an export location and file name for your new upgraded render_model tag. Step 4) Click the upgrade button, and your upgrade should be completed. Upgrading issues and limitations and work arounds: There are certain issues with upgrading from Halo CE to Halo 2 as the file formats are different for the models as well as the way the models are read by the engine. -One main issue is face orientation. Halo 2 uses triangle stripping optimizations, while Halo 1 uses just basic triangles for geometry surfaces. This causes some issues with face orientation when upgrading just based on the amount of triangles and the order of the strips. I’m still working on a way to trap this issue and find a solution, but until then, you can use these work arounds. -The easiest way to avoid any of these issues is to just make all surfaces or shaders double sided but that may cause performance issues. This utility provides the option to manually flip each geometry group based on what is noticed ingame. Each strip is grouped by which part it belongs to and each part has its own individual shaders. -One thing that helps flip the face orientation with triangle strips is by reversing the order of the triangle strip. Using the options panel in the utility, you can specify which parts of the model you want to have the triangles flipped by checking the reverse index flag. However this does not work all the time. -The next option if that doesn’t work is to flip the geometry in 3ds max before exporting and compiling it. After that, make sure you check the “Flip Normal” flag to fix the flipped normals so shaders show up fine. -If you don’t have access to the source file of the gbxmodel, the last option is to use both reverse index options and the replicate first index option. However, this might cause the first, and/or last triangle to vanish and is not recommended. -Another issue is marker instancing. Marker instances are only supported if your original gbxmodel was extracted using a tag converter. A work around to this is to manually move all of your markers, as well as any instances of them to the top markers block in the gbxmodel tag by copy and pasting all of the marker data. Once the upgrader detects any markers in the top marker block, it will then instead read it’s markers from that block instead of from the regions block. -Node inverses are not supported as they are not supported in gbxmodels. This may cause some unexpected results with animated models with complex node structures. -One other small issue is node weights. GBXModels only support up to 2 node weights per vertex, while render_models support up to 4. So when rigging a model, you are limited to only 2 node weights per vertex. -There is also a weird bug with H2Sapien that will cause it to crash if you replace the models of any existing objects in your map and your region block is not named “object”. Make sure you rename your region block to “object” (without quotes) before upgrading the tag. Multiple regions are supported, but may cause unexpected results. -Also be sure that if you are replacing an existing render_model, that you have the same amount of nodes as the collision model, animations, or any other model tags associated with it. Please remember that this is a beta version, so expect to find unknown bugs. Please send me a detailed description of any issues as well as any links to pictures or files involved via PM on the H2Vista.net forums so that I may evaluate them and find a solution to fix it for the final version. Credits: Programed, designed, and tested by me (Jahrain) Special thanks to Kornman for some addition testing with unlocked tools.