Sunday, July 16, 2023

How to extract 3D models from Nintendo 64 games to use as basis for a new papercraft model!


This won't be the first Nintendo 64 papercraft I'll be making of course, but I never made an N64 3D model extraction tutorial yet. Before, if somebody wanted to know, I just pointed them in the direction of one of the many (usually better and more extensive) tutorials available already that you can easily find on all kinds of forums and even as videos on Youtube! 🙂

Now I want to add my own Nintendo 64 game model extraction tutorial to my papercraft weblog though, because of course that's why I'm extracting a 3D model from an N64 game: to make new papercraft.

And ironically not even from Ocarina of Time or Majora's Mask as you might expect if you know the papercrafts I made before (although this extraction method is exactly the same for all N64 games) but from Turok: Dinosaur Hunter. 😊



◾ GETTING STARTED: DUMPING ROM FILES FROM YOUR N64  GAMES (Retrode 2 with N64 plugin)


- If you've read my previously video game model extraction tutorials then you already know step 1: you need to get the game files onto your computer so you can work with them.

- Because Nintendo 64 games were released on N64 game cartridges, you will need a device like the Retrode 2 cartridge dumper with the separate N64 plugin to connect the game cartridge to your computer.

- When you insert a Nintendo 64 cartridge, the Retrode 2 recognize the games on the as a .Z64 ROM file that you can then simply copy to a New folder on your hard disk.


NOTE: There is not a lot of demand for devices like the Retrode 2 and the plugins, so not many are made in each batch. The Retrode 2 is often out of stock for lengths of time in webshops, so you might need to wait a long time before the Retrode 2 becomes available again if at all if you want to get one, or look for an alternative similar device to dump your own ROM from your N64 games.



