JeanxPereira Posted January 18 Share Posted January 18 (edited) Hello! I'm delving into the BMDL format from the Darkspore game, which encompasses 3D elements like meshes, and potentially bones and animations. This format appears to share similarities with SPORE's GMDL, both from RenderWare engine, though BMDL is from a more recent version. the original game is dead, EA abandoned the game by closing the servers, but it is still possible to download the game via steam with a link, despite being named as Demo, inside the folder the game is complete with all files. I believe that the engine used to create Darkspore is the same as that of SPORE, because their files are very similar from the outside (.package and folders). Using a software to create SPORE mods by emd4600, I was able to extract the Darkspore .package files, however it only supports files used in SPORE (like .gmdl) and .bmdl is not included. There is broader support for GMDL thanks to developer emd4600, who focuses on SPORE files: https://github.com/emd4600/SporeModder-Blender-Addons Meanwhile, BMDL has limited support, with an old Blender script by emd4600, effective only for some BMDL files: https://raw.githubusercontent.com/JeanxPereira/BMDL-Importer/main/bmdlImporter_new.py I've made modifications to the script with ChatGPT's help to enhance compatibility with BMDL files: https://raw.githubusercontent.com/JeanxPereira/BMDL-Importer/main/BMDL-Importer_2.8.py These changes aim to identify 3D meshes (vertices, faces, points, normals) in the file. However, the absence of a clear pattern in BMDL's operation hampers progress. Unfortunately, I don't have extensive knowledge in Reverse Engineering. here have some bmdl files for example: https://github.com/JeanxPereira/BMDL-Importer I'm grateful in advance for any help and insights on reverse engineering this format.🙂 Edited January 18 by JeanxPereira Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted January 18 Engineer Share Posted January 18 (edited) Hello. The bmdl mesh format appears to be simple. I'm pretty sure we solved this on former xentax already. (You won't expect someone to dig into gmdl py scripts, would you?) Edited January 18 by shak-otay 1 Link to comment Share on other sites More sharing options...
JeanxPereira Posted January 19 Author Share Posted January 19 (edited) 14 hours ago, shak-otay said: Hello. The bmdl mesh format appears to be simple. I'm pretty sure we solved this on former xentax already. (You won't expect someone to dig into gmdl py scripts, would you?) Nice! Is it possible to establish a standard for exporting these meshes? For example, this model is one of the few I can't handle; it seems to have bones and animations, which prevents me from obtaining the meshes: https://github.com/JeanxPereira/BMDL-Importer/raw/main/creatureeditor_el_anime_arm.bmdl I couldn't find anything about these models on the internet. I even created a post on Xentax, but received no response. Sorry, I thought that perhaps the GMDL script would be useful. Edited January 19 by JeanxPereira Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted January 19 Engineer Share Posted January 19 I don't see why 8k of unknown data should be a hurdle? 1 Link to comment Share on other sites More sharing options...
JeanxPereira Posted January 21 Author Share Posted January 21 (edited) On 1/19/2024 at 11:06 AM, shak-otay said: I don't see why 8k of unknown data should be a hurdle? that is incredible, with this information it gave me a good path to follow and maybe try to create a script to convert this files thank you! you are the best Do you have any idea how to interpret bones in files like this? Edited January 21 by JeanxPereira Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted January 22 Engineer Share Posted January 22 (edited) It's almost always the same procedure: search for the bone names (at 0xCD830 here), find the hierarchy table (block of numbers where the highest ones are bone count and FFFF= -1), find the matrices. Once you have the 3 start addresses put them into SkelFinder from Durik or use the tool from Bigchillghost. Edited January 22 by shak-otay 2 Link to comment Share on other sites More sharing options...
Engineer Durik256 Posted January 22 Engineer Share Posted January 22 (edited) edir: [omg I forgot that if the name length is specified as -1 then the line will be read until the first zero byte, so I now just added a [TO ZERO] type for the same thing. е_е] Edited January 22 by Durik256 2 Link to comment Share on other sites More sharing options...
JeanxPereira Posted January 22 Author Share Posted January 22 1 hour ago, Durik256 said: edir: [omg I forgot that if the name length is specified as -1 then the line will be read until the first zero byte, so I now just added a [TO ZERO] type for the same thing. е_е] nice!! excellent tool within the file is it necessary to locate a block that contains weights information? Link to comment Share on other sites More sharing options...
Engineer Durik256 Posted January 22 Engineer Share Posted January 22 (edited) 4 hours ago, JeanxPereira said: weights information? attrb: VERT 12 as [3 FLOAT] UNK 8 UVS 8 as [2 FLOAT] COLOR? 4 WEIGHT 16 as [4 FLOAT] BONEID 4 as [4 UBYTE] *also invert bones matrices Edited January 22 by Durik256 2 Link to comment Share on other sites More sharing options...
JeanxPereira Posted January 23 Author Share Posted January 23 (edited) . Edited February 10 by JeanxPereira Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now