07-14-2019, 08:44 AM
08-07-2019, 01:20 AM
Hello. I've been trying to export some models and animations from Mario Hoops 3-on-3. When I view the NDS file in Console Tool I get this:
So I can see some compressed bmd and bca files which I assumed were the models and skeletal animations. And note that the "c00" folder goes up to "c21" which makes sense as there are 21 playable characters in the game. But anyway as a result I tried to extract them using Apicula but I ended up with this (ignore the red)...
To make sure I was doing things correctly I tried another game and it worked perfectly fine. And after reading this page it says that Apicula can decompress LZ77 files. Are they different from the above LZ7?
Hopefully someone can help, ty!
So I can see some compressed bmd and bca files which I assumed were the models and skeletal animations. And note that the "c00" folder goes up to "c21" which makes sense as there are 21 playable characters in the game. But anyway as a result I tried to extract them using Apicula but I ended up with this (ignore the red)...
To make sure I was doing things correctly I tried another game and it worked perfectly fine. And after reading this page it says that Apicula can decompress LZ77 files. Are they different from the above LZ7?
Hopefully someone can help, ty!
08-08-2019, 12:05 AM
Is there anyway you could change this to export with z axis up? or add the ability to choose? also perhaps a convert to smd option as there are smd importers for 3dsmax and blender and those can support texture animations. thank you so much for this tool.
08-14-2019, 01:24 AM
It'd be easier to change coordinate conventions as a separate step outside of apicula I think.
How do materials work in .smd? The Blender addon only imports/exports material names, not any textures or stuff.
How do materials work in .smd? The Blender addon only imports/exports material names, not any textures or stuff.
09-14-2019, 12:34 PM
I got rejected on the Kawashima model I sent to you, along with the rest of the models of that game
01-14-2021, 03:47 PM
(05-20-2017, 10:32 PM)Inferry Wrote: [ -> ]So the FBX does indeed break the armature, and sadly due to the way blender handles animations I couldn't find a way to pass them to the armature of the *.dae (the nice one) without screwing the animation itself.Hi! I've got my dae file and made my script but I can't seem to get it working. Could you maybe provide a step by step tutorial? I'd appricate it very much!
So I ended writing and learning a phyton script that separates each *.dae file into several ones, each containing one of the animations in the original file, I only have to import each file individually and merge the animations into one single library, some require editing due to the extra frame they come with but that's not my fault, that's how they were, to begin with.
Anyway, here's the code for anyone interested, copy and paste it into a text file and change the extension to ".py", you'll need python2.7 for it to work
Code:import sys
import xml.etree.ElementTree as ET
import copy
ET.register_namespace('', "http://www.collada.org/2005/11/COLLADASchema")
my_file = sys.argv[1]
tree = ET.parse(my_file)
root = tree.getroot()
ns = {'d': 'http://www.collada.org/2005/11/COLLADASchema'}
library_animation_clips = root.find('d:library_animation_clips', ns)
library_animation_clips_copy = copy.deepcopy(library_animation_clips)
library_animations = root.find('d:library_animations', ns)
library_animations_copy = copy.deepcopy(library_animations)
def libraryClear():
for child in library_animation_clips.findall('d:animation_clip', ns):
for child in library_animation_clips.findall('d:animation_clip', ns):
library_animation_clips.remove(child)
for child in library_animations.findall('d:animation', ns):
library_animations.remove(child)
return
libraryClear()
i = 0
for child in library_animation_clips_copy:
library_animation_clips.append(child)
att_id = child.get('id')
att_name = child.get('name')
file_name = att_name + ".dae"
for joint in child:
library_animations.append(library_animations_copy[i])
i = i + 1
tree.write(file_name, encoding="utf-8", xml_declaration=True)# <?xml version="1.0" encoding="utf-8"?>
libraryClear()
I only tested it with three files, is not optimized and there is probably a better way to do this, but the thing works and is enough for me (although if you think it can be improved let me now to change what's needed).
Use the command line and pass the file as an argument
daesplitter.py <file>
or make a bat with this ("c:\Python27\python.exe" daesplitter.py %1), and drag and drop the file onto the bat.
And I was unable to make a test on Maya or 3Dmax due to the fact that 64 exclusive nowadays.
03-19-2021, 04:28 AM
By the way, I haven't been working on apicula lately, but I did make a different way to rip DS models: MelonRipper. This works more like Ninja Ripper or Lemmy's N64 Plugin, where you play in an emulator (melonDS) until the model is on screen, then press a key to dump the whole scene drawn that frame to a file. There's an accompanying Blender addon that imports the dump file.
This has a different set of tradeoffs than converting .nsbmds. You only get a static scene this way, but it works for anything you can find in-game, even stuff that doesn't use .nsbmd or is hard to convert.
Example with Rayman 2:
The instructions are all in the Github link. You have to compile a patched melonDS but after that it's pretty easy to use.
This has a different set of tradeoffs than converting .nsbmds. You only get a static scene this way, but it works for anything you can find in-game, even stuff that doesn't use .nsbmd or is hard to convert.
Example with Rayman 2:
The instructions are all in the Github link. You have to compile a patched melonDS but after that it's pretty easy to use.
04-10-2021, 04:25 AM
(03-19-2021, 04:28 AM)scurest Wrote: [ -> ]By the way, I haven't been working on apicula lately, but I did make a different way to rip DS models: MelonRipper. This works more like Ninja Ripper or Lemmy's N64 Plugin, where you play in an emulator (melonDS) until the model is on screen, then press a key to dump the whole scene drawn that frame to a file. There's an accompanying Blender addon that imports the dump file.Say, this tool errors out if you do a dump of spirit tracks. Like, blender says "python int too large to conver to C int"
This has a different set of tradeoffs than converting .nsbmds. You only get a static scene this way, but it works for anything you can find in-game, even stuff that doesn't use .nsbmd or is hard to convert.
Example with Rayman 2:
The instructions are all in the Github link. You have to compile a patched melonDS but after that it's pretty easy to use.
04-10-2021, 11:13 PM
Can you give me the full backtrace?
04-11-2021, 09:09 PM
This is the error.
04-11-2021, 09:39 PM
Thanks for finding that! I pushed a fix. If you reinstall the addon it should work now.
04-11-2021, 10:11 PM
(04-11-2021, 09:39 PM)scurest Wrote: [ -> ]Thanks for finding that! I pushed a fix. If you reinstall the addon it should work now.That works! But a few issues:
The Spirit train in the intro is shaded wrongly. IIRC, this was an issue that plauged older emulators, so your tool seems to reflect old issues.
It should be like this (Ignore zelda and link)
04-11-2021, 10:35 PM
Okay, the train is using toon mode. I'll have to dump some more data from melonDS but I don't think it should be too hard to do...
04-12-2021, 02:42 AM
Toon shading is working!
You'll need to update both the melonDS branch and the Blender addon this time. This scene also had a texture bug that got fixed.
You'll need to update both the melonDS branch and the Blender addon this time. This scene also had a texture bug that got fixed.
04-12-2021, 04:34 AM
(04-12-2021, 02:42 AM)scurest Wrote: [ -> ]Toon shading is working!
You'll need to update both the melonDS branch and the Blender addon this time. This scene also had a texture bug that got fixed.
Nice! Thanks for the quick fixing!
(04-12-2021, 04:34 AM)Zeldaboy14 Wrote: [ -> ]Update: The option for dumping is not there in the new build(04-12-2021, 02:42 AM)scurest Wrote: [ -> ]Toon shading is working!
You'll need to update both the melonDS branch and the Blender addon this time. This scene also had a texture bug that got fixed.
Nice! Thanks for the quick fixing!