Isn't the Scene Component supposed to be like a Child Actor Component, but with viewport?

What’s the point of a Scene Component over an Actor Component, if I can’t even do anything with the “scene”, because it ain’t got a viewport and I can’t add anything?

I intend to use the Child Actor Component instead. But what is then the point of a Scene Component, if I just end up using a normal actor over a Child Actor Component? Seems to me that the Scene Component is useless and should be removed.

Does anyone use the Scene Component?

UPDATE

Boys, girls, whelps. A prerequisite for game development is strong communication skills. And you jokers can’t even answer a simple question.

To clarify, I do have two questions. Question number one is a practical one. So, in which scenario would I use a BP with a Scene Component as its parent? Question number two is, why would I want to prefer such a Scene Component over an actor used via a Child Actor Component?

To give an update on what I have found. I found that if I go for the actor via a Child Actor Component. To even be able to access the actor that the Child Actor Component is holding. I Will require an addition Get and a Cast. I still prefer to put everything into a BP with an Actor as a parent. This way I can have everything put into one “package” that I can also have a viewport for.

My usage scenario is a camera attached to an arm. Depending on where my pawn is in the world, the arm angle/distance and even some offset, must be adjusted. The adjustment is done via panning, so the camera moves from one setup to another gradually not instantly.

Everybody uses the Scene Component, a Scene Component is an Actor Component with a Transform so it can be ‘In The World’ so-to-speak. The root component of an actor is always a scene component. It’s what almost every component in the engine inherits from, apart from data components (e.g Movement, Nav Data etc).

They don’t create a ‘scene’, they’re part of it. You can only have one world at a time.

I said working with a scene. Not creating a scene. And I can’t work with a scene if I don’t have a freaking viewport. Well, not entirely true. I guess I could add lights/static meshes via nodes. Or better, I just could attach the Child Actor Component and use a normal actor inside my blueprint instead. Placing this Scene Component option below the Actor, Pawn, etc., is kinda pointless.

There’s no such thing as a scene… you’ve misunderstood the description. Every object in the world that you can see, or ‘place’ in the world is a ‘Scene Component’. E.g:

  • SkeletalMeshComponent
  • StaticMeshComponent
  • ParticleSystemComponent
  • MaterialBillboardComponent

All of the above are examples of things that inherit from scene components. There’s no such thing as a ‘scene’, this is just for components that exist in the world as physical objects.

The confusing part of this Scene Component is its transform. Can you make a usage example of a Scene Component? What would I use it for? Just for logic to manipulate the transform for any other component that is under its hierarchy? Because I thought that this is supposed to be job of the actor itself, that for example is used over a child actor component.

The second confusing part is that BP can have a Scene Component as parent. If I wanted to make something special. Maybe something like a static mesh for static models, but instead of triangle based, maybe voxel based. Then it would make sense to write a C++ code and derive a class from a Scene Component or Actor, so that voxel models could be used inside the editor/game similar to a static mesh. But with BPs that is not going to work really. A static mesh component already has its code to be able to show a triangle model, and it was written in C++. I wouldn’t do such a thing in BP.

You don’t seem to understand… well, anything, to put it nicely. You should try watching the tutorial videos Epic puts on their channel and learn the basics of Unreal.

If you actually where smart yourself, you could explain a simple usage scenario in a few words. But of course you didn’t, so you are not. And I hope for your sake that you didn’t confuse the “scene” component under “add components -> Utility -> Scene”, because that’s not what I was talking about and it’s also deprecated now.

This tutorialuses a scene component with a static mesh under its hierarchy. It says that “Without the Scene Component, each time the Blueprint is added to the level, the scale and position would have to be adjusted so that only the top half of the sphere shows above the ground”

Well, what is stopping me to place the static mesh inside the viewport, lower to the ground? Nothing, actually. That’s even the default position even when I dragged the Static Mesh over the Default Scene Root (This will disable custom location and rotation though). It’s also the case when not over dragging the Default Scene Root, however. And I tested this, and this works with a mesh that got a collision model on it.

Though, the tutorial didn’t mention any creation of a blueprint with a scene component as its parent. So that tutorial is outdated… The article doesn’t have a date, but the screenshots say 2014.

To wrap up my point about Scene Components as parents to Blueprints: They seem to be useless. Because an actor can do the logic itself, and the child actor component can provide a transform with something to transform in the first place.

I have a possible usage for a BP with a Scene Component as its parent. Because actually I was dumb enough to use a normal Actor Component instead. Though, I probably just make a separated actor, and use it via Child Actor Component.

