My favorites | English | Sign in

O3D Plug-in API (Deprecated)

Frequently Asked Questions

General Questions

What is O3D?
O3D is an open source web API for creating rich, interactive 3D applications in the browser.
Why did Google decide to build O3D?
As recent product announcements (Quake Live, Microsoft Virtual Earth 3D, etc.) have made clear, developers want to provide rich 3D experiences to users on the Web. The solutions they're using right now, however, have inherent drawbacks. Special-purpose plug-ins are not cross-platform and require installs. Software rendering frameworks don't provide the performance necessary to create high-quality 3D experiences. Google believes that a web standard could help developers create richer 3D experiences on the web and thus move it forward as a platform. We decided to build O3D to participate in a conversation within the broader developer community about 3D web standards.
In what browsers and on which operating systems is O3D available?
O3D is available in Internet Explorer, Firefox, Chrome, and Safari and works on any Linux, Mac, and Windows computer that meets the minimum hardware requirements.
What are the hardware requirements for O3D?
Our O3D plug-in implementation should run on any Windows, Mac, or Linux machine that has a DirectX 9, PS 2.0 capable graphics card. However, because this implementation is at an early stage, there may be other incompatible systems. We are working on a solution that will allow O3D to work with more graphics cards.
Is O3D suitable for mobile applications—for example, apps for the iPhone or for Android stores?
O3D does not work currently on any mobile platform.
When will a localized version be available in my language/country?
O3D can be used by developers to create applications around the world. Our documentation is available only in English. Currently, we have no plans to translate our documentation into other languages.
How do I uninstall O3D?

On Windows: you can uninstall through the Windows Control Panel.

On Mac: you can uninstall by dragging the O3D plug-in from the /Library/Internet Plug-ins/ folder to the trash.

On Linux: you can uninstall by deleting the O3D plug-in from your internet plug-ins directory.

How much does someone need to know about graphics before they can use O3D?
Developers who already have some experience working with OpenGL or Direct3D will feel most comfortable using O3D.
Was O3D designed for Google applications only?
No. O3D is designed to be agnostic to browser, operating system, application, and application platform. It has not been designed for any specific Google application. This is our proposal for an open web standard. We welcome suggestions for shaping it.
What information are you collecting with O3D?

You do not need to provide any personally identifying information in order to download and use O3D. When you download O3D or use it to contact Google's servers, Google receives only standard log information, including your machine's IP address.

Your copy of O3D includes one or more unique application numbers. These numbers and information about your installation of O3D (e.g., version number, operating system) will be sent to Google when you first install and use O3D and when O3D automatically checks for updates. If you choose to send usage statistics and crash reports to Google, O3D will send us this information along with a unique application number as well. Crash reports can contain information from files, applications, and services that were running at the time of a malfunction. We use crash reports to diagnose and try to fix any problems with O3D. If you chose to send usage statistics and crash reports to Google when you initially installed O3D and you no longer wish to send that information to Google, you must uninstall O3D and reinstall without electing to send usage statistics and crash reports to Google.

Why did Google make this an open source project?
Google is open sourcing O3D to encourage community discussions on the 3D graphics space. We recognize that the open source community is a major driver of web technologies. We also believe that open public scrutiny is a powerful tool for making software better.
How can a developer get support from the O3D team?
At this time, our O3D plug-in implementation is available to developers to evaluate the API and give us feedback. Therefore, Google cannot commit to any support guarantees. We have created a Google Group to facilitate community discussion and support. Our engineers will be participating in this group and will do their best to respond to questions in a timely fashion. We have also created a public issue tracker where people experimenting with the technology can report bugs and security issues. Finally, we also have a Moderator application where developers can provide feedback to Google and the community as a whole.
What is the download size of the plug-in?

Windows and Mac: depending on whether you have run 3D applications before on your system, between 1.4MB and 1.7MB (on Windows) and about 5MB on the Mac.

Linux: you must download and compile from source.

How do I access the source code / your documentation / the known bugs?
Visit our O3D Project Hosting website to browse the source code and to file bugs with the Issue Tracker. Visit the Google Code website to view the documentation.
How do I get involved in the O3D project?
As a first step, join our Google Group to participate in ongoing discussions about the project and to provide feedback on the source code. Use the Issue Tracker to file bugs. Participate in the discussion with the open source community through our Moderator application.
I have created an application on O3D. Where can I post it? Will Google help distribute it?
We encourage you to share information about your application in our Google Group. This will help you get feedback from the broader developer community as well as publicize your efforts.

Technical Questions

How do I inspect O3D objects in Firebug?
Run Firefox 3.0+.
How do I get a debug console in Firefox?
In Firefox, type "about:config" in the URL area. Modify or Add (right-click) the Boolean value "browser.dom.window.dump.enabled" and set it to TRUE. Then start Firefox with the command line argument "-console". From then on, you can use the JavaScript function "dump(string)" to print to that console. Of course, this is Firefox only. See o3djs/dump.js as an example of using it.
Does O3D work under VMware?
We have reports (unconfirmed) that O3D does not work in Ubuntu under VMware yet. We have reports that O3D does work in VMware on the Mac OS, as long as you enable DirectX acceleration.
How do I create lights?

O3D is fundamentally a shader-based system, and at heart it has no predefined lighting. That said, our sample converter and sample loader path creates shaders that use just one light. If you want more lights, you'll need to create your own shaders or you'll need to modify the code in o3djs/effect.js to create shaders that use more lights.

Also, lighting information is not currently passed in to our samples, but you have all the source code so you can change the O3D Converter to add lighting information and change the serialization code (o3djs/serialization.js) to do something with the lighting information that you add.

How do I turn off backface culling? Right now my models are 2x the poly count that they should be because I need to make them two-sided.
You can set certain render states, including culling (see the State class). States are set on Material objects on Primitives or the StateSet object in the render graph. If you are using our utility libraries to create your render graph, then the simple way to turn off all culling would be as follows:
g_viewInfo = o3djs.renderGraph.createBasicView(...);
g_viewInfo.performanceState.getStateParam('CullMode').value = g_o3d.State.CULL_NONE;
g_viewInfo.zOrderedState.getStateParam('CullMode').value = g_o3d.State.CULL_NONE;
Why doesn't O3D use OpenGL's shading language (GLSL)?
There are a number of reasons we decided against using GLSL as our standard shading language:
  1. Many OpenGL drivers are not in compliance with the GLSL specification and can fail to compile shaders for arbitrary undocumented reasons.
  2. On some graphics hardware capable of programmable shading, the OpenGL driver does not support GLSL, even though the hardware would be capable of it (and has a DirectX9 driver).
  3. Drivers that are in compliance with the specification are allowed to fall back to software rendering for difficult shaders, but there is no way to determine if a given shader will cause a software fallback. This results in unpredictable performance.
  4. There is no well-defined minimum specification that is guaranteed to execute in hardware on all platforms.
Why don't browser keys like Ctrl-T, Ctrl-N, etc., work when the O3D area has the focus?
This is a limitation of plug-ins. The NPAPI provides no way for a plug-in to pass keys back to the browser. If you know of a workaround, please come talk to us.
Why doesn't O3D stop in the browser's debugger when I get an error like "trying to set non-existent property in NPObject"?
The NPAPI does not provide a way to return an error message and, at the same time, stop the JavaScript at a specific line. If you know of a workaround, please come talk to us.