Anders
Dahnielson
Romain
Behar
Timothy
M
Shead

# General Information

## Common Questions

### What is &k3d; ?

&k3d; is the free-as-in-freedom 3D modeling, animation, and rendering system for GNU/Linux and Win32. &k3d; features a robust, object-oriented plugin architecture, designed to scale to the needs of professional artists. &k3d; is designed from-the-ground-up to generate motion-picture-quality animation using RenderMan-compliant render engines. We strongly recommend the Aqsis render engine for use with &k3d;.

### Where do I find &k3d; ?

The current version of &k3d; is always available from http://k3d.sourceforge.net

### Who wrote &k3d; ?

Original author Tim Shead began work on what became &k3d; in early 1994, on an Amiga computer. At that time, the program was called Equus-3D, and work was subsequently moved to Win32. The application evolved and was to be a commercial product. During this period the name was changed to &k3d;. Finally, in 1999 Tim opted to release K-3D under the free-as-in-freedom GNU General Public Licence, which led to the K-3D motto: "Seven Degrees of Freedom." The CVS server and web site were hosted on a home machine, until they moved to the SourceForge platform in 2002.

### The name begins with K but it's not a KDE app ?!?

There's been a lot of fuss with this topic. The application's original name was Equus-3D, later changed by Tim to &k3d; because the meaning of Equus was lost on too many people, and he was feeling particulary un-creative that day. At that time, Tim was unaware of the existence of the KDE project. As it happens the K in KDE may either stand for 'Kool' or nothing, as you wish! Manuel Bastioni has proposed Kinka, which stands for 'K-3D Is Not a KDE Application'.

### What is the status of &k3d; ?

Please have a look at the SourceForge page for the latest updates of &k3d;. &k3d; is a work in progress, actively maintained, and after many early missteps, rapidly maturing.

Version 0.2.5.0 was the K-3D project's first-ever stable release branch, a major milestone in the history of the project, and reflects well on the efforts of its many contributors.

### Which are the main features of &k3d; ?

- Licensed under the GNU General Public License (GPL).

- Record interactive tutorials and macros.

- Unlimited undos / redos.

- Robust clipboard support including Cut, Copy, Paste, and Duplicate.

- Create and edit documents in multiple realtime OpenGL solid, shaded, texture-mapped views.

- Scripting interface supports JavaScript, Python and Ruby, with an open API for other scripting languages.

- Model, animate, and interact with animations while they play back for maximum productivity.

- Highly-evolved architecture allows complete extensibility at runtime through third-party plugins.

- Animated geometric procedural effects.

- Powerful control-spline based animation in a uniform interface.

- Uses the Pixar Renderman Interface to render motion-picture-quality images with a wide variety of rendering engines.

- Supports Renderman Subdivision Mesh output.

- Background rendering and batch rendering.

- Written in ANSI C++, and GTK+.

### Which rendering engines does &k3d; support ?

For rendering, &k3d; currently supports output through the Pixar Renderman Interface, a professional industry standard interface between modelers and renderers. The output would typically be sent to one of the several render engines that &k3d; supports, including Aqsis and BMRT (note that the latter is no longer available). &k3d; could also be used with Pixar's Photorealistic Renderman, or any other Renderman Interface compliant engine. &k3d;'s modular, flexible architecture should encourage authors to develop links to other rendering engines - POVRay would be a natural first candidate.

Since the afore-mentioned render engines are standalone executables, &k3d; invokes them by creating Pixar Renderman Interface Bytestream (RIB) files, before handing them off to the renderjob and renderframe processes. This has many benefits, including the ability to continue working with the program while rendering, or to queue multiple rendering jobs, and (future) network rendering.

### How does K-3D store documents ?

&k3d; documents are stored using a simple, flexible, easy-to-understand XML markup. This makes the files robust, easily compressed, and easily interchangeable in a variety of interesting ways. &k3d; supports XML through SDPXML, a C++ XML parser. For document loading, an instance of the sdpXmlDocument class is used to load the XML tree into memory, where XML elements and attributes are extracted on an as-needed basis. Trees can be created / modified, and written to any stream.

## Technical Details

### What is the primary development platform for &k3d;?

&k3d; is primarily developed under Linux, but &k3d; is portable to several other platforms.

### What platforms are supported by &k3d; ?

&k3d; is designed to be portable, and therefore all platforms are supported. However, at this time, &k3d; is built and tested on GNU/Linux and Microsoft Windows. If you would like &k3d; ported to your platform please contribute patches to the maintainers or author.

### What are the hardware requirements for running &k3d; ?

&k3d; will run on any computer, but a hardware accelerated OpenGL graphic board is highly recommanded.

### What language is &k3d; written in ?

&k3d; is written in ANSI C++, with a pseudo- client/server architecture. All of the major functionality is broken down into libraries of objects that are loaded into the application at run-time. For example, a light in a 3D scene is an object that is implemented in the corelib library. As of this writing, there are six libraries: bitmaplib, corelib, geometrylib, sfxlib, toollib, and videolib. Careful consideration has gone into the design of a system that supports run-time integration of libraries from third-parties. This is important as it gives non-technical users the ability to install new or updated features without recompiling. The interfaces between objects are designed so that objects can be written using programming languages other than C++.

K-3D objects are written using a (very small) subset of the Component Object Model, defined in the SDPTYPES library.

### Which X widget set do you use for the user interface ?

The &k3d; user interface is built on top of GTK+, the popular X widget set used by the GIMP and GNOME projects, among many others. By building on top of GTK+, &k3d; can be compiled without source changes for both GNU/Linux and Win32.

&k3d; makes heavy use of the SDPGTK library, which wraps GTK+ using C++ classes. In addition to making the code more object-oriented and readable, SDPGTK has the ability to load XML documents in GTKML format to create user interfaces. The GTKML files act as user interface templates, and are easily edited, allowing fast UI creation, along with end-user customization and internationalization.

### What API does &k3d; use for displaying 3D graphics ?

&k3d; makes extensive use of OpenGL/Mesa in the user interface. This allows the program to easily benefit from hardware acceleration on the end-user's platform. &k3d; connects to the OpenGL API through the SDPGL library, which wraps the OpenGL functions so that they can be traced. When SDPGL_TRACE is defined at build time, all OpenGL calls will be logged to stdout for analysis.

### Where can I find more information about &k3d; system architecture?

Please consult the &k3d; Developer Guide for more information on system architecture, writing plugins and how to contribute to the project.

## Licensing

### Is &k3d; Free Software ?

&k3d; is released under the GNU General Public License. This license is available from the Free Software Foundation, http://www.fsf.org, and you should always receive a copy of this license with your &k3d; distribution. If you did not receive a copy of this license please contact the current maintainer of &k3d;.

## Additional Resources

### Is there a &k3d; mailing list ?

Yes, the &k3d; developer mailing list is located on SourceForge at http://sourceforge.net/mail/?group_id=11113 and welcomes both contributing developers and users.