The scenario is this. I do have a spring arm with a camera on it. Now there are two different places in my game, and each of those places require a different camera angle. The current Actor Component that is attached to the Pawn, manipulates the arm and the camera according to the pawn’s location in the world. However, that’s the logic of the arm and the camera. So I just put this logic into the same actor with the arm and the camera, instead of being separated again in its own Scene Component.

You don’t understand the difference or even the meaning of Scene/ Actor Components

A SCENE Component is rendered in the Scene, you can SEE it. Skeletal Mesh Component, Static Mesh Component etc. All these Components have Scene Component as it’s parent. They have a Transform (inherited from Scene Component).
An Actor Component is DATA or LOGIC. CharacterMovementComponent, GameplayTasks all these Components have Actor Component as it’s parent, because they contain Logic and Data.

When using a Scene Component as the Root (SceneRoot), you can have a relative Transform for the children.
This is useful If you want a different pivot.

I know that. I can read the Pick Parent Class window for a BP, myself. -.-

Boys, girls, whelps. A prerequisite for game development is strong communication skills. And you jokers can’t even answer a simple question.

To clarify, I do have two questions. Question number one is a practical one. So, in which scenario would I use a BP with a Scene Component as its parent? Question number two is, why would I want to prefer such a Scene Component over an actor used via a Child Actor Component?

To give an update on what I have found. I found that if I go for the actor via a Child Actor Component. To even be able to access the actor that the Child Actor Component is holding. I Will require an addition Get and a Cast. I still prefer to put everything into a BP with an Actor as a parent. This way I can have everything put into one “package” that I can also have a viewport for.

My usage scenario is a camera attached to an arm. Depending on where my pawn is in the world, the arm angle/distance and even some offset, must be adjusted. The adjustment is done via panning, so the camera moves from one setup to another gradually not instantly.

These components are not done with a BP as far as I know. They are done with C++. I’m talking about BPs. That’s why I posted inside the BP forum section. And that’s also the reason why I posted a screenshot of the Pick Parent Class window.

Do you know when that window shows? Yes, it shows when you create a blueprint… So, my secondary question is this. Why is that even placed under Common Classes and not under All Classes?

Also, but this is kinda off topic. Why does this forum section even exist? What is the AnswerHUB for then? Yeah, I’m just trying to find an excuse that I didn’t use the answer. But, still, it’s a good question. -.-

Hi, im not 100% sure, but component is probably something, which you can use in actor components tab. If you open actor, you can add component “projectile movement” for example… in one tutorial i had to create “turret target component” and then i wad able to place it to any actor in components tab, so you can place it to monsters and then turret will target that component… so it will shoot monsters with that component… :slight_smile: im not sure but try to check it out

Edit: i was probably talking about actor component, so i think you can add these scene components in level, if you select mesh in level, it probably have component tam too, so you can create component with fire particle and then you can attach that fire component to any mesh in your level…

Yes, that’s how it works. With the only difference between the Actor Component and the Scene component, that the Scene Component gives a BP a transform. So if a turret’s logic would require to manipulate its child’s transform through its own transform, it could do so if the BP was parented to a Scene Component instead of an Actor Component. However, a Scene Compton still doesn’t provide a viewport like an Actor parented BP would.

I think the Scene Component is meant to be under the Common Classes because it ain’t finished yet. There is going to be a viewport in the future.

However, personally I would prefer not to have to use a Child Actor Component, or a Scene Component (with viewport). A BP should be like in the UE4 World Outliner, that I can attach even a normal Actor to another normal Actor. Just like in Unity where I can attach one Game Object to another Game Object, and use it as a prefabrication from the content browsers.

UE4 views this Actor thing and Component thing too strict. At least now its feels like meh. Because neither the Scene Component is completed, nor the Child Actor Component doesn’t come without additional extra node hassle(One extra Get node and a Cast). There are even separated Static Mesh, a Static Mesh Actor, and a Static Mesh Component. What’s the difference? Regarding the static mesh feature itself, nothing. Only that it is a component. So you can use that to construct within a viewport inside a BP. And that’s all.

USceneComponent is a C++ class that has all of this functionality. The Scene Component doesn’t just give BP a transform, it has a transform. Everything you see in that list, has a C++ class behind it. Scene Components inherit from Actor Components.

Finally we understand what you’re talking about. You’re talking about a Viewport as part of the Blueprint Editor, not as another scene or world?

