general-101 / halo-asset-blender-development-toolset Goto Github PK
View Code? Open in Web Editor NEWCE/H2/H3/ODST JMS/JMA/ASS exporter for Blender
Home Page: https://c20.reclaimers.net/
License: MIT License
CE/H2/H3/ODST JMS/JMA/ASS exporter for Blender
Home Page: https://c20.reclaimers.net/
License: MIT License
Requesting the ability to Batch importing and automatic stashing of the JMA as Actions for users who focus on asset art.
I've been trying to model my vehicle with multiple meshes because I saw the warthog with multiple meshes
But when I export the JMS file, I come to find out that all meshes were made into one meshed named "__unnamed".
How do I stop this from happening? I'm modding for Halo CE (Custom Edition)
Importing halo 2 first person weapon animations results in errors. Other halo 2 animations seem to import fine. Animations extracted using bonobo.
I've tried setting the JMS rest positions with correct node names.
I've tried changing JMA versions.
If importing the halo 2 animation with halo ce selected on the import, only the last error message shows.
Unsure if issue with bonobo or blender plugin.
Currently we unhide all geometry before exporting permanently. This goes against the idea that the script should never modify the users scene after export. Hidden geometry needs to be ignored when exported instead of added to the list and causing an error due to inaccessible object details. There also needs to be an override that exported hidden geometry by temporarily unhiding them and then reverting to the state they were before export.
If a JMS in Halo 2 has no nodes then it can still be exported. This means that a render file or collision file can be exported with the geometry saying it has a parent at index 0 and no nodes actually in the file. Need to change the exporter to not write render or collision geometry that has no parent. Only physics as far as we know can have a parent of -1
Sometimes, If you have two Vertex Weights with a value of 1, it sometimes does not normalize when the function "Clean and Normalize Weights" is checked.
Modifiers can't be applied to linked geometry. This causes an issue where a bad JMS could be exported if an object is made up of quads but is also a linked geometry piece. The object will never be triangulated and cause issues later. Need to have a system that warns or tries to do something to the object to make it valid for modifiers without affecting the scene.
Script also errors if the geometry does not have a UV before it is linked.
If a mesh has no materials then Blitzkrieg creates a material labeled instead of giving the triangle a -1.
Add a check to see if the material is using nodes before going through the node tree
Needs more research but current results aren't proper.
Missing several features. Listed below
getting this to work in blender is being a real pain. as a beginner, i have no idea what i'm supposed to do with this, because trying to place it in the Addons folder does literally nothing.
When working on assets or maps I usually have scale references, other misc objects etc in the scene and it can get a bit tedious hiding/deleting them for every time I do an export.
Allowing the user to add a prefix/suffix symbol like "}" (or any other unused special character) to object names they want excluded from scene would make working on larger scenes/complex assets a bit more easy to manage.
I've been having some trouble importing Halo's first person animations
3dsmax GBX importer works fine, but throws some really old FBX files I can't really work with.
I am using Halo CE 1.10 files extracted with Refinery 2.3.0, I can't find anything that can extract files from MCC yet after a lot of searching.
Pistol's slider is rotated in a weird way
some issues with the wrists
tried using "fix rotations" but nothing changed
not sure if this also happened in the original engine as its hard to see with dark textures.
issue.zip
Let me know if I'm missing a step, I can't seem to find documentation on doing Halo CE assets.
What the title says
3DS Max could apparently take a selection of faces and set them to a specific region. Currently we use separate objects for this and this makes impossible for anything other than hard edges between two regions for smoothing. Region setup should instead be moved over to the new face maps systems introduced in Blender 2.83
Needs to happen before we move on to the rest of JMSv2. Everything is technically right at the moment but the object doesn't look correct in the scene when it has a parent node. Need to fix this so it both looks proper and gives the right location in the JMS file.
The value written to the file does not seem to actually matter. It's what the exporter did to the animation that matters. It seems that the original exporter messed with the length of the animation depending on the framerate selected. Need to look into how this worked exactly and see if anything can be done to emulate this in Blender.
What the title says
Editing materials' names from within the "Scene Collection" in Blender's UI does not update the name that is read upon exporting a JMS file for Halo 2 (and maybe other asset types/games, however, that's untested). A band-aid fix for the aforementioned issue you must re-edit the affected material name(s) in the "Material Properties" section in Blender's UI.
Steps To Reproduce:
The exporter currently averages smooth normals on export. However, advanced users may want the ability to export custom weighted normals, something the FBX-JMS pipeline supports. This can be used to achieve nice results in hard surface modeling with less geometry.
I propose that this be a new ASS/JMS export option grouped with the existing edge split options, but off by default because beginners will definitely shoot themself in the foot with poor normals otherwise.
What the title says
See title
Having some Proper Documentation for Installing and Updating the plugins would be very helpful for first time modders looking to get into model importing.
I know it's not a priority but it would be nice to have. ๐
Perhaps this would be better suited for C20, but I figured a request here would be appropriate as well.
Hasn't come up yet but the current method needs to be updated like how we read materials for geometry. Maybe even move all material reading to a separate function and use it where needed.
There's a bug in Halo Sky Tools that says it's looking for a list of floats and finding a color instead. I'm using Blender 2.93 on Windows 10, and I'm using the default scene with no unit measurement.
You can replicate this by using the default scene and clicking on Generate Sky.
Need to update get_matrix to get the correct parent to calculate the local position from. Currently it gets the parent whether it is a node or not.
Seeing an error whenever I try to export a .ass to Halo 3: ODST. I've tried exporting different maps to make sure it wasn't my model causing a crash. Tried looking in the Reclaimers Discord to see if someone had this issue before to no avail, can't find anything useful on Google searches either. Export results in an empty 0kb .ass file that causes a pipeline error when attempted to build a bsp through Tool.
The error:
Traceback (most recent call last):
File "C:\Users\user\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\io_scene_halo\global_functions\global_functions.py", line 1326, in run_code
toolset_exec(f"""locals()['__this_is_a_horrible_hack'] = {code_string}""")
File "C:\Users\user\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\io_scene_halo\global_functions\global_functions.py", line 1316, in toolset_exec
exec(code, globals(), caller_locals)
File "", line 1, in
File "C:\Users\user\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\io_scene_halo\file_ass\export_ass.py", line 38, in write_file
build_asset(context, filepath, version, game_version, folder_structure, hidden_geo, exluded_collections, apply_modifiers, triangulate_faces, edge_split, clean_normalize_weights, custom_scale, report)
File "C:\Users\user\AppData\Roaming\Blender Foundation\Blender\3.1\scripts\addons\io_scene_halo\file_ass\build_asset.py", line 48, in build_asset
'\n"%s"' % (getuser()) +
File "C:\Program Files\Blender Foundation\Blender 3.1\3.1\python\lib\getpass.py", line 168, in getuser
import pwd
ModuleNotFoundError: No module named 'pwd'
More info is needed to do this properly. Will look into this later.
What the title says
global_ui init.py line 979 and 980 should be swapped. Setting a light to Circle incorrectly exports it as a rectangle and vice versa.
file_ass build_asset.py lines 112 and 113 need to be swapped for falloff to work correctly
What the title says
export settings are not preserved when an export fails, nor are they preserved on blender restart
The idea currently is the to have the JMS scene properties be a saved options list for the export menu and the export menu act as an override when it is ready.
Must get location of object as if parent object's origin is 0 0 0
Must get rotation that is affected by the parent rotation
Doesn't match default JMS files at the moment.
When attempting to import a .wrl file, nothing happens. No error, no new object or mesh, nothing at all.
What the title says
Exporting design surfaces such as soft_kill as described here was broken in commit 8652fee
Setting a material name to something such as +soft_kill:kill_barrier
causes the material name to be blank in the exported .ass.
The : separator and a name are required for these materials otherwise tool will fail parsing the material name with a message such as
WARNING didn't understand material type '+soft' parsing shader name '+soft_kill'
-ERROR- unable to find shader '_kill' anywhere
Needs research
Looking at leftover JMSv2 files, sentences in the Halo 2 map editor.chm, assumptions based on the ASS exporter, and some other sources I have come to a conclusion. The original 3DS Max exporter for Halo 2 had a system that would allow the designer to designate a piece of geometry as a render/collision/physics geometry through an object symbol and the exporter would take them and write the geo in separate JMS files. A single Max file could have 3 files written from it easily without any input.
The way we write files will have to be reworked to support this.
Currently the JMS exporter errors out if there is a vertex group assigned to a vertex that doesn't exist in the node list. There isn't an easy way to get around this with the current method that vertex groups are handled. Just not reading it could ruin the order that things happen in due to poor code.
Need some type of system that loops through the vertex list and leaves only valid groups behind. Then that result is looped through until it is done or 4 slots are filled in the JMS vertex definition.
Look into a fix for this
Currently we only check if the object has no materials at all before assigning -1 or None. No fail safe is in place if the object has materials but has a set of faces with no materials. Assign -1 or the None material to these faces.
These changes must be ported over to the ASS script at a later point.
I want to export my Ass files separately and keep them in one blend file. It would help with level design if I could export only the selected object as an ASS.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.