Connecting spheres with cylinders, molecule style

Hello! Extreme newbie here… :slight_smile:

Trying to create a model of a molecule. I used this tutorial to create lollipop like objects and position them around a center sphere:


Now I need to connect the outer spheres between them with other cylinders.

I have two problems:

  1. It’s very hard to properly position a new cylinder between two outer spheres. Would it be possible to select two of the spheres and tell Blender something like “add a cylinder mesh between the center of the selected objects”?

  2. Once two outer spheres are connected (I could do it easily keeping everything on the same plane), if I use the same technique as in the tutorial, I wasn’t able to move the outer spheres in 3D space - the cylinder connecting to the center sphere would be disconnected. Is there a way to create the molecule model with all the connection I need and then be able to move the spheres in 3D without losing their connection?

In essence, I want to create something like this and be able to move the spheres while keeping them connected:

(image source)

Can it be done? Thanks for any hints or tips… :slight_smile:

Bruno G.
Montreal, QC

1 Like

The way the tutorial shows should work fine without losing connection.
To move a set of vertices to a specific location you can do so by using snap while you move the vertices.

there is a soft script to make molecules/atomss
did you check it ?

also for simple model did you checn the array DNA example in wiki

salutations

Here’s a different way:

  • Make a sphere
  • Make a wireframe mesh (eg: no faces, just edges and verts) in the shape of the molecule
  • Set the sphere’s parent to be that wireframe object
  • Select the wireframe object and in “object panel” -> “duplication” choose verts - you get a sphere at each vert
  • Make a linked duplicate (alt + D) of the wireframe object and give it a skin modifier and a subsurf modifier (in that order). You can change the skin modifier thickness with ctrl + A in edit mode of this second wireframe object
  • Now when you edit the wireframe mesh shared by both wireframe objects the spheres will update as you expect

Here’s a Blend file: moleculefile.blend (106 KB)

1 Like

Here is other way, using Group. End link atom with bond, cylinder, is parented and grouped with object center placed at the base of the link. That way when you start to add the group, it is placed at the base always. You can add this atom / bond as many times as you like.

When you start to place the central atom, make use of 3D curser. Select the sphere, hot key [Shift][C], and then select Curser to Selected. 3D curser will snap to the center of sphere. Add boned atoms, and rotate it to place:

http://i1135.photobucket.com/albums/m626/cabby24/Blender%20Pics%202013/mole_zps40731f17.png

I looked at the tutorial and here is what I did from it.


I used the same constraints than in the tutorial but I paid attention not to rotate anything in Object mode. I didn’t use automatic weights for anything but the cylinder. And I didn’t parent the central sphere to anything. I just created a branch with a cylinder and a sphere a one end.

I parented the central sphere to another armature (a single bone, in fact). After that, all I had to do what to duplicate the branch (cylinder plus sphere and the armature) as many times as needed and I parented each newly created armature with the bone of the central sphere (blue with red children). Trying to join the armatures led to an incredible mess so… Parenting is enough.

For the branch with child spheres (yellow x 3), I simply duplicated the necessary branches, move the armatures in position and re-parent them to the bone at the end of the branch (blue without red children).

Here is the file: Forum Molecule.blend (283 KB)

Enjoy!

Hi –

This page has a script that lets you select two MESH objects and it creates a cylinder between them:
http://mcngraphics.com/thelab/blender/connect/
There is also an example on that page using the script to draw atoms from a PDB file and connect with cylinders.