6
$\begingroup$

TL;DR: Is it possible to edit a UV projection with the same precision as one does a model in Edit Mode, or alternatively, can one export a UV projection as a new mesh?

The Details: So as mentioned in my previous post, ...

Equirectangular world-map UV layout

... I've been building a globe with adjustable continents to mess around with continental drift patterns as my first learning project, with the idea that I could somehow project the new continent configuration out as an equirectangular map - these are a standard for geographical mapping programs.

http://en.wikipedia.org/wiki/Equirectangular_projection

After a lot of tweaking I've gotten my globes clean enough to give me a semi-useable map:

the mesh:

the projection:

it's not equirectangular however, and there is still a lot of distortion at the poles. I would like to be able to edit the projection itself, but I can't seem to figure out how (if it's even possible). UV sculpt is too imprecise, and Grab/Scale/Rotate seem to just affect the projection as a whole no matter what is selected. Ideally it would be nice to be able to edit the projection with all the flexibility of Edit Mode.

Is this possible, or alternatively, can one export a projection as a mesh and continue working on it that way?

Thanks lots for your time reading this and potentially helping me out. ^_^


FYI: The continental position pictured is earth in +- 100-150 million years' time. Some additional changes are predicted (such as East Africa breaking off from the mainland along the Rift Valley), but I'm not at the point where I can model THAT yet.


Following SixthOfFour's suggestion, I spent the evening trying to figure out how to bisect my globe along the previously defined seam (I discovered the knife tool! Yay! ... surprisingly hard to figure out how to cut a mesh in blender cleanly) and deform it in the reverse of the answer he linked. I got as far as to cut my globe cleanly, but I'm stuck at the deformation - I have no idea how to "unbend" in blender. The Simple Deformation modifier wasn't of any help, and I couldn't really manage with any of the other deformation modifiers either.

At least I've made some progress, so thanks SixthOfFour. Now I just need to figure out the deform itself.

For interest' sake, here's the cut now neatly disecting the continent formerly known as ... The cut runs all along the seam, from pole to pole along the int'l date line:

enter image description here


NoviceInDisguise helped me realize that I wasn't understanding transforms in edit mode fully, which lead me to discover proportional editing this morning. Turns out my selection circle in the UV Editor had gotten so large that I was grabbing everything and then some. Still not having much joy manipulating the UV map since the continental geometry doesn't want to behave according to the underlying grid's movement, but at least I have two avenues to explore now ...


So the UV mapping option is out. Despite finally figuring out how to remesh the globe properly using shrinkwrap, (negative projection of a UV Sphere onto the surface) thereby integrating the disparate bits of the object, deforming the projection to be equirectangular just doesn't work - there is simply too much squashing at the poles to accurately pull things into position according to the grid. So my only hopes now rest with an unwrap as suggested by SixthofFour.


Well, I've taken this project as far as I could. I'm out of ideas. I tried unwrapping the mesh itself as suggested by SixthofFour by using a cylinder cast which I then intended to unwrap along the previously cut break, but the cylinder didn't come out clean despite my best efforts. I've linked my final blender project below for anybody who'd be willing to give it a try:

http://s000.tinyupload.com/?file_id=65979981948334151059

Thanks lots if you do take the time to do so.

$\endgroup$
  • 1
    $\begingroup$ Perhaps this answer could help. It's a different question, so the answer doesn't address your specific needs, but I believe it could be built on to do what you ask. Specifically unwrap before bending the plane. I can't write an answer about it until Monday. I'm out of town, and don't have access to my blending computer, and before posting an answer, I'd want to try things out, so I know they work. $\endgroup$ – user7952 May 29 '15 at 11:09
  • $\begingroup$ And, of course, skip the animation of the bend. If you mark the rim of the plane as a seam, you should even be able to remove double vertices after applying the modifiers and still have a consistent UV map. $\endgroup$ – user7952 May 29 '15 at 11:27
  • $\begingroup$ The answer you linked seems very intriguing. Hadn't thought of actually manipulating the globe itself directly, but that might indeed work. Thanks lots, and I'll report back on my progress. :) $\endgroup$ – geekgrrrl May 29 '15 at 12:14
  • 1
    $\begingroup$ You do know you can select individual edges and vertices in the UV editor right? Same commands as in the 3D viewport I think. $\endgroup$ – VRM May 29 '15 at 15:14
  • $\begingroup$ To unwrap the sphere perfectly you need to remove triangle faces from the poles. You can do that by selecting them and insetting almost to the pole and then delete the selected faces. $\endgroup$ – Denis May 29 '15 at 15:26
