π½οΈ 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.
π Examplesβ
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(), "nanos-world::SM_Cube")
my_prop:SetMaterialFromSceneCapture(scene_capture)
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(), "nanos-world::SM_Cube")
scene_capture:AddRenderActor(my_prop)
scene_capture:SetShowFlag("Atmosphere", false)
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 (max is 4096) |
integer | height | 128 | Height of the generated Texture (max is 4096) |
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 |
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
π¦ Functionsβ
Inherited Entity Functions
Inherited Actor Functions
Returns | Name | Description | |
---|---|---|---|
AddRenderActor | Adds an Actor to the Render Only list | ||
ClearRenderActors | Clears the Render Only list | ||
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) | ||
RemoveRenderActor | Removes an Actor from the Render Only list | ||
Resize | Change the output Texture size Note: too high texture will make the capture slower and will affect game performance | ||
SetDistanceOptimizationEnabled | Enables or not the rendering frequency optimization if the entities with this Material are too far | ||
SetFOVAngle | Sets the FOV | ||
SetFreeze | Stops or Restore Capturing | ||
SetRenderRate | Set how frequent is the capture Note: Setting to 0 will make it capture every frame | ||
SetShowFlag | Enables/Disables rendering features from being captured |
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 | Required parameter | No description provided |
See also RemoveRenderActor, ClearRenderActors.
ClearRenderActors
Clears the Render Only list
my_scenecapture:ClearRenderActors()
See also AddRenderActor, RemoveRenderActor.
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 |
See also EncodeToBase64Async.
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 | Required parameter | Callback with this format |
See also EncodeToBase64.
RemoveRenderActor
Removes an Actor from the Render Only list
my_scenecapture:RemoveRenderActor(actor)
Type | Parameter | Default | Description |
---|---|---|---|
Base Actor | actor | Required parameter | No description provided |
See also AddRenderActor, ClearRenderActors.
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)
Type | Parameter | Default | Description |
---|---|---|---|
integer | width | Required parameter | No description provided |
integer | height | Required parameter | No description provided |
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 | Required parameter | No description provided |
SetFOVAngle
Sets the FOV
my_scenecapture:SetFOVAngle(angle)
Type | Parameter | Default | Description |
---|---|---|---|
float | angle | Required parameter | No description provided |
SetFreeze
Stops or Restore Capturing
my_scenecapture:SetFreeze(freeze)
Type | Parameter | Default | Description |
---|---|---|---|
boolean | freeze | Required parameter | No description provided |
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 | Required parameter | No description provided |
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)
Type | Parameter | Default | Description |
---|---|---|---|
string | flag | Required parameter | No description provided |
boolean | enable | Required parameter | No description provided |
π Eventsβ
Inherited Entity Events
Inherited Actor Events
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 | No description provided |