Tutorial: how to create custom Enscape assets

  • It's been busy so I haven't been able to write a tutorial on the materials, but I can point in the right direction:


    Enscape uses a custom gltf extension so it can add parameters to materials that are not supported otherwise. Also, Enscape ignores certain parts of the standard gltf spec (like alpha blending) in favor of their own implementation (this is also covered in their extension).


    This is how you activate the material extension for your own assets:


    1) open the .gltf file

    2) add this snippet indicated in red:

    3) now you can enhance the materials with the enscape extension (see example material below)


    You can see there's lot of parameters to play with.


    I don't have time in the coming week to write a detailed tutorial but I'll try to answer questions here. Also, if you're confused as to what some of the values do, I recommend referencing the Enscape material editor (in Sketchup, Rhino or Archicad), because most of the parameters map almost one-to-one to the editor.


    For people asking about masking: check out the maskTexture part.


    {

    "name": "example material",

    "pbrMetallicRoughness": {

    "baseColorFactor": [ 0.23, 0.23, 0.23, 1.0 ],

    "baseColorTexture": {

    "index": 0

    },

    "metallicFactor": 0.0,

    "roughnessFactor": 0.026


    },

    "normalTexture": {

    "index": 1

    },

    "emissiveFactor": [ 0.0, 0.0, 0.0 ],

    "doubleSided": false,

    "alphaMode": "OPAQUE",

    "extensions": {

    "ENS_material": {

    "materialType": 0,

    "billboardType": 0,

    "bumpMapType": 2,

    "albedoColor": [ 0.23, 0.23, 0.23, 1.0 ],

    "tintColor": [ 1.0, 1.0, 1.0, 1.0 ],

    "specular": 0.5,

    "imageFade": 1.0,

    "indexOfRefraction": 1.0,

    "isSolidGlass": false,

    "emissiveStrength": 0.0,

    "waterParams": {

    "waterColor": [ 0.0, 0.0, 0.0, 1.0 ],

    "windDirection": [ 0.0, 0.0 ],

    "waveHeight": 0.0,

    "waveScale": 0.0,

    "causticsIntensity": 0.0

    },

    "roughnessTexture": {

    "index": 3

    },

    "maskTexture": {

    "index": 4

    }

    }

    }

    },

  • Pieter thanks for the detailed explanation.


    Thomas Willberger

    I have dreamt that one day Enscape would come up with an Enscape Standalone version - which enables you to develop Enscape shader directly inside that standalone and export gltf model.


    With Enscape standalone regardless of whether you use 3Ds Max, Maya, C4D,,everyone can benefit with the real time engine.

  • Oh, as you thought. I switched the decimal symbol and it worked fine. Really thank you so much. Really very grateful to you.

    cudinhthuc


    I made some changes to the program and uploaded a new version (v1.2). Would you mind giving it a test and see whether it solves the issues you were having? I am new to localization so this is a learning experience for me as well :)


    Also, while you're at it, could you also test whether the Bounding Box tool works for you? For now, you will have to enter size in meters with decimal point (1.5 for one-and-a-half meters).


    Download link: https://bit.ly/2w6M9Cc


    (I will investigate whether I can also support coma notation for the bounding box tool, but first want to make sure the current features work as intended).

  • I haven't tried, but if I had to guess I'd say they might be supported (maybe in some modified way) soon as Enscape has animated assets on their roadmap for the next release.


    If they use a modified version, we will have to wait for the first animated assets to see how it's done :) And of course we have to hope that it's not too customized (like changes in the binary) because I'd be very hard to replicate that in our own assets.

  • Thank you Pieter. With your version 1.2. It works well on both decimal symbols (0.5 and 0,5)

  • Good evening. Where can I find out more about material settings?

  • I havn't been able to write a tutorial on it yet. I'm not sure there's enough demand for it.


    Is there anything in particular you'd like to know?

    Hi Pieter,

    Thank you so much for sharing the work on custom Enscape assets.

    I am running into the same problem as Bashkatov. In particular, I am trying to import custom vegetation assets, and so enabling the alpha channel of the texture .png's would be critical to make this work. Is there a way to enable this? The asset shows up, but the alpha is black.


    If you could shed any light on this, it would be much appreciated! I am not at all familiar with the .gtlf format, blender, or the enscape material editor but I am trying to reverse engineer a viable materials tweak by looking at the official asset library .gtlf's and your sample.


    EDIT: answered my own question, thank you for the pointers! I just had to really dive into the syntax pieces and make sure I had no mistakes! However, I do think a tutorial on these types of material tweaks would be immensely helpful to many! I just scratched the surface and was able to flip one switch!

  • EDIT: answered my own question, thank you for the pointers! I just had to really dive into the syntax pieces and make sure I had no mistakes! However, I do think a tutorial on these types of material tweaks would be immensely helpful to many! I just scratched the surface and was able to flip one switch!

    So how did you do it? Is this something you need to do in Blender, or by manually editing the gltf file?


    I tried to manually add the mask images in the gltf file, but still the parts that should be transparent show as black.


    In Blender, when Rendering with Cycles, it was fine.

  • I only know of the method of modifying the gltf (which I touched on in my post of May 7th) so if archmonkey92 has another method I'd love to learn it.


    For now I, ve been creating a black and white mask map, saving it out as a png and then adding that as a mask texture in the enscape gltf material extension. It's not a terrible amount of work but it would be nice if I could skip that step.

  • OK, many thanks!


    I managed to get it to work by editing the file. It is a bit of manual work, but it works, and the resulting asset is far smaller (10 times smaller with the object I tried) compared to converting an .obj to .skp.


    Now I am trying with another file which is fbx. The resulting gltf is over 300mb, and I can't manage to get it to show at all. I don't know if Enscape has a size limit for the assets or if it is something else.

  • I haven't really seen a filesize limit but I do recommend keeping your asset at a reasonable size. Most of the default enscape assets are well below 1mb.


    That level of optimization is a lot of work, but I do try to keep them in the 1-2mb range. 300mb seems very high.

  • I did it by manually editing the .GLTF file as well following all the steps Pieter outlined!


    The Blender GLTF exporter was taking diffuse and opacity TIF textures and combining them improperly with into a PNG with alpha so I also had to create my own black and white JPEG alpha texture and introduce it into the GLTF as a source as Pieter mentioned.


    Working with vegetation having multiple textures slows this down considerably, so I am still looking for a way to streamline this part.


    I did notice when I tried to edit the .GLTF if I made any syntax mistakes that the whole asset would not show though.