Geometry Nodes - Billboards (similar to track to constraint)

I'm trying to make flat planes that face the camera (billboards) using geometry nodes.

It's pretty easy to do with particles, you just add a track to contraint pointing at the camera.

I started with this thread: via Geometry Nodes' points tracked to camera

But it rotates them all, hard to see without changing the texture:

Here is my attempt at using it for billboards:

Trees do not stand up straight, and rotate around when you move the camera. I've tried playing with different settings, but nothing looks right.

Ideally they would always be straight up and down relative to the camera.

Another nice option would be if they were always straight up and down globally, so the top always was going up the Z axis, but the first one would be preferred.

I would also prefer to use current blender nodes and not the 3.0 ones, since they would be more backwards compatible (but b3 would be interesting too)

Here is my file:

This answer is given using Geometry Nodes (Fields), using Blender 3.0b. I would recommend that, if possible; the system has changed quite radically.

However, the principle remains the same: 2 Euler alignments are required to establish an orientation:

1. The Point position is subtracted from the Camera position to give the vector from Point to Camera (All positions, vectors in the modified object's, the ground's, space)
2. This arrow-object's Z axis is along the front-facing normal of its face. First, that is aligned to the camera, around an arbitrary axis.
3. The arrow-object's Y axis is along the arrow. We now know its Z is facing the camera, so it's safe to spin around that, to get it to point up the ground's Z axis.

• Hi Robin, this is an amazing solution! May I use this in one of my YouTube (SouthernShotty) tutorials if I credit you and this post? Jan 21, 2022 at 17:30
• @Shotty Sure thing, no problem. Same goes for anything of mine here on BSE,, thanks for asking. :) Check solutions out thoroughly for yourself before publishing! Jan 21, 2022 at 18:03
• Thank you so much! Jan 24, 2022 at 15:53
• I believe you can just set the pivot on the first align Euler to vector to z and not need the second one May 28 at 12:10
• Hi, @shumel.. that doesn't make sense to me.. trying to align an axis to a vector by rotating about itself? Are you doing something else as well? I've played around, attempting to figure out what it could possibly be. May 28 at 16:38

Im doing this that way. It does not create any unwanted rotation.