A Community discussion forum for Halo Custom Edition, Halo 2 Vista, Portal and Halo Machinima

Home  Search Register  Login Member ListRecent Posts
  
 
»Forums Index »Halo Custom Edition (Bungie/Gearbox) »Halo CE General Discussion »Fudd Shader Tool and JMS+

Author Topic: Fudd Shader Tool and JMS+ (11 messages, Page 1 of 1)
Moderators: Dennis

DeadHamster
Joined: Jun 8, 2014


Posted: May 5, 2017 04:36 PM    Msg. 1 of 11       
Update


1.1 Update

The update allows you to choose not to export a .JMS, saving loads of time. It also now supports non-recursuive compositetexturemaps, and will extract the names of diffuse maps, detail maps and bump maps, writing them all to the shader environment tag.

You can also now edit the names of any shaders or bitmaps by writing in the dropdown boxes. This will not modify the original .HMP file, but when you export to shaders the changes will take effect. You still need to match the names of the bitmap tags you've created, and the shader names in the .JMS file. The edit feature is designed to correct mistakes or to remove shader symbols like render-only or two-sided (!, #, $, etc.)



Overview
This is a two-piece software that allows exporting of shader names and accompanying diffuse map names from 3DS max, which are then compiled into shader_environment tags. This means you no longer have to manually setup all your shaders before importing your BSP or other geometry into Halo.

The first piece is an update to the maxscript BlueStreak JMS exporter, which is now called JMS+. This update exports material name and diffuse bitmap filenames to an external text-based file format (.HMP). This is a direct derivative of 1.0.3, and does not modify the marker_size as another 1.0.4 version did.

The second piece is the Fudd Shader Tool, which creates Halo-format shader tags from user-entered information and the exported .HMP files.





The Download should include;

Fudd Libs > AppearancePak.dll
Fudd.exe
JMS+.ms
senv.fud



Setup:

The 3D model must be setup in a way that is bluestreak exportable (multi-material linked to "FRAME"), and any shader that isn't +sky should have a diffuse map or be removed before exporting the material format. The .HMP material format is independent of the .JMS file and they do not need to match in order to compile the shaders inside the .HMP material list. You do not need to use JMS+ to export your geometry for it to be compatible with the shaders exported by Fudd.


Brief Tutorial



Open your geometry in 3DS max, and run the included JMS+.ms maxscript file.

Make sure that "Export a Fudd Material" is selected, and click Export Data. You will first be asked to save the .JMS file, and then will be asked to save a .HMP file. The .HMP file is the format Fudd uses to save the shader and bitmap names (an extremely basic text format.)

Once this has saved, copy all of the bitmaps into a single folder, and compile them with TOOL.EXE.

Once these have been compiled, open the Fudd.exe program, and select the three folders it requires. Tags is your TAGS folder, Bitmaps is where you saved the compiled bitmap tags(needs to be a single folder), and Shaders is where the shader_environment tags will be exported to.

After selecting the 3 paths, hit the button to load your HMP file. All the shaders and bitmaps will be loaded into the boxes below. You can select any shader in the map and reassign the bitmap it uses with the dropdown menu. This will not save to the .HMP file, but will allow you to correct or change any diffuse maps to other shaders.

Once you're satisfied, hit the Compile button. This will save the .shader_environment tags to the folder you selected for shaders.





Known "Bugs" or Important Info:


Only the +sky material can lack a diffuse map, all other shaders must have one or the JMS+ export will fail.

You can type the tag paths into the text boxes instead of using the buttons, but be CERTAIN that the last character is a \ . "D:\halo\tags\" is good, "D:\halo\tags" will cause a filename/filepath bug.

The Fudd program will not overwrite existing shaders, and may crash if it tries to export to a directory where a shader file of the same name exists. It should skip them, but may crash.

The Fudd program currently only supports the .shader_environment format, but will be updated at later dates to include other types. The JMS+.ms plugin will not need updates to support other formats.

JMS+.ms no longer supports GMAX, and the GUI has been streamlined to remove superfluous or outdated elements.



Other

Credit to CtrlAltDestroy and TheGhost for the JMS exporter I modified, credits to Moses of Egypt for documents on shader info which, while not used in this version, will be used to add further shader support in future updates.

This software is in an extremely early phase and no guarantees can be made about the stability of it's code. Please report and errors or unusual behavior to this thread so that updates can be made.









Old Version Download
Edited by DeadHamster on May 9, 2017 at 06:19 PM


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: May 5, 2017 08:01 PM    Msg. 2 of 11       
Woah!

This literally came out of nowhere. Thanks a billion fam!


