Seeking workflow and/or code to turn all normals on a curve to face outwards

I am a fairly experienced Blender user seeking a very experienced Blender user in order to work out how to achieve a workflow for a visual involving bezier curves. This may involve modelling and/or python coding.

Ideally I’d like to be able to use the workflow from here on out to build my own project and code, if supplied, should be reasonably well commented to allow me to learn the functionality and extend the code. I am fairly experienced with C# and 3D programming for games, but I’m new to Python and a novice at Blender coding.

I’m not looking for a finished, polished render or completed 3D assets - I’m solely seeking a workflow that results in an array of roads evenly following a bezier around a sphere (see examples below).

I’d hope that an experienced Blender user could work this out in a couple of days.

I’m currently trying to build a network of interchanging, overlapping roads similar to the image below, which is then wrapped into ball of twine (but roads).

I’ve got one road working, as seen in this tutorial , then wrapped it into a ball with this answer.

The following is my current effort (file link here ):
image
You can also see this attempt as the blue ball in centre right of the following image (the other images are examples of my ultimate goal):

Here it is in 3D! =D

Junction Test01014 by reverendspeed on Sketchfab

I’ve also hacked together an example of what I’m trying for by subdividing spheres and erasing faces. The overlapping pathways are similar to what I’d like to achieve with curves:


I’m doing my best to explain myself and indicate the end goal here, but in case things are still unclear, please feel free to PM me and we can work out some VOIP or whatever. =)

My problem is I can’t seem to get the roads to all face outwards - the beziers are being bent somewhat randomly. I’ve been pointed in the direction of this control , but unfortunately I’d need to apply all my modifiers and then change the direction of the bezier control points independently - which obviously slows iteration to a crawl.

I’ve been trying to think of what kind of code I need to get all the normals oriented correctly - presumably:

  • I import Math and Mathutils
  • select all the curve points ( bpy.ops.curve. select_all ( action=‘TOGGLE’ ))
  • and get a Vector3 list of the curve points
  • Going through each point, I’d get a Vector3 from the centre of the bounding box to the current point
  • Then set the bounding box quaternion to face the Vector3 direction…

If I try to apply the rotation, will this happen to the modified object or the underlying data? Would it be possible to undo this change when I want to unroll the sphere and edit the underlying bezier?

Additionally, I’ve tried using bent normal modifiers by converting the curve to geo, bending the normals and converting the geo back to a curve, but have had no satisfactory results.

I’m really confused, folks. I think I’ve talked myself into a corner here, and I’m not sure where to start with the code. I’ve reached the limits of what I can do with modifiers, I think, so here we are.

At the moment, I’m looking at paying something like €30.00 for the job, but I’m open to hearing your quote. This is a personal project of mine, but it’s driving me around the bend…!

This topic was automatically closed after 90 days. New replies are no longer allowed.