2
$\begingroup$

complete Blender noob here. I've worked with other node-based programs in the past so the geometry nodes seem (for the most part) intuitive to me. But Blender is obviously a different kind of beast...

So I'm trying to create an animation where I'm drawing airplane paths from one city to another on a scaled-down version of earth. I have created a model of earth using Blender Gurus (Youtube) tutorial. Now I have gotten two example cities (Berlin, Germany and Faro, Portugal) and am trying to draw a path between them.

I created a bezier curve object and created a curve in geometry nodes, where I'm setting the start and end points based on decimal coordinates I got from google maps. Then I'm converting from these to cartesian coordinates, which kind of works. I mean the points end up in the right kind of area, but not really on point. I'm using the basic formula using math nodes:

x = r * sin φ cos θ
y = r * sin φ sin θ
z = r * cos φ

How come this gives me slightly offset x, y and z coordinates above the surface of the sphere that represents the earth?

In the next step I'd like to bend this curve so that I'm not getting a straight line between the two points but one that wraps around the earth like an airplane would. The shrink-wrap modifier kind of does the job, but I obviuosly want the bend to be wider in the middle section of the curve, so that it starts, lifts of and lands at the end. How could this be achieved?

Thanks a lot in advance for your help!

Here is the blender file for reference: https://drive.google.com/file/d/1GDZ-SrWJNnqZ5Mb6tcRk8uV4Fga5Q6ti/view?usp=sharing

$\endgroup$
3
  • $\begingroup$ "So I'm trying to create an animation where I'm drawing airplane paths from one city to another on a scaled-down version of earth." You don't need any coordinates or formulas or Geometry Nodes for single curve. Why do you think differently? Just make a curve add bevel and animate start/end factor. Why are you talking about formulas and coordinates? $\endgroup$ Aug 9, 2023 at 9:34
  • $\begingroup$ In the final project I want to have multiple coordinates on earth that are connected via seperate lines. Since I don't want to draw all the curves manually, I want to automate the process and go through a list of coordinates and procedurally create all lines. $\endgroup$
    – Sascha
    Aug 9, 2023 at 12:49
  • $\begingroup$ Apart from the problem to draw a curve over the Earth's surface - when you say "the points end up in the right kind of area, but not really on point" - I could imagine if the cities' coordinates you are using are the real world GPS coordinates, the problem might be that the image textures are not perfectly matching real world positions when projected onto a (not exactly matching the Earth's shape) sphere. $\endgroup$ Aug 9, 2023 at 13:53

1 Answer 1

1
$\begingroup$

To solve this task, you actually only need the following setup:

enter image description here

Here I first resample the curve, whose end points you have already positioned correctly, and move the resulting intermediate points. Since the earth is (almost) a sphere, only the position vector must be normalized and scaled with the earth radius.

The offset is caused by the fact that your sphere has too low a resolution, and therefore the line does not appear as if it were resting on the sphere. ...and because your "Earth" has not exactly the same radius you use for the curve. For example, if you create an Ico Sphere with Geometry Nodes and the same radius, you will see that the sphere and curve match exactly.

If you also want to position the curve a little further away from the center, you can use Float Curve, for example. If you use the curve factor here, you can define any curve that is additionally used as scaling:

enter image description here


(Blender 3.6+)

$\endgroup$
5
  • $\begingroup$ Thank you so much, that's exactly what I was looking for! This really is an amazing community. I chose the low poly sphere following the tutorial I mentioned. I will try replacing it with an Ico Sphere. Would there be a way to get the actual radius of the earths sphere (which is a separate object in my case) as a value that I can use in my curve object? I was thinking this should work with a named attribute but I can't seem to make that work. $\endgroup$
    – Sascha
    Aug 9, 2023 at 12:46
  • $\begingroup$ @Sascha You are welcome! Regarding the radius: If you did not create the sphere with Geometry Nodes and it exists as a mesh, then it is not possible to capture the exact radius. However, if you create the sphere with Geometry Nodes (i.e. in another node tree), then you can use Store Named Attribute and read this value with Object Info and Named Attribute in this node tree. $\endgroup$
    – quellenform
    Aug 9, 2023 at 12:56
  • $\begingroup$ Interesting. I guess things work differently than I would have expected in the geometry nodes. So would you recommend setting everything up in one object and creating everything in one node tree? I'm aiming to create some 20 paths eventually. $\endgroup$
    – Sascha
    Aug 9, 2023 at 13:06
  • $\begingroup$ How would I best animate the "flight path" like as if a plane was flying from one city to the next? If I change the End value on the Trim Curve node it will always create the full arc from starting on the ground to landing on the ground and just changing the distance, not gradually going up and then coming down at the destination city. This looks only correct if the curve is flat on the sphere, with the arc the Trim Curve becomes useless... unless you want to simulate something like changing the distance of a club in some golf game ;) $\endgroup$ Aug 9, 2023 at 14:09
  • $\begingroup$ What I mean is this, the left side shows how it looks if I animate the Trim Curve end value, the right side is what I would want it to look like: flight path animation $\endgroup$ Aug 9, 2023 at 14:56

You must log in to answer this question.

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