# How ought I lock particles' rotation so that they always face their velocity vector?

I have a particle system that manages a bunch of very small spaceships coming from a mothership, and I'm wondering if there's an efficient way to make each of those particles face its own velocity vector.

Each particle is independently affected by a set of force fields I have set up to give them a natural path. They are emitted from a single vertex with a random velocity between zero and one,and I have managed to get them to face their original velocities by enabling Rotation and setting Initial Orientation to Velocity/Hair.

I have tried various combinations of Angular Velocity and Dynamic rotation settings in hopes of achieving the desired effect, but no dice so far. Any ideas?

Top left field attracts, middle field repels, bottom right is wind, and the top right field is magnetic.

• you say "I have managed to get them to face their original velocities", so what happens that rotates them differently? and when? Also "affected by a set of force fields I have set up to give them a natural path" is not that clear, you could add info/images to show better how particles are affected in your setup. – m.ardito Jul 21 '17 at 6:54
• A suggestion is to use a Follow Path Constraint with multiple paths and [plain objects without particles] as a means of thinking about your problem and explaining your problem. You may find it convenient to use Python Script. Possibly BAN ... Blender Animation Nodes. Perhaps you will receive other experienced ideas. Physics Curve Guide may be investigated. – atomicbezierslinger Jul 21 '17 at 7:16
• @ m.ardito Their rotations do not change, their velocities do, and as such the rotations do not match any longer. I will add an image of the path the fields create. @ atomicbezierslinger I may end up trying that, thank you. The problem with that course of action is that I want to have somewhere between 2500 and 10000 little space ships, which is a lot without a particle system. – Henry Wilson Jul 21 '17 at 8:37
• In the previous comment I mentioned so programming ideas such as Python or BAN. Scripts can generate parameters to [Constraints] which have many settings and can be combined. The result is variation possibility. The user will not deeply see 10 thousand spaceships [at once], with the ability to count them or to perceive high level of detail. A suggestion is to determine if path banking is a priority and use Follow Path Constaint if that suits you. You may want to state if are open to using Python, if so, you may want to tag your question with Scripting. – atomicbezierslinger Jul 21 '17 at 16:18

This can be done using the Animation Nodes addon. I've made a node graph that makes particles orient to their velocity. It's kind of a hack, but basically the idea is to create an instance of the ship for every particle in the scene, and then rotate the instance according to the particle's velocity. So essentially, you're replacing Blender's particles with your own. Also, you should make the original particles invisible by going to Particle System tab -> Render and selecting "None".

Here's the node graph:

And here's a proof of concept using this node graph:

• Unfortunately this addon is not available for the 2.8 test builds (which I foolishly started this project in), but this is exactly what I'm looking for. Which of those nodes specifically are part of the addon? Or is the whole panel in which they sit a part of the addon? I'm not afraid of doing some vector math myself if there's a way to duplicate this effect in vanilla blender. – Henry Wilson Jul 22 '17 at 19:25
• @HenryWilson The addon adds an entirely new node system called Animation, next to the current ones (Compositing, Shader, and Texture). Which means that node graph you see in the picture is only available as part of the addon, but you can totally do this effect in vanilla Blender, if you're willing to do some Python scripting. Since Animation Nodes is just a visual programming language, you can recreate the node graph in Python to get the same effect. Unfortunately I don't know much about Python scripting in Blender so you'll have to do some research on your own. – Bauxite Jul 22 '17 at 20:02

Duplicate Spaceships on Faces and use a Curve Modifier

Duplicated Spaceships follow the Curve by Location and Tangent/Velocity Vector by Rotation. No unwanted distortion.

The GIF above is OpenGL Render Active Viewport ... Not Final Render. Thus you see one SpaceShip Not Following Curve ... Lets call that the Original Design Time Object ODTO. In Final Render the ODTO will not be visible.. so all duplicated Space Ships will follow curve. I am emphasizing a difference between design time visbililty and final render time visibility.

In the image above a mesh named [DuplicateChildren] is composed of squares in straight line is highlighted. Note in the Duplication Tab [Faces] is selected. This instructs Blender to make duplicates of Child Objects as seen in the tooltip. One mesh object creates many space ships for final render efficiently in terms of memory. Its child object is SpaceShip as indicated in the Outliner Window. For every face in the Parent mesh a SpaceShip is rendered.

The DuplicateChildren mesh has a Curve Modifier. As indicated when the Blender User animates the DuplicateChildren mesh in the X direction it duplicated children SpaceShip follows the curve as well.

Example of Final Render image where all SpaceShip shapes follow curve.

I am attempting to cover Keypoints only here. You can experiment and learn and improve what is shown here.

More to Follow

I believe using a Curve as a tool will give you easier and more precise results as part of your final solution. You can have many of the above arrangements. For the high population you stated you want, may need to compose many techniques.

I believe I have other answers using Duplifaces or Duplication on Faces as well.

See other answers at BSE on Duplication.

See the Blender Manual as well if you dare for more mastery.