Interactive 3d Web Technology

2019-08-03 09:49发布

问题:

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?

回答1:

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.



回答2:

WebGL is not the only way to embed 3D in a web page - see phoria.js: http://www.kevs3d.co.uk/dev/phoria/

https://github.com/kevinroast/phoria.js

Also three.js has a canvas rendering for without web-gl.

Phoria.js and others like it will work on iPhone/iPad and Android phones that don't support web-gl. Of course, the performance is MUCH lower but if you don't have complex models and want it to work everywhere...