Active Topics

 


Reply
Thread Tools
Capt'n Corrupt's Avatar
Posts: 3,524 | Thanked: 2,958 times | Joined on Oct 2007 @ Delta Quadrant
#1
Hi all it's me again, here to tell you something that will have your mind asploded...

Cap, what the @%# are you on about?

Google has an open source browser plugin called o3d. O3D uses graphic acceleration to display 3D in the browser using the browsers javascript to drive the content. The results are simply spectacular.

This plugin can use a relatively slow browser javascript engine (eg. Tracemonkey or V8) in an interactive way because it uses something called 'retained mode' to draw. In a nutshell, for interactivity, the javascript code need only tell the plugin how to change a scene rather than being responsible for redrawing the scene every frame. This means that the main program loops can be greatly simplified and do not require much computational muscle.

Because it's using a scripting engine at it's core, it's supposedly MUCH faster, and easier to prototype and develop 3D applications! One of the examples is a side scrolling game by an internet game company called large animal. The lead developer described creating the game first by drawing a bunch of boxes, then having the boxes arranged as to make a scene, then having a box move around in the scene. Eventually the boxes were replaced by in-game models. This gradual build-test approach to development means rapid prototyping and gradual improvement over time.


Ok I'm interested. Where can I download the plugin?

I urge you to visit http://code.google.com/apis/o3d/ and download and install the plugin (really easy for windows and mac -- not too difficult for debian linux). For more advanced users, you can obtain the source directly from the site.


Got it, now show me the money!

Here are some examples of the plugin in action... You have installed it, right? They won't work without it. Anyhoo, feast your eyes on the future:

1) http://o3d.googlecode.com/svn/trunk/...beachdemo.html
2) http://blog.largeanimal.com/demo/
3) http://www.patapom.com/O3D/AsteRocket.html
4) http://www.kylehayward.com/o3d/WaterScene.html

For those that can't install the plugin, fret not. Here are some videos so that you don't miss out on all the fun:

1) http://www.youtube.com/watch?v=uofWf...layer_embedded
2) http://www.youtube.com/watch?v=NAgug5D6Kdg
3) http://www.youtube.com/watch?v=-vUypUpwzQQ


How would we use this for Maemo?

Glad you asked.

1) A browser plugin. Quite simply, given the OMAP3, I suspect that this will run quite well on the N900. Remember, the plugin will run like a native app, and the main app javascript-loop will be quite light for a well designed project. All in all, I suspect the N900 will run o3d quite well.

2) A stand-alone player. Included in the player would be a javascript engine (V8 is supposedly somewhat easy to integrate). This would make it easy to develop 3D games, visualizations, widgets, et. al. in an extremely portable way. It would also yield faster development turnaround and easy code sharing and previewing using regular web pages.


But where's the glory?

The glory is in exposing 3d to a ton of new developers. The glory is in doing a world first on this wonderful new platform! The glory is in porting o3d on maemo before even google itself can have a release ready for android!

I think this would simplify the creation of 3D content quite dramatically, enabling the community to easily script games and engines that games could be built on top of. It would give Maemo an instant 'edge' over other mobile environment and a real point of distinction. It would also empower many new developers that were once closed off from 3D development to explore this brave new world.... only with a happier ending...


Whaddaya think?

}:^]~
 

The Following 7 Users Say Thank You to Capt'n Corrupt For This Useful Post:
Capt'n Corrupt's Avatar
Posts: 3,524 | Thanked: 2,958 times | Joined on Oct 2007 @ Delta Quadrant
#2
One thing to note. With all of this 'newness' the memory constraints of the N900 become the largest bottleneck. Considering that the browser (with js engine) as well as the code and scene-assets must be loaded into memory, the usage gets quite large quite quickly.

As a stand-alone player, this would be quite a good deal lighter, though as with all 3D apps on the system, smart scene-management will be a requirement. For on-the-fly management, a quick read from the drive can yield new scene-assets (or a free and garbage collection call to release), but this implies a stand-alone player as doing this online would introduce the bottleneck of network access speeds via loads through the browser (not ideal for mid-level loading).

The plugin alone consumes roughly 30MB of system memory. I'm not sure what a V8 Javascript engine would consume, but I assume (perhaps incorrectly) that it would be reasonably small. This means that without doing anything, an O3D app would (in my guesstimation) consume around 40MB of memory. A bit steep, but a good tradeoff considering the potential expansion of 3D development community for maemo.


|:^!~
 
Capt'n Corrupt's Avatar
Posts: 3,524 | Thanked: 2,958 times | Joined on Oct 2007 @ Delta Quadrant
#3
Here's an example of a closed-source in-browser 3d plugin. It's called unity 3d.

http://unity3d.com/unity/

