Next entry: Interactive high-quality audio control using X3D
Previous entry: To The Artists and Content Owners
X3D Community Blog
November 21, 2006
The sweet spot of X3D is bringing 3D graphics to a wider audience
I was recently asked this question: “I don’t really see why I want to generate X3D when I can just call OpenGL and write my own code?”
Sure, you can. But to write it efficiently requires lots of acquired knowledge. Even writing X3D requires a fair bit of 3D knowledge. But saying Box { size 1 2 2 } is worlds apart from the low-level details of geometry expression in OpenGL: what form of geometry is best for speed, whether to state sort the results, how culling interacts to render thousands of those boxes directly, etc.
X3D is a step above OpenGL/DirectX in abstraction. It was mostly designed for and targeted at non-3d graphics programmers. You certainly can go higher in abstraction but it represents a nice level above direct 3D graphics programming.
Let’s take a scientific visualization programmer. With X3D they can output meaningful representations of their data without needing to understand low-level graphics. Same thing for a operations person of say a shipping company. I believe X3D’s sweet spot is in bringing 3D graphics expression to a wider audience, one not necessary trained in the art of 3D graphics programming, but fairly technical nonetheless. I’ve watched it happen at least a hundred times with the Naval Post Graduate Schools students that I work with. These are not 3D graphics experts, but they use X3D to visualize what-ifs for real world problems. They typically write the behavior part and leave the graphics to the X3D player.
The same is true with navigation. X3D players have a lot of code to enable easy navigation of worlds. If you code to OpenGL your have to write that yourself. It’s a bunch of code to do it right.
X3D also includes a behavior system. It is at a much lower level then in MMORPGs, but it is also not contrained to the specifics of a certain type of game (MMORPH behaviors are generally locked into the concept of enemy, targets, vehicles and weapons for instance). X3D’s behavior system is more general but can express all the basic concepts in any MMORPG game. A good X3D author creates that type of lexicon while developing content. Using PROTO’s or another XML language that styles to X3D - you can create higher level languages. And all of this is many steps above coding behaviors directly in OpenGL or other low level library such as DirectX.
I got into developing X3D applications because I wanted to make virtual reality and simulations… I could have cared less about OpenGL or DirectX. But then I got excited about making that capability available to lots of other non-graphics programmers. So here I am, contributing to the X3D specification and testing new features and creating real-world (bill-paying) simulation applications using Xj3D that my company, Yumetech develops and manages.
Comments
This is true. So is this:
A PhD candidate at a world-renowned technical institute located in Cambridge, MA once asked me, “Do you know a generalized 3D programming language, maybe something with XML? I’m tired of writing my own.”
And even though he had acquired a huge amount of knowledge and was perfectly capable of writing his own OpenGL code (or even creating his own language and designing the hardware to accelerate it), he simply wanted something stable, convenient and well-documented.
He wanted X3D.
I think Alan has it right.
The continnuing mission is to provide a responsive platform
that allows new graphical and behavioral details to emerge
without sacfificing old details of our realistically abstracted
consensual hallucination authoring and delivery system
that we call X3D.
I need insight to interactive web 3D. We are already working with 3D game developers but wish to publish to WEB. Involving video and demo stations. Perhaps an example might be, a virtual trade show booth.
Post your comments
Note: All comments are moderated by the webmaster. Until then, the comment won't appear on the entry. Thanks for waiting.
