Using UV Mapping on an Equirectangular Projection Background: I am attempting to create a Unity application for viewing asteroids. I have a wavefront object that I got from NASA's PDS SBN. Right now, I am looking to replicate the version of Eros from the 3D Asteroid Catalogue (click "Grayscale" on the website to see the texture), but in Unity instead of ThreeJS. I believe I need to create a UV map in Blender so that I can apply it to the object in Unity.

Thanks to lemon in a previous post, I was able to get a cylindrical texture map on the asteroid. But I did not realize that I couldn't import this directly into Unity.

For reference, the wavefront file I'm using is located here, and the simple cylindrical projection I'm using is located here (warning, large image file).

Question: I have a wavefront object and a texture which is an equirectangular projection. I want to apply this equirectangular projection too the object in Unity.

I believe that I need to do this by getting a UV for the texture. To create a UV, I want to unwrap the object's mesh in a way that is identical to an equirectangular projection. What is the best way to do this?

Attempted Solutions: Here is an image of the working equirectangular projection in Blender:



That works well, but this does not import to Unity. So I attempted to create a UV map that emulates the equirectangular projection. I unwrapped the mesh as a cylinder and applied it to the asteroid with an image texture node. Here is what the unwrapped mesh looks like:



I'm not sure if this is the right unwrapping or not, because when I try to display the asteroid, I get something very garbled. Here is a picture of my attempt at rendering the asteroid with its texture on:



I'm confident that I am applying this completely wrong, I'm just not sure why. Here is what my unwrapped mesh looks like -- the entire asteroid is covered, so the streaks &amp; the weird band around the asteroid don't make
Two bake solutions.

Bake from the original object

A solution can be baking the model from this answer on to a copy of the mesh.

To do that:


From the original mesh, enter edit mode and unwrap it (the way you want, smart UV project will do).
In object mode duplicate the object, so that both original and copy will have a UV map which will be needed to bake even if the UV map of the original mesh is not directly used.


The UV map I have created is the following:




Create a new material for the copied mesh.
Add a unconnected image texture in it, call it for instance 'bake' and save it to disk.


Like so:



Now the bake setting:


Use Cycles and if possible GPU
Set the bake mode to diffuse (we want the color)
Influence color only (for the same reason)
Selected (original mesh) to active (target mesh)
Ray distance to some little amount to avoid overlapping effects between the two meshes




Now make sure the two objects are at the exact same position.

Select the original mesh, shift select the target, and use the bake button above.

Here are the resulting meshes:



(I cannot share the blend file as too large for this site).

Bake from the environment texture

Another possibility is to bake from the environment texture.

As we know that the original texture is an equirectangular projection, we can set it as environment texture.

Here too the object is previously unwrapped the way you want.

The bake setting is simple (the object will have to be at the world center):



Now we have to setup the environment texture. As for your previous question the tricky part is to find the good mapping in this context (180 degrees and inverted axis):



Once done, select your object and hit the "bake" button.

The result is similar: