Intended usage of the Visibility Trace channel

UE4 comes with two trace channels by default - Visibility and Camera. I’m trying to figure out what the intended purpose of the Visibility channel is. Visibility seems like it should be intuitive. I would generally assume that it’s blocked by things which are visible. In reality, it seems to have very strange behavior - it’s blocked by most visible things, but not by Pawn or CharacterMesh. Intuitively, I would generally assume those should block the Visibility channel, as they’re both usually visible - especially CharacterMesh whose main purpose, as far as I know, is to be visible.

What’s the intended usage of this? Why does the “visibility” channel not match up with, well, things that are visible? How is this meant to be used? Am I misusing it, or is it simply broken? I’d really appreciate it if someone explained what’s going on here :slight_smile:

I think what’s going on is that traces respond according to the collision properties on the things they hit. So since character meshes’ trace responses are generally, by default, set up to ignore visibility, they don’t block any visibility traces. Look at your character mesh collision properties and see if they’re anything like this:

43406-examplemesh.jpg

…I know this isn’t really an answer as to the higher-level intended purpose, but at least it’s a way to see exactly how particular things interact with traces. I would guess that just because meshes/pawns are visible, you might not want them to block visibility traces to things behind them, given how often meshes and pawns move around…

Edit: I think my previous answer just linking to the documentation was pretty unhelpful and my understanding of the issue probably got a lot better. So here’s a hopefully more helpful answer :slight_smile:

I believe the Engine’s default settings are set up in a way, that makes the most sense in the context of a first person multiplayer shooter.

So in the case of the visibility channel, I guess you might want to use it to see if some important building is visible to the

try that

1 Like

I’m going to bump this one and hope someone answers. My guess is that Epic, by default, doesn’t want characters to be taken into account when determining line of sight, but an official response would be great.

That blog post is helpful for describing how collisions work, and (because it uses the Visibility trace channel in a simple example) almost describes the intent of Visibility. But not really. The question is: “Why did the authors of Unreal hard-include a channel named Visibility? When might you use this?”

bump :slight_smile: can’t seem to find an explanation (for all intents and purposes of use it works the same way as any trace, the question is: why that name, what is its intended use)

Bump :smiley:
This is an old question which should be answered. Right now I’m using these channels when doing line traces without any clue which one of them should I use. The clarification would be amazing.

It took me a while, but I wrote a post about my understanding of Visibility vs Camera channels: Visibility vs Camera trace channels in UE4 confusion

TL;DR; version: I think that pawns and characters have the default Visibility channel set to ignore because they behave like semitransparent objects. You could perform a shoot line trace to the enemy character but you can still miss as it could goes under it’s armpit or between it’s legs… This is also why I’d prefer Camera channel for such line trace.

2 Likes

According to my knowledge, the engine uses the “Visibility” trace channel for it’s foot IK system and the “Camera” trace channel is used for collision of the camera boom arm so that the camera moves closer to the player as to not block view of the player character. I’m still new to unreal and it’s my first comment in any forum over here, so pardon me if I’m wrong in any way.

TLDR;: more or less, it’s is anything visible but for pawns and related objects.

Looking at the Unreal source code, some of the usage I found are:

  • When the AI checks if the player is visible (where typically, anything visible should block the line of sight but not pawns)
  • For radial damages (same deal, anything visible/solid should block the damage but for other pawns)
  • Sound attenuation also uses that channel.
  • Control rigs uses it. I don’t know what for, but what IndieDev404/DEATHSTROKE218 mentioned makes sense: IK, where it’s usually preferable for a pawn to walk through other pawns rather than climbing on top of them or being blocked by them.