GEF3D Proposal
Introduction
The GEF3D project is a proposed open source project under the Eclipse Technology Project.
According to the Eclipse Development Process, this proposal is intended to declare the intent and scope of the GEF3D project as well as to gather input from the Eclipse community. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.gef3d newsgroup.
Background
Three-dimensional visualizations are often very helpful when two-dimensional representations of complex systems become too cluttered or when domain specific diagrams are already using three-dimensional notations. On the other hand, 3D visualizers are often developed separately from existing development tools or IDEs, such as Eclipse. These special solutions are created using 3D frameworks such as OpenGL, Java3D or VRML/X3D. These frameworks are very different from the ones used for implementing 2D visualizations in the Eclipse environment, such as GEF. Thus, when existing 2D solutions should be extended to 3D, e.g. because the models represented become more and more complex, completely new solutions have to be implemented; switching from 2D to 3D requires completely new programming skills as well as new tools -- eventhough in many cases the models are not that different (or should even be the same) and many graphical properties are quite similar.
Project Description
GEF3D will provide a framework for implementing 3D graph-based editors as simple as 2D graphical editors and to use 2D editors in a 3D environment.
GEF3D extends the Eclipse GEF framework and adds the ability to create 3D visualizations and editors just the way 2D graphical editors are created with GEF. Instead of GEF's 2D package Draw2D, it comes with an OpenGL based version, called Draw3D; for handling 3D related tasks appropriate controller classes extend or replace existing GEF based controller parts.
By projecting 2D content on 3D planes, it is possible to reuse existing 2D GEF-based editors and use them in a 3D environment. This way certain 3D features can easily be added without much implementation effort. GEF3D provides necessary techniques and design patterns in order to reduce extra implementation effort for 3D as much as possible.
Goal
The goal of the GEF3D is to:
- implement view classes similar to the Draw2D library
- implement 3D navigation tool classes such as cameras or 3D picking techniques
- provide GEF-like techniques in a 3D environment, such as handles, feedback figues and so on
- enable multiple graphical editors (2D/3D) to be displayed in a single 3D scene
- enable the seamless combination of 2D and 3D elements
Scope
The project will provide a framework for enabling 3D graph-based editors, that is editors using visualizations based on nodes, edges and nested nodes. These nodes and edges are 3D or 2D shapes, the latter are to be projected on 3D shapes. The shapes are all rendered using OpenGL (using LWJGL), basic shapes will be provided by the framework in order to minimize necessary OpenGL knowledge.
Additionally, special navigation and layout techniques will be implemented for achieving good usability,such as tracking shots or detail on demand.
Features
- Support visualization of graph-like models in a 3D manner
- Support basic editing features such as selection, feedback figures and handles and direct editing in 3D
- Support basic 3D navigation techniques (cameras)
- Support seamless combination of 2D and 3D elements
Perspective and Views
- OpenGL canvas displaying 3D figures
- Possibly a birds eye view and / or outlines
Extension points
- Provide extension points for enabling multiple editors
Project Organization
We propose this project should be undertaken as an incubator project with the Eclipse Technology Project.
Mentors
- Chris Aniszczyk
- Ed Merks
Initial Committers
- Jens von Pilgrim (project lead) - FernUniversitaet in Hagen
- Kristian Duske - FernUniversitaet in Hagen
Initial Code Contribution
The initial code contribution is based on the existing GEF3D code base licensed under the EPL. The current project and its source code can be obtain at http://gef3d.org
Licensing and Intellectual property
A point of interest is that GEF3D depends on the LJWGL, an OpenGL Java wrapper. LWJGL itself is licensed under the BSD license. GEF3D contains an LWJGL Eclipse plugin which bundles LWJGL.
Interested Parties
- Ian Bull (GEF, Zest)
- Stéphane Lacrampe (Obeo)
- Sven Efftinge (itemis)
- Yuri Strot (Xored Software)
User community
GEF3D is developed as part of a Ph.D. project at the Software Engineering group at the FernUniverstitaet (distance teaching university) in Hagen, Germany (http://www.fernuni-hagen.de/se/). Several students thesis are using or extending GEF3D. A website, mailing list and bug tracking system are available.
Tentative Development Plan
Some functionality already exists, but there is no real plan at the moment for lack of committed resources. The project's rough priorities are:
Already done:
- Basic support for visualization of graph-like models in a 3D manner
- Support basic editing features such as selection, feedback figures and handles
- Support basic 3D navigation techniques (cameras)
- Support seamless combination of 2D and 3D elements
Future:
- Known bugs are probably fixed in the near future, see GEF3D's bugzilla for details
- New features will be added depending on user's needs
- Possibly a birds eye view and / or outlines
- Extension points
- Port existing GEF-based editors, such as the UML tools or the ecore editor, to 3D. These editors will probably be provided as examples.