Search code examples
opengl-es3dwebgldxf

Interactive 3d Web Technology


I would like to use interactive 3D models in a web page. The required functionality is:

  • Import dxf file which defines & displays a room.
  • Add/move prebuilt objects from javascript
  • Add/move lamp which cast shadows from javascript
  • Return room dimensions to javascript
  • Return object positions to javascript

Can I import dxf files into any WebGL engine?

I have a small repeat user base so a browser installation is no problem at all. Is there any plugin technology I could use? Java applets? Unity? Can I use an OpenGL engine as a plugin? How about a java3d applet?

I will start with desktop but would need to be targeting tablets soon and mobiles in two years or so.

I am becoming convinced I will need to hire an expert to write this but I want to understand the options. Can you recommend a suitable technology?


Solution

  • I think WebGL is an excellent choice for this application; the graphics functions you describe are well within its capabilities. I can't comment on model loading, though, as I'm not familiar with WebGL engines.

    However, mobile is a big wrinkle. Regarding the techniques you mention:

    • WebGL is supported in Chrome and Firefox for Android. On iOS, Mobile Safari does not enable WebGL, but an implementation exists (used strictly for in-app ads), so it is likely that there may be broader WebGL support in the future (possibly requiring a custom web view wrapper to enable it).

    • Java applets are not supported by any browser on either Android or iOS.

    • Unity is a viable choice; the Unity Web Player browser plugin allows embedding Unity content in a web page. However, there is no such plugin for mobile-OS devices; Unity content may be compiled into a application for iOS or Android but it cannot be viewed within a web page.

      News as of August 2014: Unity has announced that the upcoming Unity 5 will include publishing to JavaScript + WebGL (no plugin required). Assuming this works as promised, you can use Unity if your target platform has a browser with WebGL support.

    So, if you absolutely need cross-platform 3D including iOS right now, Unity is where it's at, but WebGL is a good choice for desktop and Android now and likely to improve on mobile in the future, and is the only way to embed 3D in a web page, not an app across desktop and Android.