Ultimately, I would like to display slope arrows on a surface (controlled by a grid) where the arrows follow the vector of the downward slope. I have tried following the link below - https://gamedev.stackexchange.com/questions/167347/how-do-i-find-the-downward-sliding-direction-of-a-plane however, have got stuck not being able to have the 'test axis' object rotate appropriately to show the direction of slope.

A stretch goal would be to have a stored attribute with the slope value at the grid point. From there I could either use the value to drive a colour range material or/and label each arrow with the value.

Current progress. I would like the green axis of all the objects pointing down the slope, perpendicular to the surface normal

(Blend file - Blender 4.1)


Thank you everyone for your help! I think I have got to where I wanted

I have uploaded the file below

(Blend file - Blender 4.1)


2 Answers 2


To align the arrows along the slope, you can use a cascade of two Align Euler to Vector nodes.

The first creates the alignment along the slope (rotation on the Z axis only, so that the X points in the downward direction) and the second aligns the up vector according to the Hit Normal.

However, since you are sending the raycast from bottom to top, I first reverse the Hit Normal so that the Z-axis is pointing upwards.

Something like this:

(Blender 4.1.1+)

  • $\begingroup$ This is messing with my head. I can't visualize why it works.. (later) OK, got it .. X alignment to Object-Z x Normal-Z. $\endgroup$
    – Robin Betts
    Commented Apr 29 at 17:58
  • $\begingroup$ @RobinBetts Don't mess with my head! :D ...is there a reasonable suspicion as to why it should not work? $\endgroup$
    – quellenform
    Commented Apr 29 at 18:13
  • 1
    $\begingroup$ Maybe not for you... me.. everything goes clunk ... clunk ... clunk :) $\endgroup$
    – Robin Betts
    Commented Apr 29 at 18:15

this solution to calculate the slope consiste to add a Mesh Circle, with the same normal and position as the arrows, then select the lower point of the circle then calculate the incoming vector position and use it in order to get the good slope angle. I didn't try with your .blend so I don't know if you can adapt it.

enter image description here enter image description here

The .blend:

Have a good day.


You must log in to answer this question.

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