Are there any libraries that let me display remote rendering on a website?
Asked Answered
C

3

7

Rather than use WebGL, NaCl, Flash or developing a custom browser plugin, I'm interested in doing 3D real-time rendering on the server. It's for a specialist product not general use.

Are there any existing technologies for this kind of thing, to save having to write a pretty complex chunk of code? Free or paid are both of interest. Ideally something that can be run on our servers, but hosted services are interesting too since they can offer a pool of servers.

Effectively what I'm describing is a cross-browser control which provides a 'window' into what's being rendered on a remote server. Sort of like VNC through Javascript/HTML5 I suppose.

One suggestion from another site was MJPG but I've no idea if it's feasible.

While not ideal, using Flash on the client side to pull content from the server would not be too terrible.

Carson answered 6/2, 2012 at 18:3 Comment(11)
u want to write your own 3d renderer'Suitable
HTML doesn't allow these things, actually. Its a markup language after all. Anything that does more than simple animation has to be done using a plugin. It definitely cannot render 3d without some outside helpSuitable
What I mean is I want a JS/HTML5 component which can talk to a server. Similar to video rendering or video-chat. Rendering is performed in a normal renderer on a hi-spec server.Carson
What kind/quality of rendering technology? Are you talking about leveraging EC2-like power for rendering engines? Pixar have cloud version of RenderMan, but it only runs on their servers.Speakeasy
@cbamber85 - standard real-time rendering that can be done on a reasonable spec PC with a decent GPU. Nothing fancy... we use Ogre3D as it happens.Carson
HTML5 must have a streaming video component, there should be a way of telling it to not use a codec but to just display the individual frames (if it's real time you can't use a video compression codec due to no forward temporal coherence, but image compression is still valid). Although if this going across the internet you can kiss goodbye to real time, have you seen VNC?Speakeasy
@cbamber85 video-chat is real-time from a live source... also Skype screen-sharing and all the other real-time desktop sharing tools. No idea how they work though. But the important question here is if web-browsers have a way to receive the stream in the first place.Carson
@John Good point, how did that slip my mind...Speakeasy
I wonder if there are open-source browser-based video-chat. Wonder if XMPP covers video.Carson
Does this boil down to streaming the output from Ogre as video, or am I missing something?Bingham
@RobAgar I think that's basically it yes. The core issue is treating Ogre output as a source of real-time video which can be broadcast... either to a single client (1:1 browser:Ogre-server-instance) or more widely.Carson
I
0

If you don't mind having a Flash client, then this should be pretty simple.

I am assuming from the phrasing of the question that you already have plans for how the content will be rendered, or at least that this is aside from the issue presented in your question here.

With this in mind your requirements really reduce to that of live screencasting.

The simplest option that I know of is Flash Media Live Encoder to serve streams to RTMP clients, or Red5 or something like that.

I'm not too sure about what licensing issues may exist with these solutions, but hopefully this will at least give you an idea of where else to look for other options...

P.S. I just noticed you mentioned Flash as an option at the end of the question, so perhaps you were already aware of these options and mainly looking for non-Flash alternatives? If this is the case then I am not sure on what solutions are actually available, but Adobe has released the RTMP specification for public use, and I'm pretty sure none flash clients do exist. I am pretty certain than non flash servers exist, also.

Either way I still think this is a solid option tbh...

Intramuscular answered 14/2, 2012 at 16:9 Comment(3)
Well Flash is a non-preferred but possible option... it means iPad can't be supported though all PCs would be fine.Carson
The other thing that isn't totally clear about Flash servers... does the client need anything other than regular Flash? That would be a problem.Carson
No, the client can be just regular flash. Should be super easy to set up a nice simple branded player, since the technique is fairly widely used / mature. It should be possible to do in pure Java too using xuggle.com/xuggler/index I think, although information seems a little sparse on the subject tbh :/. It is certainly possible to decode RTMP in general, but you may run into troubles after this point depending on what format you decide to encode to and publish in. Publishing is definitely possible in pure Java, and should be much easier to figure out. Look into Red5, perhaps.Intramuscular
J
1

This sounds a lot to me like it has the same requirements as a video game - take a look into these engines:

Photon Engine (commercial): https://www.exitgames.com/

Cloudmach (commercial): http://cloudmach.com/

Quake 2 ported to GWT: http://code.google.com/p/quake2-gwt-port/

Steppe (2.5d so far but server-side rendering): http://steppe.fleetingfantasy.com/

...And here's another SO article on this exact topic: Server Sided 3D rendering

Jocundity answered 14/2, 2012 at 5:15 Comment(0)
I
0

If you don't mind having a Flash client, then this should be pretty simple.

I am assuming from the phrasing of the question that you already have plans for how the content will be rendered, or at least that this is aside from the issue presented in your question here.

With this in mind your requirements really reduce to that of live screencasting.

The simplest option that I know of is Flash Media Live Encoder to serve streams to RTMP clients, or Red5 or something like that.

I'm not too sure about what licensing issues may exist with these solutions, but hopefully this will at least give you an idea of where else to look for other options...

P.S. I just noticed you mentioned Flash as an option at the end of the question, so perhaps you were already aware of these options and mainly looking for non-Flash alternatives? If this is the case then I am not sure on what solutions are actually available, but Adobe has released the RTMP specification for public use, and I'm pretty sure none flash clients do exist. I am pretty certain than non flash servers exist, also.

Either way I still think this is a solid option tbh...

Intramuscular answered 14/2, 2012 at 16:9 Comment(3)
Well Flash is a non-preferred but possible option... it means iPad can't be supported though all PCs would be fine.Carson
The other thing that isn't totally clear about Flash servers... does the client need anything other than regular Flash? That would be a problem.Carson
No, the client can be just regular flash. Should be super easy to set up a nice simple branded player, since the technique is fairly widely used / mature. It should be possible to do in pure Java too using xuggle.com/xuggler/index I think, although information seems a little sparse on the subject tbh :/. It is certainly possible to decode RTMP in general, but you may run into troubles after this point depending on what format you decide to encode to and publish in. Publishing is definitely possible in pure Java, and should be much easier to figure out. Look into Red5, perhaps.Intramuscular
E
0
"Sort of like VNC through Javascript/HTML5 I suppose"

The RealVNC Java Viewer actually does this (through Java). It will only fail if you are trying to stream the output generated by a GPU (ie, hardware rendering). I believe VNC can handle this case by changing the method it uses to grab the framebuffer.

According to this page "For times when a 3D application/video cannot be remoted, reverting to VNC Hooks will most likely provide updates, but the performance will be degraded."

There are also workarounds for UNIX

Endoderm answered 15/2, 2012 at 0:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.