views:

597

answers:

4

My questions have to do with this very interesting article: http://www.techcrunch.com/2008/07/09/otoy-developing-server-side-3d-rendering-technology/

What they say: In this article it is claimed that this company can do amazing server sided 3D rendering all the while displaying the output in the browser using Flash, Ajax, Java or Active X. It is also claimed that the fasted method is Ajax running on safari (up to 220fps).

What I have done: I have pondered about ideas like this before and I have even fooled around with three methods of rendering to the browser. To be clear I never implemented a 3D render but rather used already available images hosted at google, or randomly generate pixels.

My first two attempts were involved hackishly trying to draw each pixel in the browser using div tags or the canvas tag. I used php to do so making it slow in the first place but looping through tens of thousands...millions of pixels would take years in any other language anyway, it took like 7 seconds in php. (the random pixel colors did not significantly increase execution time.

My third attempt involved using multiple images to make the big picture, and I set up a test using a total of ten thumbnails hosted on google where the php script loops through all 10 to randomly display 48 total images on the web page. Every time you press a button the Ajax will call on the php script to re-arrange the images. Running this locally with your cache cleared takes about two seconds to display all the images (0.5 seconds after caching).

The WTF how the hell do those lairs do that? Because of my first hand experience and plain conventional logic, what this company claims has to be complete total BS. To do every thing they say and then pass the output over the internet has to take at least 0.5 seconds a frame even with better coding and a faster language. I don't think you could even rewrite a single pixel 220 times over the internet in one second.

So maybe there not lairs, how did they do it? I must know before I bust a capillary! How did they pass data so fast to the browser using Ajax, not even considering the 3d processing on the server side. Is it just one fast server constantly pushing out an image(s)? All I ever wanted was 30 fps and look at thos jerks hogign all the netz.

A: 

They probably pass an array of coordinates using the server, then turn that to an image on the client.

Rich Bradshaw
There is no way to create images on the client side as far as I know. I mean within the browser. Well I guess the canvas tag works but I already tried that its not meant to take such precise data.
Their article would suggest this is not how they do it. Streaming video is closer to what they are doing.
Robert Gould
+4  A: 

Trick is that they convert real-time 3d rendered images to streaming video. So basically browser client is just a video player, not much different from for example YouTube.

On server side, 3d application is propably native application that takes advantage of modern GPU's - like most PC games. It just listens input from client instead of physical input devices like keyboard. But as noted, latency will be problem.

And horsepower: http://www.techreport.com/discussions.x/16205

Virne
But how do you build a streaming video application in javascript/css/html? Ive seen something like it but it was just a bunch of images.
I know basicly nothing about JavaScript, but far as I know, it is possible to reload certain image like 15 times per second. This image is constantly changed on server side. Sure this method is much slower than streaming video, but atleast you get some illusion of movement with decent bandwith.
Virne
I'd expect that they compress the video on the server, so the client does no more than watch youtube. The server OTOH has to render each frame _and_ compress them in realtime. That takes some horsepower, but it might doable.
Marcus Lindblom
Exactly. However hardware can be used to assist rendering, there can multiple GPU's and so on. So actual rendering is not necesserily very CPU intensive. And if application is just some 3d object viewer, there is nothing to do when stuff is not moving.
Virne
Georg
+2  A: 

Paul relax, I'm quite sure it is BS. These guys have been saying this for 3 years already and I still haven't been able to get a live demo (and I work at a big game company). It's basically a scam like that Phantom console, or tons of other Vaporware.

Now it should be possible to stream 3d images rendered on the server, but there is no way it's going to have a good response rate. Rendering client side is the way to go, but they're just trying to get people to throw money at them. They are clearly not transmitting over the Internet that's for sure...

Robert Gould
Yeah. Something like shooter-game is definetly out of question. Another problem is scaling up. It's just still cheaper to render on client. But I have seen some Flash stuff that pre-render animations on server and use them as 2d objects on client.
Virne
Indeed it's technically possible but rendering for each user, etc, is a crazy bussiness plan.
Robert Gould
+1  A: 

If I remember correctly, Wired ran a story on these guys a while ago, and I couldn't help but think "WTF?".

Sure you can render pretty video on the server and stream it out to a client, but quick interactive feedback is a different beast.

Even when you leave latency aside, the requirement of "live" images diminish your options concerning video compression. Specifically, you can't use a B-frame codec if you want decent response times, because you always have to wait for the next P-frame before you can stream out your data. As a result, you'll have to stream out massive bandwidth using an intra-frame or P-frame-only codec.

So whatever their technology may be good for, games are not a viable application for this technology, even though - or maybe even because - Techcrunch thinks they are.

Henning
All we can do is sit and wait for fiber opticts to take over