Keyshot

KeyShot brings you real-time 3D rendering that displays results instantly and reduces the time to create realistic product visuals.

Keyshot Export Guidelines

Before we import our mesh into Keyshot, we need to consider a few things. Keyshot does a great job of hiding some mesh errors. In some cases, the magic Keyshot performs to your mesh isn’t carried over to the export. So we need to ensure to follow this checklist before we import our models. Keyshot also does not support animation export.

Smart Export

Smart Export for 3MF, USD, and glTF formats includes baking of materials and textures. With this, additional export options are provided and the export includes a single texture file (png) that combines the following material properties:

  • Color/diffuse

  • Roughness

  • Normal map

  • Metalness

  • Ambient occlusion

Limitations

In addition to the limitations mentioned in the Baking section above, export of the glTF format has following limitations:

  • Plastic (Transparent) material will be exported using the diffuse color only

Mesh Prep Checklist

  • Ensure all mesh components have a UV channel

    • Keyshot has UV editing tools but can not create information that isn’t there; Keyshot can not create UV information

  • Ensure mesh normals are pointing in the correct direction

    • This helps avoid potential Transparency issues

  • Ensure verts are properly welded

    • This helps us avoid potential render artifacts and shading errors.

  • Merge mesh components when available

    • This helps create a more user-friendly scene as well as reduces the number of bake operations Keyshot has to perform. This will also decrease export time.

  • Avoid Displacement maps

    • These do not export, it is recommended that a normal map be used instead.

  • Unite size: MM

    • This drastically affects the export time.

****

Export to glTF

Select File > Export > GLB/glTF, select the specific format, a location and give the file a name

  1. Size: If your scene does not have scene units defined, you will need to select the scale of your geometry

  2. Texture resolution in dpi: The texture resolution in dpi for each part. The dialog will start with a suggested value that is based on the scale of your model. A higher dpi will yield a sharper/more precise texture but also impacts the file size.

  3. Include ambient occlusion: When enabled the ambient occlusion will be included in the baked texture.

  4. Compress using Draco: This reduces the file size by compressing the geometry. Draco does not compress textures and therefore does not affect texture quality.

  5. Number of samples: This controls how many times each pixel in baked texture is calculated for increased accuracy. Too low of a value will result in an image that has excessive noise. Increasing the value will increase the export process time.

  6. Prefer Geometry Nodes or Textures: the format cannot handle both Geometry nodes (bubbles, flakes, displacement) and textures on a single part. If a part has both this choice will let you prioritize one type.

Scene Considerations

Scene unit size is the most important setting when it comes to export time. This is because Keyshot exports its textures to scale.

If you have an asset that is three meters long, you will export with textures around three meters in size. This can cause various issues with the exporter; we recommend changing the scene unit size to MM to avoid these. This ensures a quick high, fidelity export.

****

Materials

We recommend using the advanced material in Keyshot as it exports more consistently.

A thing to keep in mind is that Keyshot uses the specular channel as the primary channel in its material’s overall specularity. On export, however, it uses the information in the roughness channel. We need to ensure that we have the correct information in our roughness channel to export our material correctly. Luckily roughness is just inverted specular information. All that we need to do is take our specular information and invert it. This is really easy to do if you are using a texture or a value for Specularity.

This is why we recommend the advanced material, it exposes the specular channel as well as giving us a roughness input to channel the corrected information into.

Other specialized materials such as Plastic, Paint…etc are not recommended and only for advanced use cases.This is because they do not expose the specular values of the material. This is done to help guide the specular levels to fall in line with the materials type (Plastic, Paint…etc). So your exports may very but a good rule of thumb is to avoid using extremely specular values ex . 005, .05 as these will export too shiny.

****

Setting up a material using a Specular Texture.

Material Graph before Color Invert node

Material Graph after Color Invert node

If this is the case, we can simply take our specular texture and run it through a Color Invert node and run that into our roughness.

****

Setting up a material using a Value.

If we do not have a texture, we can take the value in the specular field and use that to create a color. For example, if we have a value of .5 for our specular, we should make a Color Gradient node and change the color of both color properties to a 50% grey color.

Setting both colors to the same color effectively changes our gradient into a color constant after we have set the color, we can connect that to our specular channel. Then we can invert it and plug the inverted color into our roughness.

Material Graph before Color Gradient node

[data:image/svg+xml;nitro-empty-id=NTc3OjgxMDQ=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCA0MDQiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjQwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=](data:image/svg+xml;nitro-empty-id=NTc3OjgxMDQ=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCA0MDQiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjQwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=)

Material Graph after Color Gradient node

[data:image/svg+xml;nitro-empty-id=NTc3Ojg3MjE=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzU0IDc2NCIgd2lkdGg9IjM1NCIgaGVpZ2h0PSI3NjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PC9zdmc+](data:image/svg+xml;nitro-empty-id=NTc3Ojg3MjE=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzU0IDc2NCIgd2lkdGg9IjM1NCIgaGVpZ2h0PSI3NjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PC9zdmc+)

This can be found by right-clicking in your Material Graph → Textures → Color Gradient

****

Troubleshooting Opacity Issues with Specialized Materials

Using .LMT files or specialized materials can lead to opacity issues when exporting. If you are experiencing these issues and are forced to use the .LMT it is best to apply a color gradient with a value of one or white set for both color inputs to ensure the material is opaque. This will ensure the materials opacity is set to opaque.

