SceneCapture
Scene Capture is an Actor which captures a fully dynamic image of the scene into a Texture. It captures the scene from its view frustum, stores that view as an image, which is then used within a Material.
💂Authority
This class can only be spawned on 🟧 Client side.
👪Inheritance
This class shares methods and events from Base Entity, Base Actor.
Examples​
Client/Index.lua
local scene_capture = SceneCapture(
Vector(0, 0, 200),
Rotator(-15, 0, 0),
256,
256,
0,
5000,
100
)
-- Paints the Prop with the SceneCapture output
local my_prop = Prop(Vector(200, 200, 100), Rotator(), "helix::SM_Cube")
my_prop:SetMaterialFromSceneCapture(scene_capture)
Client/Index.lua
local scene_capture = SceneCapture(
Vector(0, 0, 200),
Rotator(-15, 0, 0),
256,
256,
0,
5000,
100
)
-- Make a SceneCapture to only render a specific actor
local my_prop = Prop(Vector(200, 200, 100), Rotator(), "helix::SM_Cube")
scene_capture:AddRenderActor(my_prop)
scene_capture:SetShowFlag("Atmosphere", false)
tip
You can use the output Texture from a SceneCapture with :SetMaterialFromSceneCapture() method!
Constructors​
Default Constructor​
local my_scenecapture = SceneCapture(location?, rotation?, width?, height?, render_rate?, view_distance?, fov_angle?, enable_distance_optimization?)
Type | Name | Default | Description |
---|---|---|---|
Vector | location | Vector(0, 0, 0) | Location |
Rotator | rotation | Rotator(0, 0, 0) | Rotation |
integer | width | 128 | Width of the generated Texture |
integer | height | 128 | Height of the generated Texture |
float | render_rate | 0.033 | Render Rate (how frequent is the capture) |
float | view_distance | 5000 | Maximum distance of capturing |
float | fov_angle | 90 | FOV |
boolean | enable_distance_optimization | true | Reduces the rendering frequency if the entities with this Material are too far or not visible. Disable it to always render at the render_rate |
note
Scene Captures capture a scene in real time, this means every tick it will re-render the scene from scratch. Please consider reducing the width
/height
and even the render_rate
to improve it's performance.
We've worked hard to make SceneCapture as performatic as possible! Some techniques were applied for optimization and reducing the render_rate
automatically when you are far and when the generated texture is out of the screen.
Static Functions​
Inherited Entity Static Functions
Base Entityscripting-reference/classes/base-classes/Entity
Returns | Name | Description | |
---|---|---|---|
table of Base Entity | GetAll | Returns a table containing all Entities of the class this is called on | |
Base Entity | GetByIndex | Returns a specific Entity of this class at an index | |
integer | GetCount | Returns how many Entities of this class exist | |
iterator | GetPairs | Returns an iterator with all Entities of this class to be used with pairs() | |
table | Inherit | Inherits this class with the Inheriting System | |
table of table | GetInheritedClasses | Gets a list of all directly inherited classes from this Class created with the Inheriting System | |
table or nil | GetParentClass | Gets the parent class if this Class was created with the Inheriting System | |
boolean | IsChildOf | Gets if this Class is child of another class if this Class was created with the Inheriting System | |
function | Subscribe | Subscribes to an Event for all entities of this Class | |
function | SubscribeRemote | Subscribes to a custom event called from server | |
Unsubscribe | Unsubscribes all callbacks from this Event in this Class within this Package, or only the callback passed |
Functions​
Inherited Entity Functions
Base Entityscripting-reference/classes/base-classes/Entity
Returns | Name | Description | |
---|---|---|---|
integer | GetID | Gets the universal network ID of this Entity (same on both client and server) | |
table | GetClass | Gets the class of this entity | |
boolean | IsA | Recursively checks if this entity is inherited from a Class | |
function | Subscribe | Subscribes to an Event on this specific entity | |
function | SubscribeRemote | Subscribes to a custom event called from server on this specific entity | |
Unsubscribe | Unsubscribes all callbacks from this Event in this Entity within this Package, or only the callback passed | ||
SetValue | Sets a Value in this Entity | ||
any | GetValue | Gets a Value stored on this Entity at the given key | |
Destroy | Destroys this Entity | ||
boolean | IsValid | Returns true if this Entity is valid (i.e. wasn't destroyed and points to a valid Entity) | |
CallRemoteEvent | Calls a custom remote event directly on this entity to a specific Player | ||
CallRemoteEvent | Calls a custom remote event directly on this entity | ||
BroadcastRemoteEvent | Calls a custom remote event directly on this entity to all Players |
Inherited Actor Functions
Base Actorscripting-reference/classes/base-classes/Actor
Returns | Name | Description | |
---|---|---|---|
AddImpulse | Applies a force in world world to this Actor | ||
AttachTo | Attaches this Actor to any other Actor, optionally at a specific bone | ||
Detach | Detaches this Actor from AttachedTo Actor | ||
SetCollision | Sets this Actor's collision type | ||
SetDimension | Sets this Actor's Dimension | ||
SetForce | Adds a permanent force to this Actor, set to Vector(0, 0, 0) to cancel | ||
SetGravityEnabled | Sets whether gravity is enabled on this Actor | ||
SetVisibility | Sets whether the actor is visible or not | ||
SetHighlightEnabled | Sets whether the highlight is enabled on this Actor, and which highlight index to use | ||
SetOutlineEnabled | Sets whether the outline is enabled on this Actor, and which outline index to use | ||
SetLifeSpan | Sets the time (in seconds) before this Actor is destroyed. After this time has passed, the actor will be automatically destroyed. | ||
SetLocation | Sets this Actor's location in the game world | ||
SetRotation | Sets this Actor's rotation in the game world | ||
SetRelativeLocation | Sets this Actor's relative location in local space (only if this actor is attached) | ||
SetRelativeRotation | Sets this Actor's relative rotation in local space (only if this actor is attached) | ||
SetScale | Sets this Actor's scale | ||
SetNetworkAuthority | Sets the Player to have network authority over this Actor | ||
SetNetworkAuthorityAutoDistributed | Sets if this Actor will auto distribute the network authority between players | ||
TranslateTo | Smoothly moves this actor to a location over a certain time | ||
RotateTo | Smoothly rotates this actor to an angle over a certain time | ||
boolean | IsBeingDestroyed | Returns true if this Actor is being destroyed | |
boolean | IsVisible | Returns true if this Actor is visible | |
boolean | IsGravityEnabled | Returns true if gravity is enabled on this Actor | |
boolean | IsInWater | Returns true if this Actor is in water | |
boolean | IsNetworkDistributed | Returns true if this Actor is currently network distributed | |
table of Base Actor | GetAttachedEntities | Gets all Actors attached to this Actor | |
Base Actor or nil | GetAttachedTo | Gets the Actor this Actor is attached to | |
table | GetBounds | Gets this Actor's bounds | |
CollisionType | GetCollision | Gets this Actor's collision type | |
Vector | GetLocation | Gets this Actor's location in the game world | |
Vector | GetRelativeLocation | Gets this Actor's Relative Location if it's attached | |
Player or nil | GetNetworkAuthority | Gets this Actor's Network Authority Player | |
Rotator | GetRotation | Gets this Actor's angle in the game world | |
Rotator | GetRelativeRotation | Gets this Actor's Relative Rotation if it's attached | |
Vector | GetForce | Gets this Actor's force (set by SetForce() ) | |
integer | GetDimension | Gets this Actor's dimension | |
boolean | HasNetworkAuthority | Returns true if the local Player is currently the Network Authority of this Actor | |
boolean | HasAuthority | Gets if this Actor was spawned by the client side | |
Vector | GetScale | Gets this Actor's scale | |
Vector | GetVelocity | Gets this Actor's current velocity | |
AddActorTag | Adds an Unreal Actor Tag to this Actor | ||
RemoveActorTag | Removes an Unreal Actor Tag from this Actor | ||
table of string | GetActorTags | Gets all Unreal Actor Tags on this Actor | |
boolean | WasRecentlyRendered | Gets if this Actor was recently rendered on screen | |
float | GetDistanceFromCamera | Gets the distance of this Actor from the Camera | |
float | GetScreenPercentage | Gets the percentage of this Actor size in the screen |
Returns | Name | Description | |
---|---|---|---|
AddRenderActor | Adds an Actor to the Render Only list | ||
RemoveRenderActor | Removes an Actor from the Render Only list | ||
ClearRenderActors | Clears the Render Only list | ||
SetFreeze | Stops or Restore Capturing | ||
string | EncodeToBase64 | Takes a snapshot of the SceneCapture and returns a Base64 of it | |
EncodeToBase64Async | Takes a snapshot of the SceneCapture and returns a Base64 of it (asynchronously) | ||
SetFOVAngle | Sets the FOV | ||
SetShowFlag | Enables/Disables rendering features from being captured | ||
Resize | Change the output Texture size Note: too high texture will make the capture slower and will affect game performance | ||
SetRenderRate | Set how frequent is the capture Note: Setting to 0 will make it capture every frame | ||
SetDistanceOptimizationEnabled | Enables or not the rendering frequency optimization if the entities with this Material are too far |
AddRenderActor
​
Adds an Actor to the Render Only list
Note: adding one actor to this will make the SceneCapture only to render those Actors.
my_scenecapture:AddRenderActor(actor)
Type | Parameter | Default | Description |
---|---|---|---|
Base Actor | actor |
RemoveRenderActor
​
Removes an Actor from the Render Only list
my_scenecapture:RemoveRenderActor(actor)
Type | Parameter | Default | Description |
---|---|---|---|
Base Actor | actor |
ClearRenderActors
​
Clears the Render Only list
my_scenecapture:ClearRenderActors()
SetFreeze
​
Stops or Restore Capturing
my_scenecapture:SetFreeze(freeze)
Type | Parameter | Default | Description |
---|---|---|---|
boolean | freeze |
EncodeToBase64
​
Takes a snapshot of the SceneCapture and returns a Base64 of it
— Returns string.
local ret = my_scenecapture:EncodeToBase64(image_format?)
Type | Parameter | Default | Description |
---|---|---|---|
ImageFormat | image_format? | ImageFormat.JPEG | Which format to generate - JPEG is fastest but discards Alpha channel |
EncodeToBase64Async
​
Takes a snapshot of the SceneCapture and returns a Base64 of it (asynchronously)
my_scenecapture:EncodeToBase64Async(image_format?, callback)
Type | Parameter | Default | Description |
---|---|---|---|
ImageFormat | image_format? | ImageFormat.JPEG | Which format to generate - JPEG is fastest but discards Alpha channel |
function | callback | Callback in the format (base_64: string) |
SetFOVAngle
​
Sets the FOV
my_scenecapture:SetFOVAngle(angle)
Type | Parameter | Default | Description |
---|---|---|---|
float | angle |
SetShowFlag
​
Enables/Disables rendering features from being captured
A complete list of available flags can be found in the Official Unreal Documentation
my_scenecapture:SetShowFlag(flag, enable)
Resize
​
Change the output Texture size Note: too high texture will make the capture slower and will affect game performance
my_scenecapture:Resize(width, height)
SetRenderRate
​
Set how frequent is the capture Note: Setting to 0 will make it capture every frame
my_scenecapture:SetRenderRate(render_rate)
Type | Parameter | Default | Description |
---|---|---|---|
float | render_rate |
SetDistanceOptimizationEnabled
​
Enables or not the rendering frequency optimization if the entities with this Material are too far
my_scenecapture:SetDistanceOptimizationEnabled(enabled)
Type | Parameter | Default | Description |
---|---|---|---|
boolean | enabled |
Events​
Inherited Entity Events
Base Entityscripting-reference/classes/base-classes/Entity
Name | Description | |
---|---|---|
Spawn | Triggered when an Entity is spawned/created | |
Destroy | Triggered when an Entity is destroyed | |
ValueChange | Triggered when an Entity has a value changed with :SetValue() | |
ClassRegister | Triggered when a new Class is registered with the Inheriting System |
Inherited Actor Events
Base Actorscripting-reference/classes/base-classes/Actor
Name | Description | |
---|---|---|
Spawn | Triggered when an Entity is spawned/created | |
Destroy | Triggered when an Entity is destroyed | |
ValueChange | Triggered when an Entity has a value changed with :SetValue() | |
ClassRegister | Triggered when a new Class is registered with the Inheriting System |
Name | Description | |
---|---|---|
Capture | Triggered when this SceneCapture does an update/renders a frame |
Capture
​
Triggered when this SceneCapture does an update/renders a frame
SceneCapture.Subscribe("Capture", function(self)
-- Capture was called
end)
Type | Argument | Description |
---|---|---|
SceneCapture | self |