cippozzo
Joined: May 7, 2013

"I... I am a monument to all your sins."


Posted: May 6, 2017 08:09 AM    Msg. 3 of 11       
Is there a jms exporter for blender?


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: May 6, 2017 08:46 PM    Msg. 4 of 11       
Quote: --- Original message by: cippozzo
Is there a jms exporter for blender?



@Fulsam


Fulsam
Joined: May 11, 2008

Importing Didney.wrl...


Posted: May 6, 2017 09:03 PM    Msg. 5 of 11       
Quote: --- Original message by: Super Flanker
Quote: --- Original message by: cippozzo
Is there a jms exporter for blender?



@Fulsam


As of now, for this particular tool, no. I will look into porting it ASAP, though (If the OP's cool with it).


DeadHamster
Joined: Jun 8, 2014


Posted: May 6, 2017 09:30 PM    Msg. 6 of 11       
Quote: --- Original message by: Fulsam
Quote: --- Original message by: Super Flanker
Quote: --- Original message by: cippozzo
Is there a jms exporter for blender?



@Fulsam


As of now, for this particular tool, no. I will look into porting it ASAP, though (If the OP's cool with it).


.HMP format is very simple;

(shadercount)|(shader name)|(bitmap name)|(shader name)|(bitmap name)|...etc


Those are vertical lines for seperators


Nickster5000
Joined: Dec 11, 2010

Sector 09 RR: 2017


Posted: May 9, 2017 02:15 PM    Msg. 7 of 11       
👌👌👌

This is great. I will definitely take a look at this, it will be very useful!


DeadHamster
Joined: Jun 8, 2014


Posted: May 9, 2017 06:20 PM    Msg. 8 of 11       
Quote: --- Original message by: Nickster5000
👌👌👌

This is great. I will definitely take a look at this, it will be very useful!



Well, if you do use it, use version 1.1 that I just updated the OP with. It properly supports non-recursive compositetexturemaps, and also compiles detail maps and bumpmaps to the .shader_environment if they're available in the 3DS Material.








Edit:
With the update, the .HMP format has changed;


Shader_Count|Shader_Name|DiffuseTexture:DetailTexture{BumpTexture|Shader_Name|etc...


So, a shader will always be followed by a |, after which is always the diffuse map. Then, if next character is a : we know to add a detail map, if it's a { we add a bumpmap. If there is a detail, we have to check for a bumpmap again after. Bumpmaps will never be written before detail maps.

If at any point we hit another |, we know to go to the next shader.





Edited by DeadHamster on May 9, 2017 at 06:26 PM


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: May 10, 2017 07:30 AM    Msg. 9 of 11       
Bump for good stuff in the future.


sparky
Joined: Jun 27, 2009


Posted: May 10, 2017 06:39 PM    Msg. 10 of 11       
I like that you recognized a need and worked to aid it. Are you doing this in RealBasic?


DeadHamster
Joined: Jun 8, 2014


Posted: May 10, 2017 08:00 PM    Msg. 11 of 11       
Quote: --- Original message by: sparky
I like that you recognized a need and worked to aid it. Are you doing this in RealBasic?


The Mombasa BSPs have 70+ shaders each, the newest one from H3ODST had 90 materials in 3DS max. Manually referencing the bitmaps to 90 different shaders is a nightmare.


I have other similar apps, all of them are fairly minor and wee made to automate tedious tasks. one of them renames tags inside a mapfile by adding a directory before them. So by selecting HAMP!, weapons\pistol\pistol becomes HAMP!\weapons\pistol\pistol

And when I extract, HAMP! will be the folder with all the tags in it. That way if you're ripping content from tons of maps, you'll be able to keep it better organized without cluttering up the main TAGS folder with VKMT, CMT, ZTEAM, HALO3, H3, HALO 3, etc.






Fudd and nearly all my desktop applications are all coded in RealBasic. It's the only language I truly know well, it allows me to compile to PCs or Mac or even Linux with the same set of code, and I can design my GUI inside the editor's GUI; I drag and drop a dropdown box onto the program window, and then resize it just like Layers in Photoshop.

JMS+ is, of course, Maxscript.





Edit:




Haven't started testing yet but the base code should support adding a default cubemap that will be used across all shaders, and also support writing to a shader_model format instead of only shader_enivornment.

If you select either shader type before loading the .HMP, all the materials will default to that shadertype. They can then be manually set later on and the app will determine which type to create during compilation.
Edited by DeadHamster on May 17, 2017 at 04:19 AM

 

 
Previous Older Thread    Next newer Thread





Time: Mon May 29, 2017 11:13 PM 172 ms.
A Halo Maps Website