For linux users! The program found in the Source/Github, can instead be ran as a raw python file, which is provided in a bash script for ease of access. You will however have to find a way to run studio on your linux os…
Good day, I’ve created a relatively simple and small program that takes a preselected area of the map, and generates a detailed photo/png with shadows and some extra effects. Hopefully, within the near future, as I update this tool and optimize it, since it’s relatively in an alpha stage, there will be more lighting options and effects.
- Release can be found here → GitHub - paswa-dev/ViewspaceToPng: Takes a Viewspace/Plane area, and creates a roblox image out of it. This is a work in progress and is not fully optimized, so feel free to assist in optimizing it..
- New Update! See latest release for more information → Releases · paswa-dev/ViewspaceToPng · GitHub
- Video Usage Tutorial/Tour → Watch Screen Recording 2025-08-23 165608 | Streamable
Explanation of settings
- Resolution, essentially upscaling the image as the number goes down, 1 is a 1:1, 0.5 is a 1:0.5.
- SunObjectName, name of the sun within the workspace.
- SunColor, color of the sun, default is white.
- SampleExtents. The literal stud offset between sample points when doing Bilinear Smoothing between 4 neighboring points. Creates smoother colors by spreading the colors, can remove jagged edges.
- ShadowSamplingLimit, how many times the shadow occlusion samples random nearby points, would keep at 1 for performance; however, you can make shadows more “soft” with this.
- Ambient, simply how dark a shadow can be. 0 = complete darkness, 1 = utter brightness.
- LightIntensity, How bright the sun is; added because the angle of the sun correlates to its darkness, therefore, if you don’t want it to go dark, simply change this value!
- IndicesPerFrame, reduces load per frame. I recommend around 400; the default is 1,000.
- LowerPlaneHeight/UpperPlaneHeight (x), raycast spawns between these 2 planes, used to cut off certain pieces
- LowerPlaneSize (x,y), size of the lower plane, upper plane copies this size
- LowerPlanePosition(x, y, z), 3d position of the origin of the plane.
Different angle of the sun, more direct = more brightness.
How to use this! Download the .zip file from the most recent release. Launch the .exe provided, source code provided in master branch. A web server should be started. Go into roblox, add the plugin, follow the instructions provided through the plugin interface, then click Start Scan, wait a bit, and the .exe should deposit the image locally.
If you wish to contribute and/or recommend optimizations, please message me. You can view the master branch for the source code of the server-side of things. The plugin can be viewed by simply installing it and viewing it in the explorer.
For my more advanced fellas, this supports base64 encoding, but that’s for you to implement.
Planned Updates:
- Optimization via Thread Pooling and Parallel Scheduling (Completed)
- Cieve ImGizmo support (Completed)
- Planar Slicing to scan the inside of buildings (Completed)
- Auto IndicesPerFrame option. Will probably run a test raycast and pick the best number for you.
- Dynamic IndicesPerFrame option. As the program is running it will change its IndicesPerFrame until your FPS is above 20.
- Volumetric lighting and volumetric volumes for fog/transparency.
- Updating the bilinear interpolating algorithm to account for more than 4 corners.
- Whatever ideas you guys make.
New Updates:
- Parallel Lua added (exaggerated due to me opening MicroProfiler and it causing lag),
- New UI Update, (opening the plugin creates debugging tools!)
- Linux support added, check README.md in the repo
Credits to Iris and Ceive ImGizmo!
- Side info, this is not 100% error-proof and is subject to random errors.
- I did not develop this professionally, so some code may look scruffy! It’s an alpha product