7
$\begingroup$

I've got a project I'm on where I must project some shapefile generated country surfaces onto a globe. Here's where I am currently...

enter image description here

Now, the shapefiles I used have excellent vertex resolution about the edges of the countries, but has only 5-10 vertices within the boundaries of any country. This is because the shapefiles were not meant to be curved at all, they're meant to stay flat (or were designed for that purpose, at least). That's why off to the left we can see the gray background between pink and blue -- the Americas are floating.

If we move the countries toward the globe any closer, large countries clip through the globe as seen below.

enter image description here

Shrinkwrap

My plan for country projection was to shrinkwrap the countries to the globe, but that results in the same clipping as above due to the low interior vertex count.

Subsurf

I tried increasing the count using subsurface-division, and that crashes blender. I believe the issue is the HIGH vertex count at the edges -- Russia has 24,000 vertices. So when I subsurf Russia, it just stalls and crashes after half an hour of crunching on it.

Decimate

To decrease the vertex count, I tried decimate. However, it spawned two problems:

  • Some countries are 1 face & thus cannot use decimate which needs 3 faces minimum.
  • Even decimating Russia until it's unrecognizable (~1000 verts) still leaves a crash-worthy vertex count.

Question

All I need is to project these countries onto the globe. I don't know where to go from here. Maybe increasing the vertex count a very slight amount for each country with some other modifier or program... or by hand. Then shrinkwrapping.

I feel like there must be some to that just does projection on a surface based on tris instead of verts.

Anyways, any ideas for different approaches or improvements on this approach are very welcome. :)

EDIT -- Adding blend file In there we have the countries all parented to an empty called "Core". I've been scaling the core up and down to get the countries where they are now.

EDIT 2 -- I didn't consider there actually is another constraint. The country vertices need to be mapped to the nearest point on the globe.

$\endgroup$
3

2 Answers 2

8
$\begingroup$

You could:

  • Select all you countries and join them with CtrlJ
  • Create 2 grids (delete faces only, keep the edges), one for the front, the other for the side view:

enter image description here

  • Select one grid, shift select the pink object, go in Front view, go in Edit mode and in the header menu, choose Mesh > Knife Project. In the Operator box, enable the Cut Through option. Do the same for the second grid (side view), here is what it gives:

enter image description here

  • You could as well use a sphere as a grid:

enter image description here

  • Give your pink object a Shrinkwrap modifier, increase slightly the Offset so that the sphere and the pink object don't cross each other:

enter image description here

You can give it a bit of thickness with the Solidify modifier.

$\endgroup$
1
  • $\begingroup$ This seems like a great approach! I'm still hitting stalling issues, though. I tried joining the countries & knifing, but got a very long wait. To decrease the computation, I tried just knifing with a single country and still got a long stall with no response. Did you also have a long wait time for the computation to complete? $\endgroup$
    – Qfwfq
    Commented Nov 24, 2020 at 22:47
5
$\begingroup$

Blender 2.91 introduces a new Exact solver for the Boolean modifier, which allows this to be done entirely with modifiers.

Add a solidify modifier, followed by a boolean modifier to the country.

Set the solidify modifier so that it fully intersects above and below the Earth's surface (see my settings below).

Set the boolean modifier to intersect, exact mode, and with self turned on, and set the modifier target to Earth.

enter image description here

Here I've done this with China and Russia, which have the most distortion.

You should be able to copy the modifiers to every country, but it took a while for just one country, so you might not want to do all countries in one go. Also you might want to apply the modifiers when done.

enter image description here

$\endgroup$
5
  • $\begingroup$ Shoot, I've been trying to replicate your process, but I'm not seeing the solver options in Blender 2.9. I just downloaded it, opened my file, and only see the old options for the boolean modifier. $\endgroup$
    – Qfwfq
    Commented Nov 25, 2020 at 2:09
  • $\begingroup$ @Qfwfq The feature is new in 2.91 beta - you need to get it from builder.blender.org/download $\endgroup$
    – Wossname
    Commented Nov 25, 2020 at 2:18
  • $\begingroup$ Thanks! I didn't realize there was a 2.9 beta and another 2.9 version. $\endgroup$
    – Qfwfq
    Commented Nov 25, 2020 at 2:28
  • $\begingroup$ I have to work on a couple things first, but I will try this tonight and accept whatever answer works. :) $\endgroup$
    – Qfwfq
    Commented Nov 25, 2020 at 2:38
  • $\begingroup$ 2.91 has now been released, so it's no longer beta! $\endgroup$
    – Wossname
    Commented Nov 25, 2020 at 19:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .