# Morph targets: A sphere shape turning into a cylindrical unwrapped sphere shape

I'd like to do an animation where a globe will unwrap it's texture.

Go from this

to this

, but in 3D space, so it will look exactly as its unwrapped form.

The only methods I have on mind are extremely tedious, anyone there more clever than I care to give a hint on how to achieve the effect?

• – cegaton Jul 10 '14 at 23:07

I would do this backwards.

Crate a plane, enter edit mode (Tab) and subdivide it.

Press (U) and select Unwrap to create a UV map.

Exit edit mode Tab and in the properties panel create two shape keys by pressing the + box TWICE.That will create a base shape key for the plane and one for the deformed plane (a sphere).

Back in edit mode Tab, rotate the plane 90 degrees in the Z axis RZ90

Then rotate 90 degrees in X RX90

Move the plane up on the Y axis (this distance will be the radius of the sphere)

Press Space Bar type warp and select it. On the warp settings change the WarpAngle to 180 degrees

Rotate the plane 90 degrees in the Y axis RY90 and warp again. This time make change the WarpAngle to 360 degrees.

At this point you should have a SPHERE!!

When you switch back to Object Mode your sphere will go back to a flat plane, don't worry you can control (and animate) the transformation by moving the value slider on the Shape Keys.

Then you can use UVs as the texture's coordinates in a material.

• If you want to keep only the final mesh - you can follow these instructions. blender.stackexchange.com/questions/5364/… – GilesDMiddleton Jun 25 '16 at 18:21
• Afterwards, you might want to check the normals are facing the correct way - mine weren't, and I had very interesting effects when I imported the blend file into Unity. – GilesDMiddleton Jun 26 '16 at 15:45
• The second warp needs to be -360 degrees to avoid the map coming out reversed like in the question's anti-Earth. – kim holder wants Monica back Sep 3 '19 at 19:42

A simple script which transforms vertices to their uv-coordinates (does not rip the geometry!):

import bpy
from mathutils import Vector

obj = bpy.context.active_object
mesh = obj.data
uv = mesh.uv_layers.active
shape_key = mesh.shape_keys.key_blocks[obj.active_shape_key_index]

for index, loop in enumerate(uv.data):
vertex = shape_key.data[mesh.loops[index].vertex_index]
vertex.co = Vector((loop.uv.x, loop.uv.y, 0.0))


You can rip the geometry manually:

• In the UV Editor select an island and run Seams From Island.
• Select a seam edge and press SHIFT + G -> Seam, to select all seams.
• Press CTRL + E -> Edge Split.
• Thank you for that, interesting how you provided an answer to do the task through scripting and @cegaton to do so visually. – thePostFuturist Jul 11 '14 at 4:29
• This script allow one to do crazy deformation magic and should be included as an add-on. – Jackdaw Mar 22 '19 at 20:01