Yeah, might be late to the party with this, but here’s what finally worked for me after, like, a month of it being broken—took me forever to figure out because I’m dumb, lol.
First, in Unity, you gotta export to .fbx. You might need to add the com.unity.formats.fbx package if you haven’t already. Then, click your game object in the Assets directory, go up to the GameObject menu in the top window, and in the dropdown, pick “Export to FBX”—not the one that says “Convert to FBX prefab variant.” That should output an .fbx file.
Now, move that .fbx to Blender. For me, this was the key—it finally didn’t extract and break everything into a million pieces.
Once it’s open in Blender, you convert it to .glb by going to File > Export > glTF Binary (.glb). In the dropdown menu, I just check:
-
“Include/Selected Objects”
-
Make sure “Transform +Y Up” is checked
-
Under “Data > Mesh,” I check Apply Modifiers, UVs, and Normals
-
Under “Data > Material,” I leave it on Export Automatic
-
Then just leave everything else as is
Name your file—it’ll be called “untitled.glb” by default—pick where you want it, and hit “Export glTF 2.0.”
Last step, you can just use that with three.js GLTFLoader and it shouldn’t break a damn thing. Oh, and you can convert .tgas to something WebGL-friendly too, while you’re at it.