Users browsing this thread: 5 Guest(s)
[TUTORIAL] Disney Infinity Model Ripping
#1
Hello, I have had a few people message me from The Models Resource asking about how to extract models from Disney Infinity.
Back in the day i did some models from DI3.0, they were denied approval because the textures were in DDS and not png so they werent uploaded and people want them, this was a few years ago and so i dont have them anymore and cant be bothered to go and do it again, and i noticed there isnt a very concise tutorial on how to do it, and im also tired of getting messages about it, so i decided to do the less time consuming option, hello, welcome to my tutorial!

Heres What you'll need
  1. Disney Infinity 3.0 (I suppose this will work for 1.0/2.0 aswell but im using 3.0)
  2. TaylorMouse's 3D Model Viewer
  3. Aluigi's QuickBMS
  4. The Accompanying Disney Infinity Script for QBMS
  5. Nvidia's Windows Texture Viewer
  6. Several buckets worth of time
Step 1: Navigate to your Disney Infinity folder in \Program Files (x86)\Steam\steamapps\common\-Whichever Disney Infinity Game You're on here-

Step 2: go into the "assets" folder and find the two folders marked "characters" and "textures" and copy them to your desktop.

Step 3: Open quickBMS and load the DI script, find whichever character's folder you want and open it, find the corresponding file (it should be marked as a .Zip file, its not a Zip file your computer is just stupid.)

Step 4: Extract the file to wherever you want, i recommend making a separate folder on the desktop to house your extracted models.

Step 5: Open TaylorMouse's 3D Model Viewer and navigate to the extracted folder, open the file marked (char'sname).ibuf, click the button in the model viewer marked "Export .OBJ"

Please note that TaylorMouse's 3DMV doesnt work for some models, its not my fault nor his/hers its due to Disney adjusting the way the files are structured for later addon content (I believe) so later DLC characters will likely not work, The Force Awakens and some Marvel content will come out broken! You could use HextoOBJ but i dont know how that works nor am i willing to learn and explain it here!

Step 6: Re-Open the QuickBMS script and navigate to the textures folder you previously copied to the desktop.

Step 7: Select all the "Zip" files inside and start the extraction process over again.

Step 8: Take a break man, you deserve it and this'll take a few mins.

Step 9: Copy this script into a text document and save it as "rename.bat"
@echo off

ren *.tbody *.dds


Step 10: Begin the soul crushing process of renaming all the textures, copy-paste the rename.bat file into the each folder created by the BMS script where the .tbody files are located, the script will rename them all to .dds as they are just renamed .dds files.

Step 11: Using Nvidia's WTV, navigate to the folders after running the renaming scripts and begin to search for the textures you require, they are all named with random gibberish and not in any logical sorting whatsoever so be prepared to find Mickey's texture file in folder 1 and his bump map in folder 300, and you will understand why this is so annoying to do.

Step 11.1: Theoretically you could just dump the textures with something like Ninjaripper, but I've not tested that and i don't know if it works.

Step 12: From here you shouldn't need more instruction, y'all know how models & textures work, do some porting, put that shxt in GMOD, idk.
Thank you for coming to my TED talk. Wink
Reply
#2
Great tutorial! Just want to add you can replace steps 9 and 10 with something WAY simpler. Instead of creating a batch file and copying it to every single folder, go to the parent folder that contains all the texture folders created by the BMS script, hold shift and right click in the file explorer. Click "Open PowerShell window here". If it says "Open command window here" instead, click that, type in "powershell" (no quotes) and hit enter. Finally, copy, paste, and hit enter on the following command:

Get-ChildItem -File -Recurse | % { Rename-Item -Path $_.PSPath -NewName $_.Name.replace(".tbody",".dds")}

which will automatically rename all .tbody files to .dds. No more soul crushing required (unless you are masochistic).
Reply
Thanked by: Nomad_Ocean12
#3
This should help with step 11. Create a PS1 file containing the following script. This searches the MTB file for references to textures files, then copies those files into a folder for you. In my test I did Bob from the Incredibles. It found 6 textures in less than a second. Should remove any annoyance in finding your textures. When you run that script from a PowerShell window you will be asked for 3 paths.
  1. The path of the MTB file extracted back in step 4.
    example: C:\temp\characters\spd_spiderman\spd_spiderman.mtb
  2. The extracted and renamed texture archive root directory created in Step 8-10 (I recommend using the method patrickmollohan suggested for renaming the files to DDS.) 
    example: C:\temp\textures
  3. The path of you are saving extracted files for this character, or where you want to put copies of the texture files used by this character. 
    example: C:\temp\characters\spd_spiderman\extracted

This is a quick and dirty brute force script, it could be cleaned up/made more efficient but the MTB files are so small its not really worth the time to do that. 

Code:
$MTB = read-host "MTB File Path"
$TArchive = read-host "Texture Archive Root Directory Path"
$SavePath = read-host "Location To Save Texture Files"

$filename = ""
$OFFSET = 0
$CYCLE = 1
$GTZ = 0
$DDS = @()

If (!$MTB) {
    Write-Host "ERROR - MTB FILE NOT FOUND!"
}ELSE{
    $spd = get-content $MTB -encoding byte
    while ($CYCLE -lt 9) {
        foreach ($byte in $spd) {
            if ($OFFSET -lt 7) {
                $OFFSET++
            }ELSE{
                $GTZ++
                $Hex = ‘{0:x}‘ -f $byte
                if ($HEX.length -lt 2) {$HEX = "0"+$HEX}
                $filename = $filename + $Hex
                if ($GTZ -ge 8) {
                    $filename = $filename + ".dds"
                    $SPC = $filename.Substring(0,2)
                    $Tpath = $TArchive+"\"+$SPC+"\textures\"+$filename
                    if (Test-Path -path $Tpath) {
                        $DDS += $Tpath
                        $filename
                    }
                    $GTZ = 0
                    $filename = ""
                }
            }
        }

        $OFFSET = $CYCLE
        $GTZ=0
        $CYCLE++
    }
    $OUTPUT = $DDS | select -Unique
    Foreach ($File in $OUTPUT) {Copy-Item $File -Destination $SavePath -Force}
}
Reply
Thanked by: Nomad_Ocean12
#4
Hello, I tried to use the Script but it didn't work I just got red letters, I don't know if I'm doing something wrong Sad it's my first ripping haha
Reply
Thanked by:
#5
Do the models come with rigging?
Reply
Thanked by:


Forum Jump: