PBR, FBX, Textures, and Materials


#1

Now with the Blender Issue being looked at, I can finally move on to more fun stuff:

Ive discussed this before, but I dont think Ive made this ever into a post:
With PBR being confirmed in engine by @sam we have had this feature in for quite some time.

Edit: PBR, or Physically Based Rendering is well explained in this video:

However with FBX 2013.1, even with latest 2015 spec there is no native parameters to map embedded textures directly to Roughness or Metallic support: You can still embed all the textures,
but the associations for the new texture sets go missing, even if exported from Maya.

In Unity and in Unreal Engine, the textures can be assigned to materials, which can then be applied on the material slots of and object.

Will we a feature ability to do so via scripts attached to avatars or entities?

Id suggest something of the sort:

Object.setMaterial("<object_id>", "<mesh_# or mesh_id>", "<object_material_#>", "<JsonObject Configuration or substance/alt atp/url>")

Example if i had a full suite:

Object.setMaterial("<object_id>", "body",0, 
{
normal: "atp or url or JSONObject for tuning of power",
roughness: "atp or url", 
metallic: "atp or url", 
glow: "atp or url",
specular: "atp or url",
diffuse: " JSONObject with color tint, or atp or url",
sss: " JSONObject with url. + tuning if ever implemented <3"
});

It should also come bundled with

Object.getMeshes(<object_id>)- to get list of Mesh ids in the object

alternatively, if we cannot get mesh_ids out of the mesh data:
Object.getMeshesAmount(<object_id>) - to get list of Mesh

Object.getMeshMaterialsAmount( <object_id>,<mesh_id> )
Object.getMeshMaterials( <object_id>,<mesh_id> ) - to get all the materials on a mesh in an object.

and ofcourse
Object.getMeshMaterial( <object_id>,<mesh_id>, <material_id> ) to actually get the Material JSON Object

All these methods would allow for an edit window to have additional functionality for easier use for content creators that do not have scripting experience. or have scripts which changes the behavor

This could be a further boon to creations to doing some basic customisations via materials or swap out a single mesh textures with another texture/material set, saving time, even if at its most basic capacity;


Rule however, no script should not be able to modifier any object that has not been created by owner of the object the script is attached to, or have the permissions to modify.

Changing materials on current avatar should only be doable by the script attached to the client. However changing another avatar texture should not be doable without the script having permissions to do so.


As a more advanced method, we should also be able to link the shaders we create to a specific material.


#2

Well Because I wasn’t entirely clear on what PBR Physically based rendering actually Is I decided to google it. How it works is a lengthy explanation, what it appears to do Is better simulate the effect of light on objects, wood metal ceramics all reflect light differently.
This vid shows quite a nice with without comparison


#3

So just thought I would chime in on this.

There are two major Tools that give very nice results for the maps that you will be using for your characters and the like. Depending on your UVW maps of course.

Quixel Suite 2
Substance Designer

Quixel Suite 2 requires an copy of Photoshop. Just a heads up on that.


#4

Bringing this back from the dead

Hifi has a pbr workflow that works great with maya

if the edit window allowed us to paste in the url’s of the different materials that hifi supports in world then the process of texturing the models would be released from Autodesks evil clutches and some of the closed source restrictions of the fbx format
As i understand it SSS isnt supported by any fbx format but is usuable via script in hifi
if the edit window has slots for each of the maps then we could all be alot more certain that were doing things correctly
and i kinda think that models with unpacked textures load faster anyways

this would help out everone equally regardless of software and also let hifi bolt in new maps as they create them without having to wory about excluding people

discuss


#5

I think the SSS definition is actually that is defined from the fst, so yes, FBX doesnt actually support it atm.
I did hear rumors though that Hifi is looking into supporting gITF which should be the next model format supporting quite a few modern stuff that fbx doesnt, including Shaders and stuff what, forexample any modern PBR engine could handle (including nodes, from say Cycles).

But Regarding The textures. maybe we should have a worklist item for it.


#6

It’s just a nightmare. The 50% trick does not work on diffuse,specular,normal map that is generated with other program. But mabye am doing soemthing wrong. because I do not get the albedo texture visible in high fidelity

And cycles + nodes. most hated part. never used it.
Still puzzled about the Text. that new platforms are more easy to build in. Not really more easy.


#7

If the diffuse/albedo isnt loading it just means the file format is wrong. Make a separate thread for it.

And I dont get what you mean by 50% trick.
Lots of the texturing stuff imo is quite straight forward once you understand the mapping logic.

  • Blender Roughness is Glossiness in High fidelity: so you just invert the texture when exporting it from blender, where as White = shiny
  • Overriding it in High Fidelity reads the texture as a Roughness, meaning Blacks = Shiny because now the texture is handled as a non-blender texture.

debugRender makes life much easier especially when trying to debug what texture is missing where.


#8

@judas did post a trick to get PBR right. that worked with one object i painted in 3D-coat fine. Just make all textures 50% alpha. Then it works in high fidelity and juas did say it’s close to maya stringray.

Right now, am doing something wrong. because something simple as normal map aleady fail in high fidelity. but looks fine in blender. And i know wich sliders to change. but it fails to many times.

Anyway, no textures missing. The are all PNG to.
Trying to get normal map only correct first.

Problem is, as far i see i do the same as always. and now it does not work.


#9

If the Textures are not loading it means the format is incorrect. If PNG, then you have to make sure it is PNG 8-bit RGB to match the High Fidelity (Qt QImage which runs in the background) texture loader as it doesnt support other bit-rates. Not sure of 32 bit. is supported but 8-bit is safest option.

Edit: This was wrong, just tested 8bit, 16bit and 24bit, seemed to work fine.


#10

It’s just PNG. 8bit am pretty sure it’s not and you not want to use that. that’s only 256 colors. Besides i used the same program earlyer and that works fine. If high fidelity still cannot handle basic things like file formats… uhmm.

In blender all textures look fine. Except the normal not get mixed with the diffuse. Instead it’s just showing the normal map only. If i turn normal map off in blender i see the diffuse texture.

I have set Normal mpa under geometric and also enabled it under geometry
Stranger because the same object , have other material that is generated with the same program. Compared settings. Still missing something

I can remember some post not long ago with soem problem on normal map. Now the challenge to find it back on this bad searchable forum.


#11

Make a new thread on it, ill try to debug. Send me also a copy of the object and textures and lets see whats wrong.


#12

Hmm, it’s my specuial project build i like to keep hidden for now.
I can say it’s showing fine in FBXreview. But i can try it on basic cube, that’s good idea.
If i could move parst of this to new topic i did.

Let me test a basic cube and ill let you know in new topic