Enabling SpringArmComponent to Only Trace Custom Collision Channels

#Alternative: Exposed IgnoredActor array

Alternatively to what I wrote below, or in addition to, it would be great to have access to the IgnoredActor list that the springarmcomponent is using when tracing

That would enable absolute precision and customization of camera effects :slight_smile:

Thanks!


Dear Friends at Epic,

#Requested Change For Simplicity of Sweeping Changes

It would be lovely if we had the option in the .h file to select which collision channel the traces were performed in for USpringArmComponent!

This way I could create a custom camera collision channel in my config file, choose how exactly it will work and how exactly other collision channels will respond,

and then only have to change things in my config file whenever I want to make sweeping changes later in project development as to how the camera collision will work.

#Current Situation

Currently, to change whether characters trigger the Spring Arm to contract or not, you have to go to the individual characters’ blueprints and make sure that all components with collision are set to ignore camera.

For example I had a skeleton that had a mesh and a capsule with collision

I had to change both to ignore camera to make the spring arm work as I wanted it to.

#Special Thanks

Special thanks go to Jeff Verba for figuring out this solution!

I spent months trying figure this out on my own and Jeff Verba is the one who figured it out!

#The Change

Again the change would be the a BlueprintReadWrite option to make it so that the springarmcomponent traces against a specified collision channel.

This option I would then set via C++ to work with my chosen custom collision channel

I have extensive documentation about this request because it was my assumption of how things already worked, as you can see in this thread:

https://rocket.unrealengine.com/questions/12637/how-to-make-a-custom-collision-channel.html

I am presuming that wherever the trace occurs you can just just change the trace channel there to be a blueprintreadwrite ECollisionChannel variable :slight_smile:

:slight_smile:

#More Special Thanks

Special thanks to all of you Awesome Epic Devs and Michael Noland for making this awesome class!

It made my life so much easier than implementing my own camera collision system from scratch!

Thanks Michael Noland!

#:heart:

Rama

I have to agree with Rama on this one.

While I GREATLY appreciate the Spring Arm Components, the workflow for their collision seems backwards.

From what I’ve experienced so far, all other object collision is built around identifying what other types of objects they interact with, as seen in any components default collision settings. You can easily setup what and how you want any object to react to with a few simple check boxes. From a workflow standpoint this is great, because for every custom component you can tell it exactly what types of objects you want it to react (or not react) to, and you only have to worry about setting it up or changing it in that one object class.

However, the Spring Arm Components actually work against that workflow, and can potentially cause issues like what Rama ran into just because they work opposite everything else.

While you can currently set the Query Probe Collision Channel directly in C++ or the editor, what it’s actually doing when you set it is assigning the probe to a collision trace channel, instead of telling it to react with certain types of collision trace channels. This means you need to update all of your other objects and actors collision according to what channel you set the Spring Arm to in order to get your desired results. Again, this is opposite of how all other object collision I’ve encountered actually works, which makes it a bit harder to understand and get working properly.

Ideally for me it would be great to make the Spring Arm Component Collision settings identical to the other objects and components, where the details panel (I haven’t worked closely enough with the C++ yet to know where these settings are at for custom Actors or Objects, but I’m sure they are in there somewhere) gives you all of the options to setup how you want it to work (like in Rama’s picture above). That way it works consistently like everything else, and from a workflow standpoint you only need to update that one component (unless you are making big overhauls to everything anyways) to get it to react the way you want with everything in your game. Otherwise, as is you need to update every custom actor you make relative to how they should react to the collision trace channel the Spring Arm belongs to.

Just my 2 cents worth on this one.

Sincerely,

Jeff Verba

Hey Rama and Jeff,

Thanks for all the feedback and suggestions! I’ve filed a couple of feature requests for the changes you guys are requesting, hopefully we are able to implement some of these changes for you guys.

Thanks again for all the feedback!

-Steve

Thanks Steve!

:slight_smile:

#:heart:

Rama