Author Topic: Corona to GLB  (Read 1504 times)

2024-09-07, 13:45:57

James Vella

  • Active Users
  • **
  • Posts: 612
    • View Profile
Corona Vray to GLB is a free script that converts either Corona Physical or Vray Materials to GLTF Materials. This is designed for the Metal PBR Workflow.
Download here
(For those not used to github, once you press on this link, top right corner press the three dots "..." and press Download)

Install:
- Drag the script into your 3dsmax viewport.
- Customize > Customize User Interface > Toolbars > Category: Vella > Automate CoronaVrayToGLB
- Drag this toolbar button somewhere in your UI/Toolbars

Supported textures:
- Diffuse/Base Color/Albedo
- Roughness
- Metal
- Occlusion
- Emission/Self Illumination
- Alpha/Opacity
- Normal

UI:
coronavraytoglb" border="0

UI Notes:
TLDR - These notes are also available in the tooltips

- Export GLB Directory <BUTTON>: The "..." button allows you to pick the directory to save your .glb files.

- Find Missing Bitmaps: A material must contain at least one bitmap (eg. Sofa_Diffuse.png), if all other "Supported textures" are found in the same directory as that bitmap it will path all these for you into the GLTF material. For example Sofa_Occlusion or Sofa_Roughness etc.
- Rename GLTF Maps: If your Maps have names like Map #1 it will rename these for you in the GLTF material according to the type eg "Base Color" or "Roughness" etc. This will also replace any name you have set so be aware.
- Remove GLB log file: Deletes the .log file that gets exported with the .glb file.
- Remove Subdivision Modifiers: Deletes Turbosmooth, Opensubdiv, Meshsmooth modifiers.
- Collapse Multi-Sub Materials: WARNING: I advise you do not enable this as its very specific to my workflow (unless you find it useful for some reason). What it does is take the sub material with the highest texture count and uses that material for the GLTF.
- Hide Warning Popups: You will often get a messagebox popup about missing textures such as Metal or if it fails to find your Occlusion textures in the directory. If you are happy with your workflow and would rather not be pestered about this then this button is for you.

- Convert Materials (selected): Checkbox ON for selected objects, Checkbox OFF for everything in the scene.
- Convert Materials <BUTTON>: Converts Corona/Vray materials to GLTF Material. This also applies to the "Settings" above including Subdivision Modifiers and Multi-Subs.