6
$\begingroup$

Since you say you don't require any texturing, I've tried to accomplish what you want without any UV unwrapping, and I think I've got it working.

Add a plane, tab into Edit mode, make sure everything is selected (it should be, but if it's not, hit A once or twice until it is), scale by 2 on the X axis and add a loop cut like this (CtrlR, place the mouse near one of the longer edges, left click to make the cut, then right click to release without moving the newly created edge).
enter image description here

Select everything (A twice) and make some subdivisions (W > S). If you have the tool shelf visible, the settings for the subdivisions should be available at the bottom of it, otherwise hit T to show it, or F6 to open a dialogue with those settings.
enter image description here

Extrude the continents. Since you explained your own method of doing this quite well in this question, I'm not going to go into details about that. What I've done here is simply selecting some vertices by dragging the circle select tool around randomly, then extruding.
enter image description here

Make sure the bottom vertices of the continents are selected. With the way I extruded the continents, I simply hit CtrlNumpad +, but with your method, you may need some more elaborate way.
enter image description here

Select also the rim of the plane.
If none of the currently selected vertices are on the rim, hold Shift while selecting one corner vertex, then hold Ctrl while selecting the other three corners, then finally click the first corner again while still holding Ctrl.
If some of the currently selected vertices are on the rim, hold Shift while selecting a currently unselected vertex on the rim, which is next to a selected one, also on the rim, then, while holding Ctrl, select another vertex on the rim, next to a selected one, also on the rim, and make sure the distance between the last selected one and the one you're about to select is covered by a straight line of only unselected vertices. If the distance between them passes a corner, first select that corner vertex while holding Ctrl.
enter image description here

Invert the selection (CtrlI) and delete the vertices that are now selected (X > V).
enter image description here

Switch to face select mode (CtrlTabNumpad 3). Now you need to select all the faces that are connected to the rim of the plane. Select a face at one end of a continous string of faces, then, while holding Ctrl, select the face at the other end of the same string of faces. While holding Shift, select a face at one end of another string of faces, then, while holding Ctrl, select the face at the other end of the same string of faces. Repeat this until all the faces that are connected to the rim of the plane are selected.
enter image description here

Delete the faces that you just selected (X > F).
enter image description here

Zoom in and pan around to see if there are any edges like in the image below. If there are, switch to edge select mode (CtrlTabNumpad 2), select and delete them (X > E).
enter image description here

Tab back to object mode. Add another plane and repeat steps 1 and 2 above on the new plane, possibly with fewer subdivisions if you so desire. This plane will be the ocean. In the following I will refer to the first plane as "the continents" and the second plane as "the ocean".

If you do require UV unwrapping, now is the time to do it. In that case, tab into Edit mode, select the vertices highlighted in the image (make sure the corner vertices are not selected), add them to a new vertex group (CtrlG > A) and mark them as seam (CtrlE > A). Do this for both the planes before unwrapping.
enter image description here

Add an empty and set its rotation to -90° on both the X and Z axes. Select both planes (select one, then hold Shift while selecting the other). Add a Simple Deform modifier, set it to Bend, set the Origin to the empty and the angle to 180°. This will add the modifier only to the last selected of the planes, so move the mouse to the 3D view and hit CtrlL > I to copy the modifier to the other plane. Apply the modifier to both planes. A workaround to apply modifiers to several objects at once, is to press AltC > M with all objects selected.
enter image description here

Change the rotation of the empty to 0° on the Z axis (but keep it to -90° on the X axis). Once again select both planes and add a Simple Deform modifier, set it to Bend, set origin to the empty and this time set the angle to 360°. Copy the modifier as above, and apply it to both planes as above. Now you can safely delete the empty if you wish.
enter image description here

The next step depends on whether you UV unwrapped or not.

If you did not UV unwrap:
Select the ocean, tab into Edit mode, make sure everything is selected and remove doubles (CtrlV > D).
Tab back to Object mode and select the continents. Tab into Edit mode, make sure everything is selected and remove doubles (CtrlV > D). If you have any vertices and/or edges that aren't connected to any faces, select those and delete them.
enter image description here

If you did UV unwrap:
Select one of the planes and tab into Edit mode. Make sure everything is deselected (CtrlA to deselect if anything is selected). Go to the Object Data tab, select the group and click Select. Remove doubles. The group can now be deleted by clicking the - sign next to the vertex group list. Repeat this for the other plane. Then follow the steps to delete vertices and/or edges that aren't connected to any faces as explained above under "If you did not UV unwrap.
enter image description here
If you simply select everything and remove doubles after UV unwrapping, the UV map will look like this.
enter image description here
If you follow the steps above, the UV map will look like this.
enter image description here

Tab back to Object mode and select the ocean. Set the origin to geometry (Object > Transform > Origin to Geometry).Scale it up slightly, to make the continents slightly sunken into the ocean. Snap the cursor to selected (ShiftS > U). Select the continents and set origin to the 3D cursor (Object > Transform > Origin to 3D Cursor).
enter image description here

Hit Z to go into wireframe view mode. Add a bone (ShiftA > A > S). Tab into Edit mode and make sure the whole bone is selected. Rotate the bone to point roughly to the centre of one of the continents, and scale it down a little so it doesn't reach the surface. This will be the control bone for an entire continent. Extrude it a few times (with the bone selected hit E; you will need to select the first bone before every extrusion, or the extrusion will come out of the new bone). Point the extruded bones to the edge of the continent. These extruded bones will control the deformation as the continents collide. The more bones you add, the better control you will have. While still in Edit mode, add a control bone for another continent, and make some extrusions.

Once you have all the bones, tab into Object mode and make the armature the parent of the continents. Select the continents, then hold Shift while selecting the armature. Hit CtrlP and select a suitable option from the drop down menu. I used "With Automatic Weights" in my example, but I strongly suggest you use "With Empty Groups" and manually weight paint. I'm not going to go into details about that, but basically you'll need the groups affected by the control bones for whole continents to have that continent all red, while the groups affected by the extruded bones should be red around the tip of the corresponding bone and fade to blue further away. There are several questions about weight painting here on Blender.SE that will most likely be helpful if you don't know how to do it. You may want to rename the bones before parenting, to make it easier to know which bones controls what.
enter image description here

Hit Z to go back to solid view.

And the result:
enter image description here

At this point you can join the two objects into one. Make sure they do not have any UV maps and/or vertex groups with the same name. Rename the UV maps and/or vertex groups if necessary, but keep in mind that if you rename any vertex groups that are controlled by bones, you need to rename the corresponding bones as well. If the two objects have identically named UV maps and/or vertex groups, these will be merged into one map or group in the joined object. Once you made sure about this, select both objects in Object mode (first select one, then, while holding Shift, select the other one), then press CtrlJ. Don't use the Boolean modifier, as this is sure to mess up the rig.

I have two reasons for using a plane for the ocean, rather than adding a sphere directly. The planes are easily scalable to equal size, so no need to calculate the radius of a sphere, and they will have the same origin.

Credit should go to @LeonCheung for this answer, which I used to create spheres from planes.

$\endgroup$
  • $\begingroup$ Thanks so much for taking the time to investigate this question. I'm definitely going to give this solution a try once the family all go back home ... weddings, sigh ... but it looks really promising. I suspect starting with an equirectangular surface, going to a sphere and then reversing it might just clear up a lot of the unwrapping issues I was having near the poles. I will post back once I've tried it. And yeah, thanks so much @LeonCheung for the original idea. :-) Have a nice weekend. $\endgroup$ – geekgrrrl Jun 13 '15 at 10:56
  • $\begingroup$ @geekgrrrl You're welcome! But before you try it, do check back. There's an issue I hadn't considered, with the case when a continent "wraps around" the edges of the original plane. A possible solution is slowly forming in my mind right now, and if it works, I'll edit my answer to incorporate it. $\endgroup$ – user7952 Jun 13 '15 at 11:30
  • $\begingroup$ @geekgrrrl I believe I have the issue I mentioned in my previous comment covered. I'll need to create some new images and make a few updates to my answer. I'll edit it as soon as I can find an hour or two of peace and quiet. Probably this evening or night. I find this question intriguing, and if my answer doesn't solve your issues, please let me know, because I'm prepared to offer a bounty. $\endgroup$ – user7952 Jun 13 '15 at 15:51
  • $\begingroup$ Haven't had a chance this week to try your solution - work is crazy at the moment. Will let you know as soon as I do though. Probably the weekend. :) $\endgroup$ – geekgrrrl Jun 17 '15 at 12:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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