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

Go from this

3d sphere

to this

flattened sphere

, 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?

up vote 10 down vote accepted

I would do this backwards.

Crate a plane, enter edit mode and subdivide it (W). Go to top view and orthogonal view Numpad 7Numpad 5.

Unwrap UVs (U)

enter image description here

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).

enter image description here

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

Then rotate 90 degrees in X RX90 enter image description here

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

Press Space Bar type warp and select it. On the warp settings change the WarpAngle to 180 degrees enter image description hereenter image description hereenter image description here

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

enter image description hereenter image description here

At this point you should have a SPHERE!! enter image description here

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. enter image description here

enter image description hereenter image description here

  • 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

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

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.