How to make an external program that lets studio take a screenshot?

Hello! For the last few months, I’ve been developing an animation plugin that is to be used most likely for video making. And I am planning on making a function for the plugin to “Render”.

So I’ve been thinking of making an external program (as mentioned in the title) that takes a screenshot of each frame (there will be cooldowns). I’ve also seen few people doing something similar such as:

so I’m guessing it is indeed possible to send data from Studio to other programs.

I’ve also made 2 concepts for it.

Concept 1

  1. User just finished his animation, ready for rendering.

  2. User clicks on “render” from the plugin, then “connect”. At the same time, in the external program, he clicks “host”.

  3. Studio and external program makes a connection. After the user proceeds by clicking “Render” button on the window, every frame of the animation is being screenshotted from a signal sent by the external program.

Concept 2

Practically, the same concept but with a different way of screenshotting. This time, the external program takes the screenshot and saves it to the desired directory that is chosen by the user.
How will the connection work?

  • Studio sends a signal that gets recognized by the program as “screenshotting is available”.
  • Program takes the screenshot, and saves it. Afterwards, it sends Studio another signal to move onto the next frame.

This goes on and on until every frame of the animation is screenshotted.

I believe the second concept would work better since it shouldn’t touch anything in Studio.

My problem is, I have never experimented something that involves outside of Studio. So, I’m a bit unexperienced about these kinds of things. You could provide articles, APIs or even send a PM.

If you see a mistake with my methods, be sure to tell me. I am incredibly new here, and I am looking forward to fit in this community.

Thank you for reading!

I think you’re making this a lot harder than it needs to be. Why does there need to be a connection? You can let every frame of the animation last 1 second and take a screenshot every 1 second using something like Crazyman32’s DevLapse. Any extra frames you don’t need can get thrown out.

1 Like

I get your point, though if I let every frame last 1 second, it will take much more time.

What I meant by a frame is in fact 1/60 of a second. So let’s go from the image I posted there,

There are 5 keyframes,

5 x 60 = 300 frames that have to be screenshotted which means 300 seconds.

I don’t think that is quite the solution for it.

This is also why I thought making a connection would be better, and probably faster.
I’m sorry if you misunderstood.

I used 1 second as an example. You could get away with milliseconds and be fine.

But you are right, option 2 would ensure that you get every frame and do it quickly, while my suggestion introduces room for error. Unfortunately I don’t know how to code option 2, but best of luck to ya.

1 Like

If you took 5 frames with one every second, wouldn’t it be 5 seconds instead of 300?

1 Like

Oops, I just noticed I defined frames twice, silly me. Well, I’d just say that those 5 frames are keyframes which are these.
My apologies.