The following demo is extremely impressive. It's a system of islands that use LOD quite effectively so that you can always see the entire scene, fog-free. You can explore every inch of the islands. Climb a mountain by constantly jumping to get a better view. It is quite a large landscape!

http://unity3d.com/gallery/live-demos/tropical-paradise (consumes a total 100MB memory after load -- this does not include browser)

There's no reason why O3D couldn't do something equivalent.

};^)~
 
Capt'n Corrupt's Avatar
Posts: 3,524 | Thanked: 2,958 times | Joined on Oct 2007 @ Delta Quadrant
#4
Oh! I forgot this fact!

The O3D plugin *includes* the lightning quick V8 javascript engine built in, so the total memory consumption at start is an impressively reasonable 30MB! It should also considerably ease the integration of o3d in a stand-alone player as binding a JS engine will not be required.

This choice was chosen to improve performance in browsers with slow or non-compliant javascript engines (*cough* IE *cough*). V8 is a POWERHOUSE engine that's extremely fast despite being dynamically typed. I think it was a very smart design decision on the O3D teams part (as were many O3D choices).

Out of interest, does anyone know how much memory the N900 browser consumes on a blank page?

}:^D~

Last edited by Capt'n Corrupt; 2009-09-05 at 12:57.
 
VDVsx's Avatar
Posts: 1,070 | Thanked: 1,604 times | Joined on Sep 2008 @ Helsinki
#5
Note that you can easily use the V8 engine inside Qt-webkit and achieve 'similar' results : http://labs.trolltech.com/blogs/2009...ing-qt-script/ and http://labs.trolltech.com/blogs/2009...-squirrelfish/
__________________
Valério Valério
www.valeriovalerio.org
 

The Following User Says Thank You to VDVsx For This Useful Post:
Capt'n Corrupt's Avatar
Posts: 3,524 | Thanked: 2,958 times | Joined on Oct 2007 @ Delta Quadrant
#6
Originally Posted by VDVsx View Post
Note that you can easily use the V8 engine inside Qt-webkit and achieve 'similar' results : http://labs.trolltech.com/blogs/2009...ing-qt-script/ and http://labs.trolltech.com/blogs/2009...-squirrelfish/
Haha.. 'Similar' indeed! There's also papervision3d/away3d for other web software-rendered-3d-engines. These work reasonably well, but of course, nowhere near as fast as an engine using Open-GL acceleration (ie. O3D).

Great links!

<offtopic>
You may be interested in performance differences of the different Javascript Engines. Spoiler: V8 decimates the competition, with IE proving its crappiness...
http://waynepan.com/2008/09/02/v8-tr...e8-benchmarks/
</offtopic>

}:^D~
 

The Following User Says Thank You to Capt'n Corrupt For This Useful Post:
VDVsx's Avatar
Posts: 1,070 | Thanked: 1,604 times | Joined on Sep 2008 @ Helsinki
#7
Originally Posted by Capt'n Corrupt View Post
Haha.. 'Similar' indeed! There's also papervision3d/away3d for other web software-rendered-3d-engines. These work reasonably well, but of course, nowhere near as fast as an engine using Open-GL acceleration (ie. O3D).
This is a work in progress of course , but you can always use the O3D plugin inside Qt-webkit and produce a stand alone player.
__________________
Valério Valério
www.valeriovalerio.org
 
Capt'n Corrupt's Avatar
Posts: 3,524 | Thanked: 2,958 times | Joined on Oct 2007 @ Delta Quadrant
#8
Originally Posted by VDVsx View Post
This is a work in progress of course , but you can always use the O3D plugin inside Qt-webkit and produce a stand alone player.
I see what you're suggesting. This would seem like an easy way to go about it. In your guesstimation, how memory heavy would such an implementation be?

}:^!~
 
VDVsx's Avatar
Posts: 1,070 | Thanked: 1,604 times | Joined on Sep 2008 @ Helsinki
#9
Originally Posted by Capt'n Corrupt View Post
I see what you're suggesting. This would seem like an easy way to go about it. In your guesstimation, how memory heavy would such an implementation be?

}:^!~
Sorry, don't have any clue about the memory footprint of O3D. But since everything is OSS(I guess), this should be a doable and very fun task .
__________________
Valério Valério
www.valeriovalerio.org
 
Capt'n Corrupt's Avatar
Posts: 3,524 | Thanked: 2,958 times | Joined on Oct 2007 @ Delta Quadrant
#10
Yeah, I'm *strongly* considering tinkering with this. Of course, if I can make the time. I think it would be a great learning experience (coding on maemo for me). I also think it would be tremendously beneficial for the community as a whole (maemo and the world).

}:^)~
 

The Following User Says Thank You to Capt'n Corrupt For This Useful Post:
Reply

Tags
google, o3d, plugin


 
Forum Jump


All times are GMT. The time now is 18:35.