Model viewer and command-line tools for extracting models from games en-masse. Separate batch scripts are provided for each supported game in order to simplify the process.
If you'd like to vote on new games or features that should be supported, please fill out the following Google Form:
Suggesting Games/Features for Fin Model Utility
- Acewell, whose Noesis script was used as the basis for reading Dead Space textures.
- @Asia81, whose HackingToolkit9DS was originally used to extract the contents of 3DS .cias.
- @Chadderz121, AKA Chadderz, whose CTools suite was originally used to read .bmd texture formats.
- CloudModding, which provides wikis documenting various Zelda games and their internal formats (e.g. F3DZEX2)
- cooliscool, whose Utility of Time program was used as the basis for the UI and F3DZEX2/F3DEX2 importer.
- @Cuyler36, aka CulyerAC, whose RELDumper is used to extract the contents of .rel/.map files.
- @DickBlackshack, aka Rich Whitehouse, whose Noesis model viewer's plugins were leveraged to add support for various formats.
- @DavidSM64, whose Quad64 is used as the base for the SM64 importer.
- @Emill, whose Nintendo 64 Fast3D renderer was heavily referenced to vastly improve TMEM emulation.
- @EstevanBR, whose DATReaderC was referenced as the starting point for the .dat importer.
- @Gericom, whose MKDS Course Modifier program was used as the basis for the .bmd importer.
- @gibbed, whose Gibbed.Visceral library was used as the base of the .str extractor.
- Hack64, which provided documentation for various N64 microcode/display list formats (e.g. Fast3D Display List Commands)
- @hci64, whose vgm_ripping tool was ported to add support for parsing .ast PCM16 data.
- @HimeWorks, whose Noesis plugins were used to add support for various formats.
- @intns, whose MODConv tool was used as the basis for the .mod importer.
- @IronLanguages, whose IronPython was used to add support for calling Python plugins from C#.
- @jam1garner, whose Smash-Forge tool was referenced to add support for Melee models.
- @Julgodis, whose picori library was referenced to implement parsing .ciso files.
- @KillzXGaming, whose Switch-Toolbox was referenced to add support for LZSS decompression.
- @kornman00, AKA @KornnerStudios, for documenting the Halo Wars formats in HaloWarsDocs and providing the KSoft suite to extract the contents of the game.
- @leftp, whose SharpDirLister API was used to dramatically improve listing out the file hierarchy.
- @LordNed, whose J3D-Model-Viewer tool and JStudio library were referenced to fix bugs in the .bmd importer.
- @LuizZak, whose FastBitmap library was used to optimize working with bitmaps and inspired some optimizations in Fin's image processing methods.
- @M-1-RLG, AKA M-1, as his io_scene_cmb Blender plugin was used as the basis for the .cmb importer. He also provided thorough documentation on each of Grezzo's formats.
- @magcius, AKA Jasper, as their animated model viewer was used as the basis for the .csab importer.
- @mhvuze, whose 3ds-xfsatool is used to extract XFSA archives.
- @Nanook, whose NKitv1 is used to read NKit ISOs.
- @neimod, who originally created ctrtool, which is used to extract the contents of 3DS .cias.
- @NerduMiner, whose Pikmin1Toolset was ported from C++ to C# to add texture support for Pikmin 1.
- @nickbabcock, whose Pfim library is used to extract the contents of .dds images.
- @nico, AKA thakis, whose szstools CLI is used to extract the contents of GameCube .isos and their ddsview tool was referenced to fix Halo Wars DXT5A/ATI1/BC4 parsing.
- @Nominom, whose BCnEncoder.NET library is used to parse DXT1/3/5 images.
- @Ploaj, whose HSDLib library was heavily referenced to fix the Super Smash Bros. Melee .dat importer (since HSDLib has nearly perfect accuracy!!) and Metanoia library was heavily referenced to add support for parsing Level-5 formats.
- @revel8n, whose Smashboards thread was referenced to add support for the .dat importer.
- @RenolY2, AKA Yoshi2, whose bw-model-viewer tool was used as the basis for the .modl importer.
- @Sage-of-Mirrors, whose SuperBMD tool was referenced to clean up the .bmd logic and whose Booldozer tool was used as the basis for the .mdl importer.
- @SceneGate, whose Yarhl, Ekona, and Lemon libraries were used to rip files from DS and 3DS ROMs.
- @shravan2x, whose Gameloop.Vdf library is used to deserialize the contents of Steam's .vdf files.
- @srogee, as his HaloWarsTools program was used as the basis of the Halo Wars importer.
- @TTEMMA, whose Gar/Zar UnPacker v0.2 tool is used to extract the contents of Ocarina of Time 3D files.
- @SuperHackio, whose Hack.io library was referenced to improve the .bmd parser.
- Twili, for reverse-engineering and documenting the .zar archive format and various additional research.
- @vgmstream, whose https://github.com/vgmstream/vgmstream tool was ported to add support for parsing .ast ADPCM data.
- @VPenades, who created the SharpGLTF library used to write GLTF models.
- @Wiimm, who created the wiimms-iso-tools used to extract the contents of Wii .isos.
- @xdanieldzd, for reverse-engineering and documenting the .cmb and .csab formats. In addition, their Scarlet tool was referenced for dumping .gar files.
Not all of the models for each game are currently supported, and not every feature of each model will be accurately recreated in the output GLTF/FBX files. To flag any broken/missing models that you'd like to see fixed, please feel free to file feedback via the Issues tab above.
- J3dGraph (.bmd/.bdl) (GCN)
- Mario Kart: Double Dash (
mario_kart_double_dash.[ciso/gcm/iso/nkit.iso]
) - Pikmin 2 (
pikmin_2.[ciso/gcm/iso/nkit.iso]
) - Super Mario Sunshine (
super_mario_sunshine.[ciso/gcm/iso/nkit.iso]
)
- Mario Kart: Double Dash (
- .cmb (3DS)
- Luigi's Mansion 3D (
luigis_mansion_3d.[3ds/cci/cia]
) - Majora's Mask 3D (
majoras_mask_3d.[3ds/cci/cia]
) - Ocarina of Time 3D (
ocarina_of_time_3d.[3ds/cci/cia]
)
- Luigi's Mansion 3D (
- .dat (GCN)
- Super Smash Bros. Melee (
super_smash_bros_melee.[ciso/gcm/iso/nkit.iso]
)
- Super Smash Bros. Melee (
- .glo (PC)
- Glover (Steam)
- .mod (GCN)
- Pikmin 1 (
pikmin_1.[ciso/gcm/iso/nkit.iso]
)
- Pikmin 1 (
- .modl/.out (GCN/WII)
- Battalion Wars 1 (
battalion_wars_1.[ciso/gcm/iso/nkit.iso]
) - Battalion Wars 2 (
battalion_wars_2.iso
)
- Battalion Wars 1 (
- .vis/.xtd (PC)
- Halo Wars (Steam)
- .xc (3DS)
- Professor Layton vs. Phoenix Wright (
professor_layton_vs_phoenix_wright.[3ds/cci/cia]
)
- Professor Layton vs. Phoenix Wright (
Note:
- For GameCube ROMs, files with
.ciso
,.gcm
,.iso
, or.nkit.iso
extensions should work. - For 3DS ROMs, files with
.3ds
,.cci
, or.cia
extensions should work.
Download a release via the Releases tab (for stability), or via the green "Code" button above (for latest). Extract this somewhere on your machine.
Then, follow the steps below.
- Drop ROM(s) in the
cli/roms/
directory. Make sure their names match the corresponding name above! ( Games with brackets should accept any of the listed extensions.)
- Double-click the
launch_ui.bat
file in thecli/
directory. This will first rip all of the files from the game, and then gather the currently supported models. This can take a while on the first execution, but future executions will reuse the exported files. - The viewer will open with nothing initially selected. Navigate through the models in the left-hand column and select a model you wish to view/extract. Once selected, the model will be loaded/rendered with as close of a representation to the original game as possible.
- The model can be extracted by clicking the
icon in the top bar. It will automatically be placed relative to the
cli/out/[game_name]/
directory, in a chain of folders matching the ROM's original file structure. The model may not look exactly as it appeared in the viewer, because some material features are not supported in common model formats. - All of the models in a given directory can be extracted by clicking the
icon in the top bar. Current progress will be displayed in the status bar on the bottom while models are extracted in the background. To stop this operation, click the
icon on the right side of the status bar.
- Double-click the corresponding
rip_[game_name].bat
file in thecli/
directory. This will first rip all of the files from the game, and then the currently supported models. This can take a while on the first execution, but future executions will reuse the exported files. - Extracted models will appear within the corresponding
cli/out/[game_name]/
directory.
The tool can also be used to convert models via the command-line like so:
cli/tools/universal_asset_tool/universal_asset_tool.exe convert -i [input files] -o [output file]
Here's an example with some files from Pikmin 1:
cli/tools/universal_asset_tool/universal_asset_tool.exe convert -i chappy.mod chappy.anm -o chappy.fbx
The best plugin will automatically be detected based on the list of input files. For a list of supported plugins, use the following command:
cli/tools/universal_asset_tool/universal_asset_tool.exe list_plugins
- Both GLTF (.glb) and FBX models will be created when exporting, since each format has slightly different compatibility. FBX is generally preferred due to supporting additional UV channels, but GLTF is better supported within model viewer programs such as Noesis.
- The materials for some models are broken/incomplete due to the complexity of recreating fixed-function pipeline effects in a standalone model. These will need to be manually recreated in whichever program you import the model into.