The video shown below was produced at Ernani Silva Bruno Primary School, in São Paulo, August, 2012. It shows two moments of an after school interactive media literacy project that has been carried out under the supervision of Jorge Franco.
The project’s goal is to stimulate students from the 4th grade level enhancing technical and cognitive skills as well as learning and applying science concepts from the curriculum through using digital media. Among other activities, the students have been editing X3DOM files. Through that it is expected they learn basics of computer graphics, develop spatial thinking and math skills related to coordinate systems and how to place virtual objects, and enhance reading and writing abilities which are experienced while they are programming and commenting X3D and HTML code.
We have further improved picking to cope with several problems that came along with the original approach (which was mentioned in a very old post). Therefore, picking now supports 64k different objects, a higher precision pick position and the normal at the picked position (both in world space) for all mouse events.
We still use a single-pass render-buffer-based approach, but instead of rendering the normalized world position into an FBO’s 8-bit RGB channel and the (internal) Shape ID into the (also 8-bit) alpha channel, we now render just the distance of the picked object position to the camera position into the RG channel (encoded as 16-bit value in the shader) and the Shape ID into the texture’s BA channel (also encoded as 16-bit).
Having the distance d between both positions provides enough information to calculate the full 3D position, since the x and y components (along with z later on) can be obtained by computing the view ray through the the picked pixel position (x,y).
var line = viewarea.calcViewRay(x, y);
var pickPos = line.pos.add(line.dir.multiply(d));
And instead of just reading back a single (8-bit) RGBA value at the picked pixel position (x,y), we now read back a small 2×2 window, so that we can also directly compute the object’s normal by taking the cross product of the (decoded) world space position above (x,y-1) and to the right (x+1,y).
This way, the corresponding UI Event object now not only provides the picked world position (worldX, worldY, and worldZ), but also normalX, normalY, and normalZ. A little demo can be found here.
This year’s Web3D conference, which was held in cooperation with ACM Siggraph, has shown that the most common development platforms in 3D Web research are of course WebGL and – most interestingly – X3DOM. Please check out the whole technical program if you like to learn more. A few impressions showing the conference’s opening session (top photo) as well as a panel session (bottom) can be seen below.
The Web3D 2012 conference’s organizing team. From left to right: general chair Christophe Mouton (EDF, France), program chair (and X3DOM core developer) Yvonne Jung (Fraunhofer IGD, Germany), general chair Jorge Posada (Vicomtech, Spain), and program chair Marcio Cabral (University of Sao Paulo, Brazil).
Panel Session: 3D and the Web. Sitting in front, from left to right: Don Brutzman (NPS), Samuel Parfouru (EDF), Neil Trevett (Khronos Group and NVidia), Kenneth Russell (Google and WebGL Working Group Chair), Marius Preda (MPEG ARAF), Johannes Behr (Fraunhofer IGD), and Alain Chesnais (TrendSpottr and former President ACM), who chaired the panel).
Come meet the developer team at the exhibition floor of Siggraph 2012 in Los Angeles in booth #234! We brought some new Kinect goodies with us and will show a fusion of InstantReality as a service for out-of-core rendering with X3DOM. It’ll blow your mind! For those who can’t wait to see it, here is a 14.5 million triangle model paged to an iPad. In addition we will present the latest features of X3DOM and general X3D developments at the following BOFs:
X3DOM a Declarative 3D Solution, Wednesday 10 AM – 11 AM
We are going to present the paper with the longest title we’ve ever produced at the Web3D 2012 conference taking place in four weeks in LA: “Using Images and Explicit Binary Container for Efficient and Incremental Delivery of Declarative 3D Scenes on the Web“. It’s all technology to build fast and responsive X3DOM applications. We are going to release the final code as part of X3DOM and a command line tool to convert the mesh data easily before the event. In the meantime please enjoy some more demos that utilize the new binary mesh container.
The conference is co-located with SIGGRAPH 2012 and will take place on August 04-05, 2012, in Los Angeles, CA, USA.
The X3DOM team will be at Web3D with several presentations. So, if you’re around, it’s a great opportunity for discussions. Hope to see you there…
On April, 17th, some members of the X3DOM team were at the WWW2012 Workshop “Declarative 3D for the Web Architecture” (Dec3D2012) in Lyon, France. There, we presented X3DOM and discussed about an integration of interactive 3D graphics capabilities into the W3C Web technology stack together with researchers from the Web community. If you are also interested in evolving the idea of declarative 3D in the Web, feel free to join our Community Group: http://www.w3.org/community/declarative3d/
Johannes Behr (Fraunhofer IGD), who was part of the workshop's organizing team (together with Kristian Sons, DFKI, who is sitting to the left), presents the community group's goals.
The 17th ACM International Web3D Conference will address a wide range of research topics related to Web-based 3D graphics (like X3D/ X3DOM/ Dec3D). The Conference will be held in Los Angeles in conjunction with SIGGRAPH 2012 on August 4-5, 2012.
This external showcase demonstrates the use of X3DOM in product customization. The company 3D Betrieb created this online 3D product configuration tool helping the user to visualize objects with different designs. It allows to preview the object with different appearances showing changes in colors, arrangement as well as viewing angle.
We are happy to announce two related scientific conferences, which are coming up and where members of the X3DOM team are directly involved as part of the organizing team: the Dec3D 2012 Workshop in conjunction with WWW2012 in April located in Lyon, France, and the 17th International Web3D 2012 conference that is co-located with ACM Siggraph 2012 and held in Los Angeles, USA.
Both conferences include a ‘call for papers’ for related scientific material:
Currently Internet Explorer does not sport a native WebGL implementation. This means X3DOM has to fallback to the Flash Player in order to render 3D content. However, there is a way around this: Chrome Frame. The plugin developed by Google replaces the default rendering engine of Internet Explorer with Google Chrome. What you get is the User Interface of Internet Explorer and the rendering capabilities of Google Chrome – including a native WebGL implementation.
As an IE user, we recommend you install the Chrome Frame plugin to experience the full power of X3DOM. As a developer, you can target the Chrome Frame rendering engine, by placing the following meta tag in your HTML head section:
The WebGL Liver Anatomy Browser is developed within a german research project supported by the BMBF. The browser is part of a eLearning application and provides interactive web-based 3D models derived from patient-speciﬁc image data. 3D visualizations are accessible in real-time with a newly developed viewer based on X3D, X3DOM and WebGL.
The Portuguese research project called ColaDI, a national funded project led by inEvo, focused on developing a collaborative document management solution (DMS) for industrial design. The project uses X3DOM to show and annotate 3D models.
X3DOM is used to render a X3D model exported from a native CAD application. The model is update REAL-TIME from a Matlab simulation model. It also integrates the 3D view with our other tools like semantic search by capturing DOM events (video around 2:53). Interfacing with the simulation from the browser is done via WebSockets. It displays the performance X3DOM is capable of: latency for visualization is constantly less than 50-100 ms.