Recreation of the Second Life Camera System

Hello,

in the past weeks, I was trying to recreate a camera system which is part of the old 3D Chat application called Second Life.

The reason for recreation is the idea to have it inside of a game project I am working on at the moment and having a very stable system for navigating in any other UE4 application.

**Within the attempt of recreating it, I am running into several walls that at most times seems to be either related to the camera spring arm functions or maybe the way I am trying to build this system. I am a Senior 3D Artist with let’s say very basic Blueprint understanding. If I watch tutorials or read documentations, I am able to understand several functions and also be able to determine if certain ways might be suitable for what I try to achieve. The issues I have here might be related to missing knowledge, while on the other side I was being able to test different approaches but none of them really worked out by the end of the day.

I asked friends, I went to Unreal Slackers and got some help and kinda crawled through dozens of forum threads, tutorials, and videos for functions that could help on building up this system but at the moment my brain is burned out and I am completely out of ideas. I think I need to rebuild my system - but I would need some help from the community.

If I might be able to make this work, I would really love to put this little gem for free here and/or the marketplace itself because I think it might be a very nice addition for both game-devs and also people with relationships on architecture and automotive-related topics.**

Here is a video reference on what the Camera system is all about:** Second Life Free Camera System - YouTube**
-----

Starting position:

  • You have your current third person character camera which is working like any other third-person camera by using the spring arm for camera boom and rotation things.
  • You are using the right mouse button for rotating camera with character

**The extended camera system:

Once you hold the Left Mouse Button + Alt, you are able to:**

*- look at something

  • move the mouse up or down to zoom in/out to this point of interest
  • move mouse left or right to orbit

**If you hold ***the Left Mouse Button + Alt + Ctrl, you are able to:

- The same function but zoom gets replaced with orbit up and down. Like typical rotating around a character or actor. You could actually just add the Ctrl button while you already hold down LMB and Alt.

***If you hold ***the Left Mouse Button + Alt + Ctrl + Shift, you are able to:

- Panning the current view by moving the mouse into any direction.

**-----

While the system sounds like some weird finger acrobatic, it is very easy to learn in a couple of minutes and gives a very strong navigation tool on your hands.


So, as I told I already worked on this system for a while and was able to build (trial and error hacking…) certain parts.

What is working:**

  • Looking to a point in space by using the Trace under Mouse Cursor functionality, getting a hitpoint location, and using it as a new point of interest.

  • Once the Character moves, the current camera view from the look-at and transform from the panning lerps back to the original position.

  • (Partially working) Panning the camera while holding the buttons. Strangely this only works once the character was moved once and the camera has to be behind the character to function properly.

Why I got stuck?

My current issues seem to focus on how the whole system was build up and how the camera boom, character pawn, spring arm, etc may allow getting altered by inputs.

  • Once I am looking at a direction, I tried to give the camera spring arm a target offset. This works fine, but the camera is “stuck” on the spring arm and I was not being able to say: Camera needs to stay where it is, but look into the direction of the target offset and/or the impact point from the mouse cursor. Instead, it’s breaking my nice working “look-at” and let the camera jump.
    I tried to detach the camera but the spring arm seems to ignore it or doing very weird things then.

  • I tried to determine the distance vector length between the current camera and the impact location, making this the new spring arm length. Actually, the spring-arm hates me and is ignoring it.

  • I tried a lot of detaching, attaching approaches. Tried it with a second spring arm which behaves as bad as the first one

  • I did not try it with two cameras because of missing knowledge on how to switch these but keeping everything like the lerp functions as smooth as possible.

  • panning seems to be altered by some scene component as well “even” when I detach almost everything there.

**-----

Here are the Blueprints. Maybe somebody could spend a minute or two looking at it, telling me that I probably am insane.

Tomorrow, I will try a completely different approach to the whole system but hope to get some collective brainstorming and help here to bring this baby to life.

Some notes on this because I already got some answers and suggestions:

  • You probably want to use state-machines there.**
    Maybe yes, I have no experience with this particular topic and no idea where to start.

- You may make use of a second camera
While I’m pretty open to this idea, I have the fear that it ends up looking bad. I really would love to achieve a pretty smooth interaction with literally no gaps or visible hiccups.

- Do it in C++
See me as some very drunk and stupid Viking who found a magician’s magic wand and waves it, grunting why its spitting fire sometimes and sometimes not.
I am just an Artist but in my nearly 21 years of creating 3D Art, I’ve never spent much time on programming because there are a lot of people who can do this better than I would ever be able to. That would be a waste of time. I would love to stick to Blueprints and try to get the best out of it as possible. By the end of the day, this system here is like 2% of the whole project I am planning and building up at the moment. Most work will be on the Art side and I would love to keep the backend as simple as possible first till the project has more funds to afford a full-time UE4 tech-artist / programmer.

**http://i.imgur.com/qIRfd8M.jpg

https://i.imgur.com/qIRfd8M.jpg
**

— reserved for updates // release, etc —

Hey,

You could use our Orbit Camera System for this:

You would just need to bind you key combinations to it. There is also an example included how to change the focus point to other places in the world.

Best
RealVis