<p>I think you're confused on how rendering and animation work. </p>

<p>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)</p>

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

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

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

<p>Now, to stream the data, you can take two paths:</p>

<ol>
<li>Render each frame on the server and stream them to the client with something like H.264</li>
<li>Stream the graphics commands to the client, and let them render them.</li>
</ol>

<p>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 <a href="https://www.informatik.hu-berlin.de/de/forschung/gebiete/viscom/papers/icip08a.pdf" rel="nofollow">here</a></p>

CC BY-SA 3.0
2015-10-05T17:46:18.773Z
Or you can just download the image files...
joojaa
CC BY-SA 3.0
2015-10-05T18:14:36.430Z
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.
pookie
CC BY-SA 3.0
2015-10-05T18:25:40.463Z
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.
RichieSams
CC BY-SA 3.0
2015-10-07T08:35:04.333Z
@RichieSams it would be dynamic. I would like to allow for interaction.
pookie
CC BY-SA 3.0
2015-10-05T17:05:33.907Z
2015-10-05T17:05:33.907Z
RichieSams
<p>I'd like to know (if it is possible), how I would go about getting at the rendered frames from an application.</p>

<p>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... </p>

<p>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).</p>

<p>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.</p>

<p>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.</p>

<p>Thanks</p>

<rendering>
How to capture rendered frames from an application and stream over network
pookie
# How to capture rendered frames from an application and stream over network

(Asked by: username_0 on 2015-10-05)

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

**Tags:** rendering


---

## 1 answers

### Answer by username_1 on 2015-10-05. Score: 1

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](https://www.informatik.hu-berlin.de/de/forschung/gebiete/viscom/papers/icip08a.pdf)

> **Comments:**
> **username_2**: Or you can just download the image files...  
> **username_0**: 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.  
> **username_1**: Another question: Are you wanting it to be dynamic, or just a static animation? If it's static, @username_2 is right. Just render out all the frames, convert them to a movie file, then just serve the movie file from the server.  
> **username_0**: @username_1 it would be dynamic. I would like to allow for interaction.  

---

