A Short Preview On Modeling With K-3D
In this article, Claus Schwarm takes a look at the history and the current development version of K-3D, a tool for 3D modeling, rendering, and animation.
When talking about 3D artwork on GNU/Linux most people think of Blender. And a lot of them think of its unusual interface nearly at the same time. However there’s not just Blender; there are many alternatives. Among them, K-3D is a refreshing effort that you should know about if 3D artwork is your thing.
K-3D is not a KDE application although many think so due to the K in its name. In fact, the project was called ‘Equus-3D’ when it was started early 1994 by Timothy M. Shead on an Amiga computer. When it became clear that the meaning of the original name wasn’t obvious to users anymore, Shead changed it to K-3D on a “particularly un-creative” day according to the FAQ. At this time, he was not aware of KDE, and its naming schemes.
Since its beginning, the project has undergone major changes: It moved from Amiga to Windows, became GPL in 1999 and started a project page on SourceForge in 2002. Written in C++, K-3D at first invented its own bindings to GNOME’s GTK+ toolkit. In its latest stable version, 0.4.*, this is still used. For its development version that aims to implement a new user interface, those bindings were dropped in favour of GTKmm, the official C++ binding to GTK+.
The old interface of K-3D’s stable version is similar to the one used in ‘The GIMP’. It was the “first try before we really sat down and thought about the user interface”, according to Romain Behar, who is now K-3D’s lead developer and maintainer.
Since K-3D’s next stable release with the new interface is planned to be published within the next few months, let’s have a short preview on what users can expect.
You can download a snapshot of the development version from the project’s SourceForge page. You may find additional binary packages in the ‘Getting Started’ section of the K-3D homepage for your distribution.
If you can’t find a binary for your distribution, you will need to compile the source package. Be aware that compilation takes a long time and needs roughly 1.2 gigabytes on free disk space for compilation. By default, the installed size is 370 megabytes. It includes all information for proper debugging.
At the time of writing, version 0.5.0.25 is the latest source package release. After downloading, right-click on the package and choose ‘Extract here’ to extract the archive. Then, open a terminal window in the newly created directory, called k3d-0.5.0.25.
The usual way of proceeding is to check the README file provided with the package. However, K-3D’s homepage provides several platform specific build instructions and generic build instructions as well. They are easier to read and more clear.
Before you start compiling, make sure all build dependencies are available from your distribution’s package repository and installed. Apart from having the build infrastructure installed (on Debian, you can do this by running “apt-get install build-essential”), you’ll need 5 required development packages, 11 optional development packages, and their respective dependencies. These are listed on K-3D’s homepage as “External Dependencies”.
Another package you may also need is librsvg – a SAX-based renderer library for SVG vector graphics. One of its commands is needed for running ‘make install’ but this isn’t checked by the configure script.
Then, you can follow the build instructions. If you are running into problems although all dependencies are installed, do as if you would use a copy from the CVS revision control system – that is: First, run
This is basically a script that starts other scripts to prepare the build scripts. Then, proceed as described on K-3D’s homepage.
By default, the package is installed in /usr/local/k3d. Thus, the binary may not be found by your shell when you just enter “k3d”. You either add /usr/local/k3d/bin to your PATH variable, or you just take the testing route by entering:
at the command prompt. In general, the installation procedure works fine.
K-3D’s interface consists of several segments, partially similar to those a standard application uses, but there are also some important differences.
At the top, there’s the usual menu. However, the common toolbox uses just a small part on the left. The right part is used by the so called ‘shelf’ which provides a shorter way to the various tools listed in the ‘create’ menu.
The middle is split into several panels: After the start, you’ll see three on the left, and a large one on the right. Initially, the left panels are used to display and change information about the objects shown in the larger panel on the right.
The bottom is used for a timeline dialog – useful for doing animations – and the usual status bar.
Just in case, you don’t like the layout: It can be changed completely by using the drop down menus in each panel, and the entries of the ‘view’ menu. The next screenshot shows a layout more similar to other modeling applications. Unfortunately, changes are not saved after closing the application but that’s probably on the todo list of the developers.
In general, the interface looks a little bit rough around the edges. For a development application implementing a completely redesigned interface, this is to be expected.
K-3D also doesn’t look very GNOME integrated. For example, the close dialog ignores button order, proper icons, and the like. The interface icons are also not stock icons. This is probably due to an attempt at better usage of screen real estate, as the icons used are also smaller in size.
The viewport is the most important part of K-3D’s interface. If you’re unfamiliar with 3D modelers in general, think of the viewport as a movie set, represented by the axis in the viewport. You’re watching the set basically through a camera: the viewport display on your monitor. To zoom into the set with your camera, you can simply use your mouse wheel.
To move the position of the camera, keep your right mouse button clicked, and move the mouse. In the movie analogy, this is similar to the famous slow motion scenes of ‘The Matrix’. To move the position of the set, keep you middle mouse bottom clicked, and move the mouse.
By holding [Shift] and your right mouse bottom down, you can now roll your camera around its optical axis. Holding [Shift] and your middle mouse button clicked will ‘aim’ – according to K-3D’s manual, a “tripod like motion, pan and tilt from a fixed point”.
Finally, you can also zoom by holding [Ctrl] and your right button mouse clicked. Then, move your mouse up and down. Something similar happens, when you hold [Ctrl] and your middle mouse button clicked, and you move your mouse up and down: Then, your camera will move into the set. However, it’s hard to see any differences between both methods.
Until you got used to all the possibilities, you will certainly loose your orientation several times. Then, a simple click with your middle mouse button will bring you back on track. It moves the center of the set to the middle of your camera.
You can now create geometric objects in the viewport; either by selecting, for example, ‘Create -> Polygons -> PolyCube’ from the top menu, or by using the upper shelf. To select the newly created object, a single left button mouse click on the object is sufficient – selection is indicated by the objects’ points and edges getting white. In the ‘Objects Properties’ panel you can now edit its attributes such as ‘Name’, ‘Position’ ‘Orientation’, ‘Scale’, and others.
To turn the single cube into a very simple house model, activate the ‘Select faces’ tool, and select the upper face of the cube so that its color changes to red just like in the next screenshot.
Now right-click for the context menu, and select ‘MeshFilter -> ExtrudeFaces’. The number of options in the submenu is incredible, so take your time to look around. After selecting ‘ExtrudeFaces’, you should now see a second cube on the top of the first. This will become the roof of a house.
You may like to make the upper cube a little bit higher. This can be done in the ‘Object Properties’ panel: Just increase the value of the ‘distance’ property. The button to change the value works as usual but users familiar with other 3D modelers will enjoy the option to change the value by mouse movement: Holding the Up/Down button pressed and moving your mouse up or down will change the value.
To make the upper cube a roof, deselect the object first. Then, enable the ‘Select Edges’ tool, and select two upper edges opposite to each other, so that it looks like the next screenshot.
Now right click for the context menu, and select ‘MeshFilters -> CollapseEdges’. This will turn the remaining selected edges into points. Voila, your first (very basic) model of a house.
K-3D is a powerful tool, even if only a small part of it could be shown here. The number of entries in the top and right-click menus indicate that you can do a lot more. Before our simple house can be part of a nice picture, for example, we’d need to apply textures, and install a renderer for rendering the image. This may be part of another look at K-3D in the future.
Version 0.5 is a development version, and thus not ready for productive work. Clicking the wrong menu entry may lead to a crash that may take the whole X-Server down! However, this is what publishing a development version is all about. To make bug reporting easy, a bug report dialog appears when you restart K-3D after a crash.
K-3D is a very promising application: Its new interface is fine even for smaller resolutions; it stopped trying to reinvent the widget wheel by using GTKmm; it tried to very pro-user by doing things like surveys about useful user interfaces, and it tries to be GUI-agnostic and splits basic functionality and interface.
However, for people just interested in getting things done, K-3D’s usefulness is rather low at the moment. Without a stable GUI, making tutorials doesn’t make much sense. And good tutorials are one of the most important assets of a project about complicated issues such as 3D modeling and rendering.
This affects also surrounding issues such as an active user community. Although the K-3D team seems motivated to keep it alive—there’s a forum available, for example—, the lack of a new stable version shows.
Right now, the best place to contact the developers is the project’s mailing list. There’s always work to do, so potential developers and additional testers can expect a happy welcome.