How to move a light inverse to the camera's movement?

For this wormhole I have a point light slightly in front of the event horizon. It creates a good shimmering effect like in Stargate.


However, when the camera is moved to an angle, the reflections also shift. In Stargate, the lighting stays in the center of event horizon at all times.

I’m trying to figure out a way to move the light inverse to the camera, essentially making the light’s reflection stay in the center of the puddle. Any suggestions?

Welcome :tada:

You might tell a little bit more about the setup or share the part of the blend which is needed… because a quick front and half-side view of my personal gate :wink: with a simple point light in front of it with only moving the camera… looks like so:

Gate_front
Gate_halfSide

Hi, I would try controlling the “lighting” directly in the material, mixing with emission more and more as you approach the center. Try remapping your noise texture to control the factor

1 Like

The solution is already there in the question. You move the light into the opposite/inverted direction as the camera so that the angle between the camera and the surface and the light and the surface is identical (but mirrored on both x and y with z being the mirror axis).
You can animate the camera, copy it, mirror it and then attach the light with a parent constraint to the mirrored camera.

1 Like

I’ve attached the blend file. I tried moving the point light to immediately in front of the event horizon; this does fix the moving reflections, but then the highlights are too harsh. I found that a point light radius of 1 m approx 3 m away from the event horizon gets the highlights looking like they did in the TV show when viewed from the straight-on angle.

kawoosh.blend (2.3 MB)

Is there a particular reason you’re using a light to create the hotspots, instead of within the shader itself?

I did try working with the shader first, but didn’t have much luck. However I think I’ll try that approach again as you and Romanji both suggested.

Somehow this is interesting…
My previous attempts seems to fail when using the OP’s file so i tried simply rotating the camera in one and the lights in the other direction…

…at a certain angle the reflections are “too much” and also “all over the angle”… ( don’t know to say this ).

Re-considering my previous attempt only n(ot rotating and and getting closer to the horizon) even does work when reducing the power of the light and/or the size:

GateLight_alt1

There is still this “horizontal reflection”… so i share (escpecially because i was askded to and also i didn’t deleted this immediatly :wink: ) my other file (with simple camera animation and “close” light):

personalStargate.blend (130.4 KB)

So maybe someone else get an idea… (?)

I now also think this effect should be done in a shader… Something like: the computation of the refection effect should not be done according to the moving camera (like when normally rendered) but still from afront and so added as “texture” ??

I took a stab at working the highlights into the shader. Got okay results:


I’m sure I could do better if I spent a while working on it. I used a quadratic spherical gradient combined with a noise texture plugged into a Mix Shader, to make the highlights (an emissive shader) more prominent towards the center of the event horizon. But it still just looks like a noise texture applied over it, not like actual reflective highlights.

In lieu of that I decided to try working with the light again. It took a lot of fiddling, but I managed to get a fairly good result. Instead of a point light, I used a spot light a few meters in front of the puddle with the cone about as wide as half the event horizon. The result was the highlights show up strongest when looking at it head on, but they fade away to the side. The reflections still go off center when you move the camera, but not nearly as much as the point light.