◾ EXTRACTING THE 3D GAME MODEL (Project64 3.0.1. + Lemmy's LemD3D9 r22 graphics plugin)

- Now that you have the .Z64 ROM file on your computer, you can enjoy playing old N64 games on your modern computer using a Nintendo 64 emulator - and that's exactly what you will have to do for this extraction method. 😊

- The emulator that I have been using for as long as I can remember is Project64, but there are many others that you can use pretty much the same way.

- For Project64, you can download a standalone ZIP-version (that you don't even have to install) here:


NOTE: Since the version 2.0 release I think, the Project64 creator added a pop-up prompt that delays starting the emulator for 30 seconds unless you buy a Notification Code to support his work. Whether or not you want to buy the code, just deal with the 30 seconds delay or choose a different emulator is up to YOU of course!

- Besides a Nintendo 64 emulator, you will also need a specific graphics plugin that will do the actual extraction to use with the emulator: Lemmy's LemD3D9 r22.

- You can download the plugin from the #2 post from June 11, 2016 in Lemmy's old thread about his plugin on the EmuTalk forums:

NOTE: You will have to register on the EmuTalk forums to download attachments there like Lemmy's plugin. It's free to do so, but if you don't want to do so, you can also find Lemmy's plugin on other websites if you search around a bit online (make sure it's the right LemD3D9 r22 version!)



- Once you've downloaded the emulator and Lemmy's graphics plugin, you'll have to set up the emulator to use it.

- In the case of the standalone Project64 emulator, unpack the ZIP file first: inside will be the Project64.exe file and three different folders, one of which is called Plugin with folders for Audio, GFX (graphics), Input (controller) and RSP (Reality Signal Processor) plugins.

- Now unpack the ZIP file with Lemmy's LemD3D9 r22 plugin, and copy the LemD3D9.dll plugin file in Project64's Plugin -> GFX folder.


- Now start the project64 emulator by double-clicking the Project64.exe file and a popup will ask you what language you want to use for the menus and options in the emulator.

- The pop-up will also ask you in what Game Directory it should look for games to play: click the button with the three dots ... to browse to the location where you copied the ROM files that you dumped from your N64 game cartridges.

- Finally, it will also ask you what default Video plugin Project64 should use: choose - GlideN64 - For modern PC if you're using a modern PC.

- Click OK, and (after waiting 30 seconds if you didn't buy the Notification Code) you will see that the emulator found the LemD3D9 r22 plugin, and in my case the Turok - Dinosaur Hunter ROM that I dumped from my Nintendo 64 Cartridge. 😊


- We're still not done setting up the emulator to extract 3D models though: we still have to tell the emulator to use the LemD3D9 r22 graphics plugin instead of the GlideN64 one.

- Open the Options menu and choose Configuration (or use the CTRL+T shortcut key combination).

- Choose the Plugins options from the list, and under the Video (graphics) plugin setting, choose the Nemu64 Graphics option (combine debug) from the pulldown list (the LemD3D9 r22 is called that in there) and confirm your choice by clicking OK.

- (now is also the time to change the controls in the Options ->  Input settings so you know what buttons you need to press to play the game! 😉)


- Not so fast, though: BEFORE finally starting the game make a New, empty folder called VRML on your C: hard disk (because that's where Lemmy's plugin will export the 3D output file and all the textures used in the captured 3D file, so you need to make sure that folder is actually there).


- Now you can *finally* start playing your Nintendo 64 ROM game by doubleclicking the game in Project64's starting window (for real this time).

- Play the game until the 3D character or object that you want to capture is on the screen  and then (if you didn't set the emulator to use Lemmy's graphics plugin yet do it now first!) and then choose Options -> Graphics Settings.


NOTE: In Project64 you can pause the game by clicking F2 so that you can take all the time you want to open the Graphics Settings. 😉

- In the Graphics Settings, there will be all kinds of settings for the LemD3D9 r22 plugin (called the Nemu64 Graphics (combine debug) here), but the one we're interested in is the Export VRML option: place a checkmark next to that option and click OK.

- Now normally, when you return to the game, Lemmy's plugin will immediately start exporting the 3D scene but if you paused the game, you will have to unpause it by pressing F2 again (the game has to be running for the capturing the 3D data).

- While Lemmy's plugin is capturing the 3D scene, the game will severly stutter and slow down almost to a halt; but luckily on modern computers the capturing process takes less than a second.

- So after a second or so, you can go back to the Graphics Settings to uncheck the Export VRML option again so the game returns to a normal speed and you can continue playing the game, or close the emulator and see what Lemmy's plugin captured! 😀

NOTE: The GlideN64 is the better option for actually playing games in the emulator, and you can just switch the Graphics plugin to Lemmy's plugin whenever you want and you're at a point in the game where you want to capture any 3D models on the screen.

- To check if the extraction process was successful, check the C:\VRML folder you created a moment ago.

- If the capturing went okay, you will see an output.wrl file (the 3D scene) and a whole bunch of .bmp image files (the texture images used in the captured scene).




◾ CONVERTING THE EXTRACTED 3D VRML file (Blender)

- Pepakura Designer (the program that I use to actually unfolds the 3D objects into papercraft parts) isn't compatible with .wrl files (and you'll see there are actually a lot of 3D objects you probably don't need for making your papercraft anyway).

- You can use the free Blender Program to convert the .wrl file into a Wavefront (.obj) file, and you can download a portable ZIP version that you don't even have to install here:


- Unpack the ZIP file and start the Blender program by double-clicking the blender.exe file.

- Delete the standard cube and choose File -> Import -> X3D Extensible 3D (.x3d/.wrl)

- Browse to the C:\VRML folder and import the output.wrl file that you captured using Project64 and Lemmy's plugin.

- You'll see that the entire scene has been captured, and not just Turok itself

- I always find it easiest to delete the objects I don't want later, so for the moment choose File -> Export -> Wavefront (.obj) and save the entire 3D scene as an .obj file (that you can open in lots more 3D programs like the free version of Metasequoia that I like to use) in the C:\VRML folder again.



- When opening the .obj file in Metasequoia, make sure to place checkmarks next to following OBJ Import options:
  • Flip right and left faces (this makes sure the imported 3D model isn't mirrored)
  • Invert faces (this makes sure the imported 3D model isn't inside out)
  • Invert V of mapping (this makes sure the texture images on the imported 3D model aren't upside down)
  • Join closed vertices (this makes sure the separate polygons are connected together as much as possible into combined pieces)

- If you saved the exported .obj file in the C:\VRML folder with all the captured .bmp texture images, they will automatically be applied in Metasequoia (otherwise you will have to do this manually in the Material Panel which you can open using the Ctrl+M shortcut keys, and there are *a lot* of them, even double ones!)

- You will see that the 3D file has a lot more objects than needed; to get rid of those you can just use the Select (S) -> Joined face, Rectangle (R) or Rope (G) selection commands, select all the objects that you don't want and press Delete.


- Once you're done with that, you can clean up the 3D file further by clicking the Misc button in the Material Panel (Ctrl+M) and choose the Delete unused material option.

- This will get rid of all the materials (textures) that are no longer used in the 3d model now that you deleted large parts of it.

- The Material list will be shorter, but still quite long, and there will still be double materials. But that is something you can sort out while editing the 3D model to make it into a papercraft model.


Stay tuned! 😉



NOTE:
This 3D game model extraction method works by having Lemmy's LemD3D9 r22 plugin capture every 3D model as it appears on the screen in the emulator when you tell the plugin to export the 3D data in the Graphics Settings.

Usually that is exactly what you want, but in 3D shooters you normally only see the player character's hand (holding a weapon 😋) on the screen and the rest of the character is not rendered in the game to save on computing power. That means the rest of the player character won't be captured during regular gameplay... :o( 😟

Luckily, the player characters are usually visible in a 3D cutscene at some point in the game: Turok for example is shown shooting his bow right in the opening animation before the game starts, so that's the moment I captured.



Tools used:
- Retrode 2 + N64 plugin (originally by Matthias Hullin and later licensed by DragonBox): https://dragonbox.de/en/cartridge-dumper/retrode2.html

- Project 64 3.0.1. (by Zilmar and others): https://www.pj64-emu.com/public-releases


No comments:

Post a Comment