views:

458

answers:

10

Hi,

I've to create a Web Based Application, that amongst other things, includes the following tasks

  • Loading a 3D model from a database.
  • Display the 3D Model.
  • Doing Inverse Kinematics computations to generate the series of steps for the model to move from an initial to final position.
  • Display the animation in real time.

The application was originally intended to be a PC based application on Qt/OpenGL, but we're investigating whether its feasible to implement it as a Web Based app.

My knowledge on Web Based development is still limited.

What would be the recommended approach/technology in order to come up with a solution for this ?

Thanks!!

Update: Platform Independent solutions preferred. The application needs to run on Mac and Windows machines.

+4  A: 

If it is a webapp, you should look into Papervision3D (http://papervision3d.org/) for a Flash-based approach (that would be the way if you want it to be relatively platform-independent).

Nouveau
+1  A: 

Well, you certainly cannot do all that in HTML, so it's a matter of choosing you plugin technology.

The way I see it, your best bet is Flash, since this is a mature platform with lots of 3rd party extensions (such as http://www.flashsandy.org/) available to let you do your 3D modeling.

The other alternative is Silverlight, which will give you the power of .NET/C# (rather than scripting).

Both are cross-platform and cross-browser.

Tor Haugen
+4  A: 

A Java applet will probably do what you want too.

Have a look at java 3d

Omar Kooheji
A: 

There are a number of approaches to this. Some that come to my mind:

  • consider delivering it as an ActiveX component (fastest, but Win32 only).
  • consider using .NET (Silverlight) (Win32, OSX, *nix in the foreseable future through Moonlight; DirectX/Direct3D only)
  • consider using Java, which can access OpenGL as well.
  • consider using any middlewhere that you come across.. there should be dozens.

A problem will probably be the portability. There are two caveats here: Your code needs to run everywhere and it needs 3D acceleration. That's a problem, because you can not be sure if it will have 3D (you can query your context, of course).

You might hence also want to consider to rasterize and render on the CPU (i.e. using MESA3D). If you do not need to allow freeform transformations and want to animate, say, 30 frames and using Mesa you could possibly render 5fps on a typical model on typical hardware, you'd need 6 seconds to calculate the whole scene. That'd be enough.

mstrobl
ActiveX is not only Win32-only but also IE-only.
Nouveau
You are right Nouveau, did not think of that.
mstrobl
A: 

Canvas and JavaScript might be able to render it, depending on the complexity of your 3D Model. See this Canvas 3D example

There's also the Firefox Canvas 3D Addon and the Canvas 3d JS Library for writing 3D applications using it.

Sam Hasler
+2  A: 

Also Google's excellent but new O3D: http://code.google.com/apis/o3d/

Gavin
A: 

Another Java option, less integrated with the JVM but based OpenGl - lwjgl (my favorite) and jogl.

Check Jake2 webstart: http://bytonic.de/html/jake2%5Fwebstart.html

Liran Orevi
A: 

Adobe Shockwave has powerful 3d modeling capabilities. Unfortunately it's under-supported at the moment, but Flash does not have 3d features (The papervision3d project tries to rectify that, YMMV).

Scott Stafford
+1  A: 

webgl is also an interesting alternative. no plugins, just opengl in the browser (including shaders).

6502
A: 

I agree with others that Flash is probably your best bet. If there is a concern about running on apple mobile devices in the future, and cost is not a concern, look at developing something using Unity. It's a plugin (like Flash), but is has not invoked the wrath of Steve Jobs.

http://unity3d.com/gallery/developer-profiles/web-games/

ThatSteveGuy