SGI Releases Open Inventor As Open Source
SGI has released Open Inventor (TM) 3D graphics toolkit to the open source community. You can read the press release here and their FAQ here. I'm sure many people will ask what is this Open Inventor, so could a /. reader give a few words about it?
I use Blender at home (because I only mess with this stuff for my own amusement). So as soon as I read this I thought "Can Blender and Inventor share tech, now that they are both open"? The only thing that would keep that from happening is license problems.
But Inventor is LGPL! Woohoo! http://oss.sgi.com/projects/inven tor/license.html
--
Linux MAPI Server!
http://www.openone.com/software/MailOne/
(Exchange Migration HOWTO coming soon)
from the FAQ :
What is Open Inventor?
Open Inventor is an object-oriented 3D toolkit offering a comprehensive solution to interactive graphics programming problems. It presents a programming model based on a 3D scene database that dramatically simplifies graphics programming. It includes a rich set of objects such as cubes, polygons, text, materials, cameras, lights, trackballs, handle boxes, 3D viewers, and editors that speed up your programming time and extend your 3D programming capabilities.
so, basically it's a set of OpenGL models and widgets,.. i haven't gotten to look at it in depth but if i had to guess i'd say it could be quite handy. i have yet to see it implimented in anything, though.
someone go out and make a 3d tetris with it
...dave
Think different? I'd be happy if most people would just think...
What is Open Inventor?
Open Inventor is an object-oriented 3D toolkit
offering a comprehensive solution to
interactive graphics programming problems. It
presents a programming model based on a 3D
scene database that dramatically
simplifies graphics programming. It includes
a rich set of objects such as cubes,
polygons, text, materials, cameras,
lights, trackballs, handle boxes, 3D viewers,
and editors that speed up your programming time
and extend your 3D programming capabilities.
Open Inventor:
is built on top of OpenGL
defines a standard file format for 3D data
interchange
introduces a simple event model for 3D
nteraction
provides animation objects called Engines
provides high performance object picking
is window system and platform independent
is a cross-platform 3D graphics development system
supports PostScript printing
encourages programmers to create new customized objects
is fun to use
"One World, One Web, One Program" - Microsoft Promotional Ad
I know not what course others may take; but as for me, give me liberty or give me death!
Humm, I think there is a company (from Norway, IIRC) who did an open source implementation of OpenInventor.
Does anybody happen to know something more? (how does the two compare?)
Real life is overrated.
Open Inventors main draw (no pun intended) is its scene graph. Basically, a scene graph is a description of everything in a 3D world. You can use it to render a scene, but its not limited to that. You could visit every node in a scene graph and instead of rendering, you could build a new data structure based on the previous one which does anything you want with the geometry. Which for me means building a display list that will draw the scene using advanced texturing and shading techniques which are not available in Open Inventor. This means that I get to concentrate on the shading, and do not have to worry about how to store my geometry. Open Inventor has a file format as well, so I don't even have to worry about creating a new one.
I mainly see Open Inventor as a prototyping tool, because its possible to get something on the screen with very little code. I also see it as an API to use to create editors and other tools. But, does anyone know any "real" applications that use Open Inventor?
Open Inventor is great at rapidly creating interactive 3D applications. By 'interactive' I mean things where the user can get in and pick objects, move them around, etc. Open Inventor takes care of all the rendering and events for you and so it's pretty easy to get something up and running. Performance is good but not Inventor's main thrust -- so it'd be better to write something like a model or level editor in inventor than a first-person shooter.
I've seen Inventor used to create an architectural modeler with great effect; the author was really able to focus on the interface and not spend a lot of time reinventing the wheel for his underlying data structure. We considered using Inventor for the project that eventually became my children's 3D building blocks program, but there were licensing issues and we didn't think the performance would be there by the time we wanted to release it. If I were starting again today, I might reconsider.
GollyGee Blocks -- 3D creativity software for kids.
Dammit, it's got NOTHING to do with Linux. The software is now Free, which means you can build, use, and modify it on any of a wide array of systems. It's about having the source, not about Open Inventor for Linux. There's been OI for Linux/x86 for years already. I can't believe how narrow your view is.
Inventor is a good scene graph, albeit overly complicated. The problem is that its scene graph file format is not trivially (left-right) parsable.
When the early VRML specification was derived from Inventor, (the spec writers used several other open source specs including one I contributed to), they based the file format on Inventor. This was good for them, as they worked at SGI and had access to the parser source.
However, nobody ELSE had access to the parser source, and the complexity of its recreation, along with critical ambiguities in the original spec, made recreation a many man month ordeal. Until recently, those parties that did go through this ordeal chose to sell their implementations under somewhat expensive commercial licenses.
This is why so many applications could export VRML, but few could read it back in. This led to the spec remaining in the hands of a few commercial entities, where it has remained despite claiming an "open" consortium (that you must purchase a seat on.)
The new X3D spec is an interesting mapping of older VRML onto XML, but instead of simplifying things they chose (surprise) to map directly, retaining much of the original problem.
Inventors source release probably has more to do with Fahrenheight(sp).
Open Inventor, as the FAQs will tell you, is a 3d format designed to work with OpenGL.
Mark Pesce used Inventor as a starting point for VRML-1 around 1995. VRML-1 was the first real attempt to create a standard 3d file format that would work over the web. It has seen limited success as a standard of exchange betweed CAD programs.
A second version of VRML based loosely on VRML-1 (but not backward compatable with it) was proposed by one of the major industry players and rapidly became an ISO standard in 1997. By many arguments, it failed as a standard because the required plugin is not installed by default. There are other reasons too, but by and large, mention of VRML still gets a "huh?" even from some fairly computer savvy people.
The next version of VRML being developed by the Web3D Consortium is based on XML. The tags are designed such that conversion from VRML97 to X3D is quite straightforward. If X3D is built into IE and Mozilla, we could finally see the standard VR format gaining acceptance.
As for all the Open Source software flying around in the 3d community now, it tends to make things less exciting from a money point of view. OTOH, I'm sure the same web designers who like to make bandwidth hogging flash sites are getting very excited now.
I am obviously biased in certain areas. Other, less biased histories can be found at: http://hiwaay.net/~crispen/vrml/history.html
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Keep an eye on the older stuff page - the stuff that doesn't make it to the front page sometimes has no comments for several seconds!
PigPog.
It depends. If you want to program still and animated 3D graphics, then you have quite a few choices. Here are a (tiny) subset of the ones I know:
If you're not interested in programming - just modelling and creating then check out:
All of these tools and references are free and work on Windows and Linux alike.
Also, how prohibitive is the hardware for this kind of thing?
All you need is a resonable midrange PC and a decent accelerator. A hardware-accelerated graphics card on your platform is a must to view complex 3D graphics at any kind of framerate. Vendors with good Linux support include include Ati, nVidia, Matrox and 3Dfx.
--- Hot Shot City is particularly good.
In college, I took a couple of animation courses, taught in Open Inventor. Basically, it's a handy dandy interface into OpenGL. We didn't get down and dirty with it, as it was only beginning courses (We used the OI primitives and the like). The big thing it adds (That's easier to understand than OpenGL's standard) is an object graph.
Assume you have an arm attached to a body. You want to reach the arm out. You could rotate the shoulder, and the rest of the arm would rotate, as it would be down the object graph from the shoulder. You could add a second rotation onto the elbow, and then on down to the hand etc. Yes, you can do this with OpenGL, but the way OI does it is a bit easier to understand.
Plus, you had a "preview" program (Can't remember what it's called) where you can basically build your models out of OI widgits, and then get the text, so you know what the coordinates of everything are, etc. One of the handiest things in the world, IMO.
Some addendums to the other guy:
If you're on Windows, check out www.strata3d.com
for a decent free, OpenGL accelerated modeler.
Also, check out www.gamedev.net. They've got some good message boards for OpenGL, and some good tutorials.
There are some good tutorials at http://nehe.gamedev.net/opengl.asp.
A deep unwavering belief is a sure sign you're missing something...
I have been wanting this for so long. I met the OpenInventor team about 5 years ago - smart cookies. I've been begging SGI for exactly this every year for the past 4 years.
They did an incredible job - it's one of the best designed C++ libraries I've ever used. It's not suitable for games but for putting good 3d interactive graphics in a professional program without spending *years* learning the details of OpenGL it is wonderful.
This is the one move that SGI could have made to prevent Direct3D winning the 3D api wars. Scenegraph based applications are an order of magnitude easier to program.
Thanks SGI - I might even buy another SGI now (I know SGIs came with OpenInventor - but it wouldn't work gcc before)
http://rareformnewmedia.com/
Actually, the best way to describe it is OpenGL-retained mode. It is a library that sits on top of OpenGL and deals with stuff on the object level instead of the triangle level.
A deep unwavering belief is a sure sign you're missing something...
But not usable in a commercial product.
Sure the file format was simple, but the event model was very ambiguous and open ended in many fashions - and that's after my working group spent a lot of time trying to fix it with revisions to the ISO spec and then the EAI spec following that. (Yes, I lead the working groups to do that. Check the user bio).
I also spent a lot of time working on the J3D loader to get the model up to scratch and it is a real shit to do if you want anything other than a time zero loader.
My understanding of X3D is that they still haven't cleared up many of the inconsistencies, just swept them under the carpet.
Life is complete only for brief intervals in between toys or projects -- John Dalton
Slightly OT, but we have all been talking about how the nVidia cards have the best consumer OpenGL ICD and that they will not release it to help Matrox and ATI etc. catch up........what chance of SGI (who MUST have the best OpenGL ICDs period) helping everyone play catchup instead.....then we can all have some Schweeeeeeeeeeet Free ICDs.
Never underestimate the dark side of the Source
Hmm. I too thought that all of blender was open source for version 2.x, but in fact only some parts of it are. Damn. Have a look at the open source section at blender's website.
You guys don't get it. There is currently a battle for a general-purpose cross-platform open-source scene-graph(hey, hyphen city) and SGI just threw their hat into the ring, and a big sombrero it is. To get a feel for how many toolkits are out there, check out the Linux3D BOF notes from SIGGRAPH. http://www.linux3d.org (and that barely touches all of the offerings, not even considering the gaming scene-graphs, which are a slightly different focus) SGI's OpenInventor represents some serious man-years of design and development, and many commercial applications on the IRIX platform have been built on top of it. In fact, TGS licensed Inventor from SGI a few years back, and have gone cross-platform and extended it's functionality. They charge something like 8 grand a developer seat! Does this release hurt them? Maybe. It's just like any other open-source effort, commercial versions need to provide value-add over the free implementation to justify their cost. Right now, TGS is cross-platform, more loaders, large-model handling, volume rendering, commercially supported, etc. HP was rumoured to be releasing DirectModel, their large-model scengraph, it is in beta for Linux, but has yet to be release. HP has really been dropping the ball on that one, they even forgot to mention it at Linux3D BOF at SIGGRAPH. Sun has Java3D, which has a performance problem, and relies on good JavaVM on each machine. Windows has opted out, Farhenheit is dead, leaving Direct3D Retained Mode. So, yeah, this represents a significant blip on the open source radar, at least as it concerns 3D graphics. If there is enough involvment, and enough features are added, it has a chance at becoming the defacto standard, much like Mesa3D has. IMHO, it needs work in these 2 areas: - Performance Inventor has a rep for being slow or hard to speed up, due to it's scene-graph design. With todays 3D hardware increase, it may not be as significant. Thread-safety is another important issue these days. - Cross-platform SGI may not want this, but they need to realize that if any 3D scenegraph is going to emerge as a leader, it must be cross-platform. A lot of companies need to run on as many platforms as possible, if they want to get the most dollars they can. - New features Volume rendering, large models, decimation, loaders, etc. All are good things. But in summary, OpenInventor has as its strength a well-designed, mature, well-documented API that could really make a difference to the 3D community now that it is open sourced. Kudo's to SGI for finally making the decision. They're contribution will help set the bar for a minimum quality that the other efforts will have to compare too. Smart business move, too, imho, because people may start with Inventor, and finally demand more performance, which will lead them to Performer or SGI's hardware. It's SGI's job to make that value-add significant enough.
You were probably using a modeller that couldn't export optimized VRML code.
VRML was, in this aspect, pretty similar to HTML: you can write code by hand and produce tight, optimized files, or you can use FrontPage and produce bloat. Of course, it was quite more difficult to code 3D scenes on your own, by hand, (which reminds me of my POV-Ray using days... but I disgress), but that's why you had gzip for.
This is an interesting point.
VRML used the ASCII 3D format which is naturally very large, much larger that a binary equivalent and a binary inventor format existed, although compressing the ascii should have been possible.
I expect the motivation was to allow people to text edit the data in ascii format, much as you can with html. This is a strength of Inventor but it's getting to the stage where this kind of thing is impractical.
Your releasing your app as Open Source is not predecated on the underlying libs being Open Source. You could go ahead and release your code today, building them would simply require a developer to own the prerequisites.
Synopsis
Ultimately, Open Inventor is useful as a 3D prototyping tool. It's a great way to get a simple, interactive 3D program running quickly.
Beyond that, I don't think that it's particularly useful. It falls into the classic trap of 'jack of all trades, master of none'. There is nothing that it does particlarly well except prototyping; so there are no rich Inventor applications.
My experience with Inventor
When I started at Silicon Graphics working on Inventor, (or Scenario as it was called at the time) I was filled with optimism and excitement. This tool was going to make 3D ubiquitous. I had thought that the reason that there were so few 3D applications was that they were too hard to write; and that by building a generic high-level toolkit we could solve that problem.
The big problem ended up being that by building a high-level toolkit; you end up taking over the application. If you want to provide high-level functionality, you necessarily have to circumscribe the possible applications. You have to adopt the Inventor scene graph, nodes, and traversal. These may not be appropriate for your particular application, in fact, they are almost guaranteed not to be. You can extend Inventor by creating your own nodes, and several users have done that to get more performance; and a closer match between their application and the Inventor infrastructure -- but that's only a step along the way to creating your complete independent application IMHO.
There were great things about the Inventor development experience. I have never worked with as bright or dedicated a team of programmers as Carey, Strauss, Paul Isaacs, Nik Thompson, Dave Mott, Dave Immel, Josie Wernecke, and Alain Dumesney. I was in charge of backups, and it was not uncommon that almost every of the hundreds of source modules was changed in a day -- we were making large scale changes at an incredibly rapid pace as we prototyped, learned, and experimented. ILM was one of our beta-sites, and they got more out of Inventor than I ever thought that they would.
Inventor also cured me of C++. It seemed at first that C++ would be perfect for something like Inventor; but it was a near disaster IMHO (not shared by everyone on the team, I should point out.) C++ gives you some extra rope; but it quickly becomes tangled around your neck.
The biggest problem by far was nodes and traversals. You can think about them as two different dimensions. Nodes are things like cubes, cylinders, materials, colors, lights, and so on; while traversals are for rendering, bounding box calculation, printing, and the like. Nodes are the nouns, and traversals are the verbs.
C++ works for one-dimensional extensions, but we had to resort to a traditional function table to do this two-dimensional extension. It works, but it's a mess; and the language only got in the way instead of helping. This is only one of the many examples were the promise of C++ was not only not fulfilled, but was shown to be the exact opposite of what was promised; it hindered rather than helped.
Going forward
At Siggraph this year, there were no less than four scene graphs for Linux discussed during the Linux/OpenGL BOF meeting. I wish them luck, and hope that they find something useful in the Inventor source.
I love Mondays. On a Monday, anything is possible.
Take this from someone who was part of a LONG project to get Java 3D working up to the level a naive person would expect after hearing the Java hype... it ain't happing.
The performance of Java 3D is abysmal. Sure, you can build a few 3D molecules, but try mapping video onto it in real-time. Uh-uh; no way. Try powering it with a big graph, oh, say 30 objects or so (*nothing* in OpenGL)... forget it. Open Inventor is not the fastest engine on the planet (not supposed to be), but it's WAY faster than Java3D.
I still hold out hope for Java. It's got a future as a replacement for CGI, or database clients, but don't even think of using it where you need performance and access to system level hardware acceleration.
Peace.
Scott