[data:image/svg+xml;nitro-empty-id=NTc3OjEwMDAx-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCA0MzQiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjQzNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=](data:image/svg+xml;nitro-empty-id=NTc3OjEwMDAx-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCA0MzQiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjQzNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=)

Materials with Transparency

Keyshot supports Transparency but not translucency on export. In the below image areas of grey should be Translucent and areas of black should be Transparent.

This is caused by the inability to set the blend mode of your material.

We can influence where the Alpha is sourced from but not the blend mode of the material. We have found for best Transparent results it is recommended to use an Advanced Material with a texture with an alpha in the opacity slot. The texture in the opacity slot should be set to Alpha.

Opacity Texture Settings

Opacity Map Mode: Alpha

  • Tiff/png

  • 32bit TGA

****

Translucency Work Around

There are two ways to correct the blend mode within the exported Keyshot GLB.

  1. Edit the material in Notepad.

  2. Edit the material in Blender.

Notepad Fix

If Translucency is required we recommend using an Advanced Material with an alpha texture as outlined above. It is recommended to name the material something that is easily searchable since we will be changing a value after export.

For this example we named the material “BEANS” as this would be a unique identifier within the file. After the material has been named we can export the file as we typically would, with one small adjustment. Right before we export we must ensure to change the format from .glb to .gltf. This will produce a human readable file that we can edit.

[data:image/svg+xml;nitro-empty-id=NTkwOjM5OTQ=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTc5MyA5NDgiIHdpZHRoPSIxNzkzIiBoZWlnaHQ9Ijk0OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=](data:image/svg+xml;nitro-empty-id=NTkwOjM5OTQ=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTc5MyA5NDgiIHdpZHRoPSIxNzkzIiBoZWlnaHQ9Ijk0OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=)

Open the .gltf file in the scripting program of your choice. (Notepad ++ or VSCode) search for the material you need to edit.

We use Ctlf+F to activate the find function and search for the unique material name.

We will need to edit the “alphaMode” parameter by changing it from “MASK” to “BLEND”.

  • Correct:[{“alphaMode”:”BLEND”,”doubleSided”:true,”extensions”:{“KHR_materials_transmission”:{“transmissionFactor”:1.0,”transmissionTexture”:{“index”:1}}},”name”:”BEANS”,

  • Incorrect:[{“alphaMode”:”MASK”,”doubleSided”:true,”extensions”:{“KHR_materials_transmission”:{“transmissionFactor”:1.0,”transmissionTexture”:{“index”:1}}},”name”:”BEANS”,

With this edit made we can now save the file, then we need to select the revised .gltf and it’s texture files, zip these items together, and upload the zip file to VNTANA.

Blender Fix

Export standard .glb from Keyshot and import the glb into Blender.

After we have imported the file into Blender we can navigate to our Shading tab.

[data:image/svg+xml;nitro-empty-id=NTkwOjY1MjA=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjU4OCA1MzQiIHdpZHRoPSIyNTg4IiBoZWlnaHQ9IjUzNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=](data:image/svg+xml;nitro-empty-id=NTkwOjY1MjA=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjU4OCA1MzQiIHdpZHRoPSIyNTg4IiBoZWlnaHQ9IjUzNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=)

Select the component with the material you wish to be translucent.

[data:image/svg+xml;nitro-empty-id=NTkwOjc0MDE=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzI0NyA5NzUiIHdpZHRoPSIzMjQ3IiBoZWlnaHQ9Ijk3NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=](data:image/svg+xml;nitro-empty-id=NTkwOjc0MDE=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzI0NyA5NzUiIHdpZHRoPSIzMjQ3IiBoZWlnaHQ9Ijk3NSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=)

Selected the material, then Change the Alpha Blend mode from “Alpha Clip” to “Alpha Blend”.

[data:image/svg+xml;nitro-empty-id=NTkwOjgzMzI=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzI1MiA5ODEiIHdpZHRoPSIzMjUyIiBoZWlnaHQ9Ijk4MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=](data:image/svg+xml;nitro-empty-id=NTkwOjgzMzI=-1;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzI1MiA5ODEiIHdpZHRoPSIzMjUyIiBoZWlnaHQ9Ijk4MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4=)

Material is set to Alpha Clip (incorrect blend mode)

Material is set to Alpha Blend (correct blend mode)

Export as a .glb and upload to VNTANA.

Exporting

After we have made our material edits, we can export it as a GLB.To export, we go to File → Export → Export to GLB

We have found that exporting at 300 dpi is a good middle ground between quality and export time; if you notice blurry textures, you may need to increase the DPI or take a look at your asset’s UVs.

If you are looking for the best quality export, we recommend adding AO with samples set to 75.

(note that exporting with AO will significantly increase export times)

Hardware Recommendations

Keyshot uses the CPU as the primary component for most render and baking operations. You can set the renderer to utilize the GPU for rendering tasks but all export processes will be run on the CPU.

In order to increase export/render times it is recommended you use a CPU with a high Core count. The more cores available the more calculations can be performed thus decreasing the time it takes for an asset to export/render.

RAM is another key component when exporting from Keyshot, at the very minimum 64GB of ram. RAM is important as it allows Keyshot to store information pertaining to its bake operations the more RAM on hand the quicker it can perform its baking tasks.

Last updated