- Export Selected (Individual): Exports all the selected objects as individual files such as Box001.glb Box002.glb etc.
- Export Selected (Combined): Exports all the selected objects as one .glb file (you set the name which will appear after selecting the checkbox, dont add .glb to the end of the filename (unless double filename extensions is your jam!)
- Export All (Scene): Same as Exported Selected (Combined) however applies to the entire scene, selections are ignored.
- Export GLB File(s) <BUTTON>: Exports .glb file(s) to your selected directory. Double check your materials are correct first. Undo if necessary.

- Save Settings as Default <BUTTON>: Remembers all your current settings for future, including your export directory.
- Restore Original Settings <BUTTON>: Loads default/original settings.

GLTF Material Notes:
- Replaces CoronaBitmap with path only, doesnt copy settings to the bitmap such as UV coords etc. May be a future implementation but GLB files work best when you are using unwrapped 0-1 UV space bitmaps with no specific offsets/cropping/rotation/etc. Happy to receive feedback on this otherwise.
- GLTF values will be default to 1.0 for all bitmaps (as the bitmap should drive the settings, not values)
- Alpha will be set to mask mode if you have Opacity/Alpha textures. If your working with a glass material set this to blend instead.
- Gamma is set to 1.0 for all bitmaps except the Base Color and Emission which uses 2.2
- Render Engine: If Corona is selected then Corona Physical Materials are converted. If Vray is selected then Vray Materials are converted. Not both at the same time.

Find Missing Bitmap Rules:
- Example: My_Bitmap_Diffuse.jpg
- "My_Bitmap" is the prefix, this must match your other textures you want to auto-find such as My_Bitmap_Roughness, My_Bitmap_Occlusion etc.
- The suffix is "_Diffuse" or "-Diffuse" (leading hyphen or underscore).
- The bitmap search is not case sensitive and matches partial words, this means DIFF is the same as diff or diffuse.
- You can match the suffix to any of the following: "Diff", "Base", "BaseColor", "Color", "Albe", "Alph", "Opac", "Metal", "Rough", "AO", "Occlus", "AmbientO", "Emiss", "SelfIllum", "Norm" (Also happy to get feedback on common/production acronyms)

Example:
b4" border="0

after" border="0

Version 1.0:
- This is just an alpha version to get it out into the wild, feel free to play with it, break it, give me your feedback.
- If you get an error message the UI will stop working so you will have to close/re-open it. Then let me know about it.
- Save your scenes before using it, undo is not always stable but you can try it (might crash with larger scenes).
- As always, have fun!
« Last Edit: 2024-09-10, 19:13:40 by James Vella »

2024-09-10, 09:54:07
Reply #1

Tom

  • Active Users
  • **
  • Posts: 278
    • View Profile
    • www
Hi James,

Another script that sounds exciting, thanks for your awesome work.

Can you explain a bit what glTF is all about? I have no idea what it is. I've read a bit about it here https://github.khronos.org/glTF-Tutorials/PBR/ but it's still mysterious to me.

Also what is your script intended for? Is it for converting VRay (or Corona) materials to real time engines materials?

Thanks

PS: I run 3ds Max 2023 and I don't have access to GLTF materials visibly. I guess it comes with 2024 or 2025.

2024-09-10, 10:32:54
Reply #2

James Vella

  • Active Users
  • **
  • Posts: 612
    • View Profile
Hi Tom,

You're welcome. Basically GLTF/GLB is a real-time 3D file which allows you to embed it into webpages, some game engines also support it so its a one click import with materials instead of having to remake all the materials in the engine. Its suppose to be the 'jpg' of the 3D world, so anyone (including non technical people) can open your 3D file and spin it around natively on their OS, view it on their phone in VR/AR etc.

Yes the script basically has a few functions, first of all convert Corona Physical or Vray materials to GLTF Materials for 3dsmax. It can also search for textures in the directory such as Occlusion since you would have to otherwise do this manually (if you have 'Find Missing Bitmaps' enabled), or if you forgot to plug in some bitmaps but they are in the directory with the others as the requirement for GLB is minimum BaseColor, Rough, Metal, Occlusion, Normal. Last of all it comes with an Export button which to me is a bit more useful than the built-in exporter in 3dsmax since you have 3 options of exporting or testing.

3dsmax 2023 should have GLTF, if its not supported in your max version you will get a popup warning when running this so something else must be the issue (such as Corona Legacy material maybe).

This is just an evolution of my previous Vray to GLB script. This version now supports Corona Physical and comes with a UI. I also fixed a bunch of bugs for this one and that script is now obsolete. If you are curious about the GLTF workflow you can check out the video I made for it awhile back, it explains the ins and outs of it but obviously that script is now this one moving forward.


2024-09-10, 12:17:29
Reply #3

alexyork

  • Active Users
  • **
  • Posts: 717
  • Partner at Recent Spaces
    • View Profile
    • RECENT SPACES
Fantastic work, thank you!
Alex York
Partner
RECENT SPACES
recentspaces.com

2024-09-10, 18:07:12
Reply #4

James Vella

  • Active Users
  • **
  • Posts: 612
    • View Profile
You're welcome alexyork.

Version 2.0:
- Fixes for the asset tracker when finding bitmaps (doesnt repath missing assets)
- Flags missing assets for the user to find and repath in the listener/popup window.
« Last Edit: 2024-09-10, 19:02:04 by James Vella »

2024-09-11, 04:29:04
Reply #5

Tom

  • Active Users
  • **
  • Posts: 278
    • View Profile
    • www
Hey James,

Thanks for the explanations 👍🏻

2024-09-11, 10:21:12
Reply #6

alexyork

  • Active Users
  • **
  • Posts: 717
  • Partner at Recent Spaces
    • View Profile
    • RECENT SPACES
James, once again thank you - super helpful. I have a request - I wonder if you'd consider implementing some kind of user-friendly sandbox either within the script or as a button after everything's exported to 1-button test the object inside a Babylon.js sandbox? This might help with quicker verification that everything has worked correctly with the materials and exports etc.

As an aside, I'm finding that I'm unable to test local babylon viewers and I'm forced to first throw it all onto my webhosting for testing - do you have the same or is there something I'm doing wrong?

Cheers!
Alex York
Partner
RECENT SPACES
recentspaces.com

2024-09-11, 11:20:51
Reply #7

James Vella

  • Active Users
  • **
  • Posts: 612
    • View Profile
No worries Tom.

alexyork, the "Export GLB File(s)" button exports your glb to your directory of choice, from there you drag/drop it into the babylon page. You shouldnt need to do any uploading to webhosting etc, I often test my exports by doing the exact same thing (as per my youtube video).

Drag and drop your .glb file here (anywhere on the page):
https://sandbox.babylonjs.com/

You can also test it locally by double clicking on the glb file and opening it in Windows 3D Viewer
« Last Edit: 2024-09-11, 11:27:24 by James Vella »

2024-09-11, 11:35:47
Reply #8

alexyork

  • Active Users
  • **
  • Posts: 717
  • Partner at Recent Spaces
    • View Profile
    • RECENT SPACES
No worries Tom.

alexyork, the "Export GLB File(s)" button exports your glb to your directory of choice, from there you drag/drop it into the babylon page. You shouldnt need to do any uploading to webhosting etc, I often test my exports by doing the exact same thing (as per my youtube video).

Drag and drop your .glb file here (anywhere on the page):
https://sandbox.babylonjs.com/

You can also test it locally by double clicking on the glb file and opening it in Windows 3D Viewer

Thanks so much! Somehow I'd missed that you can view these directly offline in Windows 3D Viewer - handy! I've been throwing them in their sandbox but that's their own template which is nice, but for my needs I'm trying to set up a very basic template with a simple white background, which I'm defining through HTML, and loading my model into that. It works as I mentioned but only when running off the webhosting, not locally, which is odd, but I guess a limitation of how the babylon.js works.

I don't suppose you know of any resources online for some basic templates for the viewer we can download and tweak?

Thanks again for the pointers!
Alex York
Partner
RECENT SPACES
recentspaces.com

2024-09-11, 11:41:42
Reply #9

James Vella

  • Active Users
  • **
  • Posts: 612
    • View Profile
for my needs I'm trying to set up a very basic template with a simple white background

This one by google has a white background (same thing, drag/drop)
https://modelviewer.dev/editor/

I don't suppose you know of any resources online for some basic templates for the viewer we can download and tweak?

Not that I know of, I use babylon, the google one and Windows 3D viewer. Between all 3 it gets the job done.

Babylon sandbox has the most amount of tools for checking technical aspects, you can also switch the background to a more grey style (bottom right corner).

2024-09-11, 12:39:49
Reply #10

alexyork

  • Active Users
  • **
  • Posts: 717
  • Partner at Recent Spaces
    • View Profile
    • RECENT SPACES
Fantastic thanks!!
Alex York
Partner
RECENT SPACES
recentspaces.com