1
$\begingroup$

I am very new to Blender and I am trying to export a model as a glTF file. The model is available on Microsoft 3D Viewer. What I am doing is as follows:

  1. Save the model as .glb from Microsoft 3D Viewer
  2. Import the file into Blender (v 2.92)
  3. Scale up the model
  4. Export it as a glTF file

But when I am doing this, the resulting model has no texture. What are the exact steps to replicate the original model (with textures) scaled up and export it as a glTF file?

Original Model (The way I want it): Reaper with texture

Actual Output: Reaper without textures

The Model is a Reaper and constitutes 2 parts; the scythe and body

Material Node Graphs: Body Graph 1 Body Graph 2

$\endgroup$
4
  • $\begingroup$ From your description, it should work fine. Can you add a screenshot of the material node graph after import? $\endgroup$
    – emackey
    Commented May 23, 2022 at 13:28
  • $\begingroup$ Hey @emackey, I have uploaded those, could you please check, thanks! $\endgroup$ Commented May 23, 2022 at 13:40
  • 1
    $\begingroup$ It's using KHR_materials_pbrSpecularGlossiness, which can be imported but not exported. What does Image_5 look like? $\endgroup$
    – scurest
    Commented May 23, 2022 at 13:45
  • $\begingroup$ I think it has the structure of the scythe. Here is the link: link $\endgroup$ Commented May 23, 2022 at 14:00

1 Answer 1

1
$\begingroup$

As discussed in this issue, Blender's glTF importer/exporter works best with metal/rough PBR materials — not spec/gloss PBR materials. Because glTF's metal/rough workflow does include control of the specular parameter (extension: KHR_materials_specular), this is just as flexible and generally recommended when using glTF anyway.

Options —

  1. Scale the model in a tool that fully supports spec/gloss, like Gestaltor, or the https://gltf.report/ script tab —
const scene = document.getRoot().listScenes()[0];

// Scales the direct children of the scene, ignoring any descendants.
// Overwrites any previous scale on these nodes.
for (const child of scene.listChildren()) {
    child.setScale([50, 50, 50]);
}
  1. Convert from metal/rough to spec/gloss before editing in Blender, requires Node.js:
npm install --global @gltf-transform/cli
gltf-transform metalRough input.glb output.glb
$\endgroup$
1
  • $\begingroup$ I ran solution 2 and confirm it works! $\endgroup$
    – Ibra
    Commented Aug 27, 2023 at 1:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .