Photobooth Plugin

Thanks for the purchase / review. Glad you enjoy!

Some good news about the 1024 x 1024 limit:

I have a working version that allows you to exceed that limit by capturing the full viewport instead of a cropped area. You can use this mode in conjunction with the emulator to create any size capture (even 4K if you desire).

I have a few qualms about releasing this though.

  1. The larger the image the slower the processing. I have written some parallel luau code to speed up this process significantly (and it works amazing!) however, using parallel luau in published plugins is currently broken (roblox said it will be fixed in the next update or two though)
  2. The UX here is a bit janky. Without going into a lot of details, using photobooth and the emulator only works when you capture at actual resolution. Communicating that to the user is very difficult as afaik there’s no way to detect when/if the player is using an actual resolution emulated device.
  3. The method itself for exceeding 1024 x 1024 is not something I can guarntee will continue to work as roblox may choose to patch it. Having official support for this so this feature doesn’t get rug pulled would be way better.
5 Likes

Wow! This plugin is absolutely incredible.

I purchased it today and while I am still figuring out what will be the best workflow for me utilizing it, I already know that I am going to save hundreds of hours going forward. Gone are the days of putting a greenscreen as the skybox, and needing to use a third party editor to make the image perfect. This plugin does it all.

Thank you for all the time you spent developing this! A real game changer!

2 Likes

image

image

image

image

image

4 Likes

At first, this plugin might seem “useless” since, sure, you can take screenshots like you’re suggesting, but there’s one thing regular screenshots will never capture properly: translucent (semi-transparent) pixels and objects. Take this cute cup model I made a few years ago, for example:


I used my old method for this image; I used the Device Emulator to take a 4K screenshot of the model, then used Photoshop to remove its background color. While this kind of worked, the cup itself now looks inaccurate, as it’s usually translucent.

If anything, this is the main reason why I think anyone saving renders of Roblox models needs to buy Photobooth; When I used it to take a picture of the same cup with the exact same lighting, it captured this much more accurate image:


So yeah, screenshots and, Device Emulator, and green screens won’t create as nice images as this plugin. If a later version supports larger captures, I’ll never go back to that inferior, older style for object/character renders.

Speaking of that…

Even with the things EgoMoose pointed out below the section I quoted here, I still think that update would be great! I’m used to switching to “actual resolution” in Device Emulator so I would do that before capturing images larger than 1024×1024, anyways.

6 Likes

I don’t mind questions / constructive feedback about the plugin, but this just comes off as passive aggressive which I don’t appreciate.

Photobooth differentiates itself from the standard screenshot button in a number of ways:

  1. It captures as an editable image which can be used directly in game whereas the screenshot button saves directly as a png to your filesystem.

  2. As Mary pointed out it removes the background of images for you. This saves a lot of time and effort such that user’s don’t have to greenscreen their captures and manually edit out the background.

  3. The plugin offers bindings which allow you to capture via code. This allows you to write scripts that will capture multiple images without the user having to line up every camera angle and move every model etc.

  4. It can be used in conjunction with other lighting effects for useful effects. For example, using a color correction with brightness set to 1 and the blur effect will capture a blurred mask image. This can be used for things like drop shadows:
    Gif2VyWXQAAUEZ7

  5. It can capture UI elements directly. This allows users to do stuff like take a text-label and convert it into a decal which allows for surface wrapping (something a surface gui doesn’t do)

This list is not exhaustive, but my point is that this plugin offers a lot over the standard screenshot button.

12 Likes

I rarely comment on anything but this is easily the coolest plugin I’ve seen on Roblox, thanks for making this!

Really loving the way it can capture beams and particles with a transparent backdrop.

3 Likes

I have a question:

Can I do screenshots of a specific size? Like 522×522 etc.

If so you have my money.

1 Like

Yes you can! There is a textbox on the bottom where you can type in the specific size you want. I would recommend 512x512 instead of 522x522 though. Its definitely worth your money.

image

1 Like

2 Likes

If only the plugin can be bought with robux :frowning:
anyway, you never fail to make the most mind blowing things on roblox
keep up!

3 Likes

Unfortunately this is out of my control.

Roblox’s position on this has been that by enforcing USD they can maximize the revenue share of the creator. However, in my opinion it’s a bit more nuanced than that.

Let’s say for example that Roblox offered the ability to price in both Robux and USD and let the buyer choose which payment option they wanted. Anyone willing to do the math will quickly come to the conclusion that for the creator to get the same earnings from a sale the Robux cost will be substantially more than directly purchasing for USD.

For example, selling a something to earn 9.99 in robux:

-- current devex rate is 30,000 for $105.00 USD
((robux_cost * 0.7) / 30000) * 105 = 9.99
robux_cost = (30000 * 9.99) / 73.5 ~ 4000 robux

If we look how much it would cost to buy 4000 robux it’d be $49.99 USD which is comically overpriced compared to just buying it outright at $9.99.

Now of course I don’t want to rip off buyers, but if Roblox gave me the option to price in both robux and usd it would sure feel like I am.

I obviously don’t know the full details of why Roblox chose a usd only policy, but it wouldn’t suprise me to hear that this pricing imbalance is a reason for it. Robux buyers would likely notice this trend and feel like second-class citizens. This would lead to them directing their ire at either the creator or Roblox so they may have landed on the current policy to avoid that debacle entirely.

1 Like

first plugin i’ve bought. gotta say, it’s worth it!

3 Likes

all good i already bought it!
gotta say that this is the coolest plugin i’ve ever used.

1 Like

This was genuinely the best $10 I have spent!

I have been messing around with Photobooth for the past few days and I’m genuinely impressed. This has speed up the process of rendering items out by a LOT. This is a game changer and a life saver. With Future lighting existing I can confidently say goodbye to the days of rendering items out in blender.

One of the best features about this plugin is the ability to automate rendering. Alongside the black magic you do to calculate transparency, automation just makes this plugin perfect. The only limitation which I encountered is the fact that you can’t export multiple images at the same time to PNG format. This is most likely on Roblox’s end and out of your control.

This method does work but you have to export each capture one at a time. Regardless it worked out well in the end, since for my use case I would have had to do image processing after exporting from Roblox anyways. So I just sent the image data via localhost to VSCode and compiled the data back into a PNG with the image processed. (If you plan to do any image processing and are coding in Node.js I recommend using the “jimp” npm image processing library.)

When processing the images I applied a more aggressive alpha bleed algorithm to fix some aliasing issues. I honestly didn’t think there was any alpha bleed at first, but after looking at the patch notes I noticed there was one implemented in version 0.2.0?

image

Please keep in mind that this is an extreme worst case example. Where the image itself is dark on top of a dark background .I understand the decision to minimize the amount of alpha being bleed, as alpha bleed does take up a bit of processing time. In my case the images were downscaled from 1024x1024 to 256x256 and even then it still took a few seconds to process the alpha bleeding. As an alternative for those who are bothered by aliasing you can use this amazing site made by @XAXA to process the alpha bleeding.

TLDR: Really amazing tool 10/10 would recommend. It is genuinely a game changer especially for those who need background transparency and automation. Thank you for all your hard work!

1 Like

Glad you like it!

It’s funny you mention this as I had similar tooling in my repository, but it requires a bit more setup so it’s not something I included out of the box. I’d like to provide a sample workflow repository for this built w/ lune, but I noticed the net.serve function seemingly just dies. Maybe whenever that gets fixed or as you say Roblox provides another alternative altogether.

The alpha bleed algorithm I use is the same as what’s listed here. I’m going to delve into it a bit more though to make sure it’s doing the job right b/c I agree that based on your images it doesn’t quite look right.


Edit:

I looked into the alpha bleeding more and it seems to be working in unreleased v0.3.0. I haven’t changed the algorithm other than it’s now written in parallel so I assume it should be working in v0.2.2

Here’s the same 500x500 tree capture scaled to 1000x1000. On the right is the unbled image and on the left is the bled one:

I can see a noticable difference here and it seems like the alpha bleeding is working for me.

If you’d be willing to share a reproduction of a capture where you’re getting unbled (or badly bled) results via DM I can take a look and try and get this sorted.

1 Like

I didn’t know lune even existed, it looks like an amazing tool. I used node.js since I already did something similar for a different project. Compared to Node.js, lune might be much easier to use considering its in lua. When I tried exporting multiple images and it didn’t export them as PNG I was so confused. Since the funny thing is Roblox exports multiple images for materials when exporting a model. I genuinely expected them to export without issue. But, I still enjoyed the little coding adventure in image manipulation.

Regarding the alpha bleeding I don’t mind sending the place file I just had to remove assets that I unfortunately can’t share. I did some of my own testing and it doesn’t matter if its captured normally, via emulator, or via code the issue persists. Perhaps it’s my lighting settings? Not sure. I exported these by using Export Selection.

image

I tried it using a black sphere so its easier to see the aliasing. Running it through the alpha bleed website makes the issue completely disappears. It’s really dark I know, but trust me the sphere is there in workspace haha. If you move the camera, you can copy the code in ServerScriptService to reorient the camera back.


Capture.rbxl (49.7 KB)

One thing to note is that I haven’t uploaded these images to Roblox and I’m using XAXA’s Local File Importer. I have a lot of experience using this plugin and I really doubt it will be at fault. Especially considering the fact that the images that were ran through alpha bleed didn’t have any issues when imported through that plugin.

I cannot seem to reproduce this issue on my end.

If I turn off alpha bleeding in the code then I get similar results, but even then it’s not as egregious as what you’ve posted:


I removed the checkerbox background for a pure black instead + scaled the window down so bilinear interpolation would occur

I’m wondering if something else is going on here. Can you confirm what your resolution + OS scale value is listed as in the settings?

Also can you post an exported png unmodified. I’ll open it up and see what’s going on in the fully transparent pixels.

I doubt the issue is w/ your lighting or something similar. Otherwise XAXA’s code would be having the same issue.

1 Like

Yeah I always make sure its correct. I have the OS scale value set to (1, 1), and on windows I always use 100% scaling and my native resolution.

I sent one in the original message but it did look like it bugged out. All the examples I used above were unmodified. Hopefully it goes through:

1 Like

Okay some interesting findings. I did some analysis on your image. The alpha bleeding is working as far as I can tell. I turned the circle itself green and made every transparent pixel fully opaque. You can see the bleed pixels on the edge which are black.

Similarily when I load this image into studio and scale it up/down I do not see any issues.

I have two more questions for you and if I don’t get any leads from these then idk where to even approach this :woozy_face:

  1. For this image you posted. What were the exact steps you took start to finish to create this? The place file you linked only has on sphere in it so I assume you took the result of that single capture and used some image editing software to create this?
    image

  2. Here’s the same image bled 2 pixels as opposed to one. I wonder if for some reason you’re sampling more than just the direct neighbors and I have some misunderstanding of how bilinear filtering works. Let me know if this image causes the outlines for you.

1 Like

The image I posted used raw images produced by the plugin. I did not use any image editing software. The reason the sizes are all wonky is cause I used a 100x100 ImageLabel and I didn’t bother making the captures perfectly square.

As for replication I just clicked Photobooth > Viewport and clicked the capture button. After the capture was created and parented to StarterGui, I selected it and did Export Selection. Then I just imported it into Roblox using XAXA’s Local File Importer and put it into a ImageLabel.

2 pixels did the trick! I made the background a bit brighter so you can make out the other sphere. I guess its best to apply 2-3 pixels of bleed? The difference is even visible in the Local File Importer plugin too.

image

Really not sure what the root cause could be? Perhaps its hardware related, like Nvidia Control Panel shenanigans. I did try it on a laptop and it had the same results. Granted it also has an Nvidia GPU just a different generation. But the 2 pixel bleed does the trick, for me at least.

A bit unrelated, not sure if you already added or have plans to add this. But being able to select the background when previewing the capture might be nice. Similar to how XAXA allows you do in the Local File Importer plugin.

image