2
$\begingroup$

I'd like to know (if it is possible), how I would go about getting at the rendered frames from an application.

For example, say I am using some 3D modelling tool (eg Blender, 3DS Max, Maya) and I have my model (eg a coffee mug that rotates constantly). Animation rendering has completed remotely (perhaps on AWS EC2) and so this coffee mug is rotating...

If I were to log into the remote server using some remote desktop application, I'd see the cup rotating, however, I'd like to rather grab the output from that application (the frames) and stream it to my laptop (or another client).

I know of NVidia's AppStream, but I'd like to know how to get at that rendered frames on the remote server and pipe them to a client, without using some remote desktop software.

I realise my question may seem vague (possibly even not making sense), but I'm very new to this and so any help or pointers would be great.

Thanks

$\endgroup$

1 Answer 1

1
$\begingroup$

I think you're confused on how rendering and animation work.

A traditional model is nothing more than a bunch of triangles. So a model file coming from say Blender, etc. is just a list of vertices for the triangles. (with some added stuff if you want)

Rendering takes the scene definition and transforms a 3D scene (aka the models oriented somewhere in space) and creates a 2D picture.

Animation creates the illusion of movement by showing static pictures very fast (24 frames per second or more).

Therefore, to have a spinning mug, your application would render each frame, then present them, at, say 30 fps.

Now, to stream the data, you can take two paths:

  1. Render each frame on the server and stream them to the client with something like H.264
  2. Stream the graphics commands to the client, and let them render them.

The first option is what something like OBS or Fraps and (maybe) Nvidia GameStream is doing. There's a paper that covers the 2nd option here

$\endgroup$
4
  • $\begingroup$ Or you can just download the image files... $\endgroup$
    – joojaa
    Oct 5, 2015 at 17:46
  • $\begingroup$ Thanks. I you hit the money when you said 'render each frame'. That is what I want to capture... the frames output by application. I'd like to 'grab' each rendered frame and pipe them to a client. I'll update my question. $\endgroup$
    – pookie
    Oct 5, 2015 at 18:14
  • $\begingroup$ Another question: Are you wanting it to be dynamic, or just a static animation? If it's static, @joojaa is right. Just render out all the frames, convert them to a movie file, then just serve the movie file from the server. $\endgroup$
    – RichieSams
    Oct 5, 2015 at 18:25
  • $\begingroup$ @RichieSams it would be dynamic. I would like to allow for interaction. $\endgroup$
    – pookie
    Oct 7, 2015 at 8:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.