It doesn’t give you a viewport because you don’t need one. Don’t think of the Scene Component as an object in the world, think of it as an object on an Actor. The Child Actor Component IS is Scene Component, it just instantiates and attaches and actor to whatever actor owns it, nothing more. That’s all any of them do. Additionally, in order to support any form of rendering - you need to use a Primitive Component. Scene Components don’t render anything. Primitive Component inherits from Scene Component and adds that support.

The Scene Component is most definitely 100% completed, any object you can see in the engine uses the Scene Component. The Root Component of an Actor is always a Scene Component, you’re just misunderstanding it’s usage. You can’t just place Scene Components in the world because they inherit from Actor Components, which NEED to have an Actor as their owner. This is why everything that’s placed in the world, even if it’s just one component (such as a mesh), is wrapped with an Actor class. Here’s the explanation:

  • A Static Mesh is an asset.
  • A Static Mesh Component is a Primitive Component (which inherits from Scene Component), that supports rendering a static mesh.
  • A Static Mesh Actor is an Actor, which has a Static Mesh Component.

I’m in a similar situation with my homing missile implementation know. But I don’t need a scene component with logic on it, I only need a transform. Do you use tags or a BP’s nodes to identify the market spot to shoot at?

As Jamsh mentioned, a Scene Component simply allows you to bundle some logic into a component that has a transform.

An example use case could be a muzzle for a weapon:
You could create a SceneComponent that handles spawning a particle effect as well as the projectile itself.
Any weapon blueprint you create could then make use of this component to handle firing, you’d simply need to place it in the appropriate location within the blueprint editor and call the appropriate methods against it in your graph.

An example for an ActorComponent could be the magazine for a weapon:
You could specify attributes for things like maximum capacity, current ammo count etc.
Again, any weapon blueprint that requires magazine-like logic can implement this component.

Sure there are a billion other ways to do this, but you asked examples…

I see. Yeah, I’m implementing a weapon system, too. And the weapons themselves are Actor Components. I just use an Arrow Component instead of a Scene Component to mark the spot, where the projectile is to spawn.

I feel your pain, man. Asking programmers questions is like pulling teeth.
90% of the time the response is worthless, but 10% you will get a reasonable answer that will lead to a solution.
I’m new as well.
The Scene Component (as I use it) is just a parent for things. I’m not sure what other functionality it has. I don’t see any videos or other material thats not using the word itself in the definition. … like … “Tired: To have the feeling of tiredness.” “Grip Dampening: For adjusting the Dampening.”

Anyway, the way I use it, is when I get a door, or other object where the origin point is the center, and I want to rotate it from a different location.
Also, when I have a group of things, I want to move together, like a button and it’s shell, and collision volume. I have them under a scene component.
I have tried this with a type of physics component, and it would break, because the physics component seems to need a physical mesh, or it gets errors. In VR, I tried shifting the lever’s rotation point to the bottom of the lever. I had a physics constraint on it, so it would move back to it’s original position when released, but when I grabbed it, my hand would suddenly start spinning like a top. I imported a new mesh with the proper origin (at the base), and got rid of the scene component, an it works.

Hope this gives you some help. I’m really not sure what else the scene component does.

To be fair, 90% of the time beginners don’t know what they’re trying to ask so the programmers simply can’t give a good answer. Or rather, the programmers give a good answer but the beginners don’t understand the problem in the first place so can’t understand the answer.

In this case, for instance, Souldomain is asking questions that make no sense. He wants to know why a SceneComponent doesn’t “have a viewport”. That’s nonsensical. Nothing “has a viewport”. The viewport is part of the engine rendering system and unrelated to blueprints.

In the end it turns out that by “has a viewport” he means “has a viewport tab in the editor”. More experienced devs don’t think about it as “having a viewport”; they think about it as “being an actor with a hierarchy of components”. The viewport tab is just a way to view that hierarchy of components and is only visible on actors.

Ultimately he insults the people trying to help him for not giving him the answer to his nonsensical question. It’s a story as old as time itself.

For future readers (since this thread comes up in some Google searches), a SceneComponent is just an ActorComponent with a transform. That’s it. It doesn’t do anything. An ActorComponent is the most basic form of component that can go on an actor. The relationship is that SceneComponent is a child class of ActorComponent, which essentially just means that a SceneComponent is an ActorComponent but with the addition of a transform.

You can use it as a parent component for sure, and it can be useful for creating custom pivot/rotation points, as Hannibal mentions, but possibly the more common usage is as a parent class. Most built-in components derive the SceneComponent class. For instance, the AudioComponent class is a child of SceneComponent, which means it automatically has a transform and can be used anywhere a SceneComponent can be used.

2 Likes