kludge3d Sourceforge page


Hah! I bet you thought I forgot about this project, didn't you?
  • added cylindrical texture mapping to the texture-application dialog; this allows you to wrap your textures around round objects
  • made a small change to the build files to get kludge3d working with python 2.3

Here's something to stuff in your stocking! And don't even think of asking for the receipt, you ungrateful punk!
  • added a convenient way to run Python scripts without having to use the text entry box (saves on typing)
  • added tool "roll-ups"
  • added a l-systems python script
  • changed the way in which texture names are stored; texture names are now relative to the model's path, not absolute
  • fixed many bugs (some show-stoppers)
  • rewrote some of the dialogs
  • added texture loading for wavefront files
  • began work on loading/editing/saving "materials" (emission, specular, etc)
  • added drag-and-drop loading of models
I also wrote some new documentation for the scripting stuff.

There have been lots of changes since the last release:
  • Added a system for loading/storing/setting user preferences. It's actually quite flexible and clever, if you ask me. None of the preferences are hard coded, and the preference dialog's interface is generated according to the preferences registered with the system, making it very easy to maintain. Several aspects of the program can now be set by the user. This includes the colors used for the GL views, the ability to limit the number of actions that kludge3d will let you undo, the ability to set the number used for that limit, and a couple other minor settings.
  • Added new tools: 4 polygon subdivision tools, polygon "turn edge", and polygon smoothing.
  • Improved rendering speed substantially. Quads are now used instead of cubes when drawing vertices. You can tell kludge3d to revert to the old behavior if you would like; it's a preference.
  • A single opengl context is now shared by all views. This will allow the views to share texture objects and display lists.
  • Fixed some bugs related to the Python scripting entry.
  • Added a "log window" and code to redirect all of the program's output, especially the Python output, to the log window. The mechanism for redirecting the output is a bit of a hack. Let me know if it causes problems for you.
  • Added lots of new functions for the Python interface; the Python interface is much more useful now.
  • Added a new set of Python scripts, "prefabs.py", which can be used to insert the standard geometric primitives (cones, spheres, etc) into a model.

There have been lots of changes since the last release:
  • multiple models can now be edited at the same time
  • lots of bugfixes, including fixes for some show-stoppers
  • reworked parts of the texture coordinate editor, including tooltips and a help dialog
  • added tooltips and labels for several parts of the interface; kludge3d should be a bit more user-friendly now
  • added texture preview icons to the texture list
  • many new tools, including: remove unused verts; thin & fatten selected objects; scale objects; weld vertices together
Check the screenshots page for some pics of the new features.

There have been many changes since the last release. A lot of it is behind-the-scenes and uninteresting to an end user, but here's some of the most important changes:
  • The GTK2 port is now complete. The few remaining parts of the code that made use of deprecated GTK features have been rewritten. The code now compiles cleanly with the GTK_DISABLE_DEPRECATED flag.
  • Added a new model format loader: Quake 2's MD2 format can now be loaded. The user must select a single specific frame to import, though, as kludge3d does not have any animation support. Also added a new texture loader: PCX files can now be loaded. In conjuction with the existing SGI and gdkpixbuf-based texture loaders, this means that nearly every major texture format can now be loaded.
  • I made some user interface improvements which make it easier to work with smaller models. The smallest vertex size was reduced from 0.01 units to 0.001 units. This makes it easier to distinguish individual verts when working on a small or crowded model.
  • I made some user interface improvements which make it easier to work on complex models. The "group" list now displays a checkbox next to every group. If you would like to hide a group, in order to make it easier to work on other parts of your model, just click on the checkbox and the group will be hidden (verts, polys, everything). Click on the box again to make the group visible. Note that this "hide" feature is independent of the "hide selected" feature, accessible through the "View" menu.
  • Polygons with two vertices (aka "line segments") are now allowed.
  • The 3d view's camera height (+/- Z axis) may now be adjusted. There's a slider for adjusting it in the "Options" notebook tab.
  • Lots of fixes were made to the undo system. Additionally, the system's primitives (verts and polys) are now reference counted. This made it possible to implement "undo" for the add-vertex, add-polygon, delete-vertex and delete-polygon actions. As such, almost all of the most common user actions can now be undone. Additionally, this allows the implementation of a mechanism for limiting the length of the undo-action-stack; an upper limit of, say, 20-30 actions would help keep the memory usage down.
  • Several important steps were made toward implementing MDI (multiple document interface) in kludge3d. For those of you who don't know, having an MDI means that several "documents" (models, for kludge3d) can be open at the same time, in the same program. Expect kludge3d to have MDI in the near future.
  • Some silly mistakes regarding Python were fixed. Non-Python builds should now compile cleanly. Also, systems that have an incomplete Python installation should now be able to compile kludge3d, albeit without Python support. If you find yourself in a situation where the configure script is complaining about missing Python stuff, try running the script again with the '--disable-python' flag; that should do it.
  • Lots of bug fixes.
  • The user will now get actual, useful feedback when something goes wrong, or when specific actions need to be performed! The bottom bar of a kludge3d window will now display error messages and various instructions. Please be aware that sometimes the messages will appear out-of-order, or will be delayed; this is due to the fact that it is GTK that controls the order and timing of the messages, not kludge3d. It would be nice to have finer control over the bottom bar than GTK provides, but I'm not about to start rewriting parts of GTK.
In unrelated news, SIGGRAPH 2003 went off without any major problems. The RIT booth was right next to Pixar's, so we got a decent amount of foot traffic. I'm still looking for a job, but now that SIGGRAPH is out of the way, I'll be able to spend more time on the job hunt.

Kludge3d has been ported to GTK2. Kludge3d now needs GTK2 (I'm using 2.2.1) in order to work. Also, because development on gtkglarea has stopped (and because gtkglarea sucks), kludge3d now uses gtkglext instead. Gtkglext is actually a little faster than gtkglarea, so there's no reason not to use it.

This release includes some major changes:
  • Ported to gtkglext and GTK2. Much of the GTK2 stuff was provided by D. Pinson. If it weren't for him, I probably wouldn't have bothered with the port.
  • Completely re-wrote the group browser. Drag-and-drop works again.
  • Fixed lots of compiler warnings, memory leaks, other bugs
  • Switched to using glib's signal system for many of the system events
  • Added some new functions that can be accessed via the Python interface
  • Re-wrote the "terrain generator" Python example script (the output looks really good now)
  • Added "tool palettes" and "tool palette switching". This makes kludge3d much easier to use. See the tutorial for more info.
  • Added a new screen shot. What could be more important than screen shots? :)
The GTK2 port is incomplete. There are some parts of kludge3d (the texture list, the group-list-buttons, and the toolbox buttons) that use deprecated features of GTK. These parts will be fixed in the next release.

I just uploaded a new version. New stuff includes:
  • Python scripting! Patch by D. Pinson! Thank you! This is awesome. You can now enter python scripts into that little text entry field at the bottom of the "Groups" tab. Only a small subset of kludge3d's features/tools is made available through the scripting interface, but it's enough to do things like insert, move, and rotate vertices. This means that you can now do things like insert pre-fabricated shapes into your models, etc. I've included a sample script with the source; to run it, type:
    import terrain
    terrain.generateTerrain( 0., 0., 50., 50., 5., 10, 10 )
    into the script box... and you'll get a really weird-looking, poorly-made heightmap. It's just an example script; it doesn't have to be pretty.
    BTW - Python is really easy to learn. You'll like it.
  • Some minor UI changes.
Oh, and I've recently been slaving away on my other project, getting it ready for, get this, SIGGRAPH 2003! Go check it out!

It's been a while, so this update will be a bit lengthy:
  • I am now a college graduate. I got my degree in May from RIT. Unfortunately, I'm unemployed.
  • There have been no updates in the past 6 months because I was busy with school work, and preparing for graduation.
  • One of the projects that have kept me busy for the past 6 months is CityBuilder. It's a system I've developed for creating large virtual urban environments (cities) with a minimum of effort. The input from the user is in the form of a street map. The output is a model file containing the street geometries and a scene graph file containing references to all the building and street models. Potential applications include games, flight sims, visualization apps, etc. If this sort of thing interests you, take a look at my project. There's a link to it in the sidebar (to the left) as well.
  • Old kludge3d news has been moved to a separate page. The main kludge3d page had grown to over 100kB!
  • Changes to kludge3d in the new release:
    • code re-organization - The lower-level code is now able to keep multiple models loaded at the same time. The GUI and undo code still assumes that only one model can be loaded at a time, so the end-user won't be able to take advantage of this. However, it cleans up the code in many places, and makes it possible for some sort of MD interface in the future.
    • changed build scripts - I recently upgraded my linux box from Slackware 8 to Slackware 9. Unfortunately, slack seems to have updated all of the automake/autoconf stuff, and the new versions are incompatible with the old ones. I had to muck around with the build scripts/templates to get them to work. I can't test the build scripts on any machines other than my own, so I don't know if they work everywhere. Let me know if they're not working on a particular platform and I'll see what I can do.
    • bug fixes:
      • polys of mixed degree in same mesh - polygons should no longer disappear mysteriously
      • expose events - those of you using non-mesa opengl implementations were probably experiencing garbled gl views when starting kludge3d, resizing the views, etc. This was due to an optimization I was using to speed up expose events. Let me know if the problem still exists.

Hey! I'm back from Oregon. Just a few more months and I'm out of school for good.

I've uploaded two releases since the last time I updated the site. The first release included some patches from Mr. Pinson, as well as some bug fixes and the beginnings of an interactive tool for vertex rotation. The user-submitted patches included a dialog for manually creating vertices at precise locations, a neat little text label at the bottom of the window that shows the cursor position, and a tool for rotating verts by an arbitrary value.

The second release, uploaded today, has some new tools (vertex/poly rotate, interactive polygon extrude) as well as, get this, UNDO! Yup, you can now undo your mistakes. Not all of the user actions are currently undo-able; the add/delete operations, the mesh merge/reparent/etc operations, the texture operations, and some of the toolbox operations are not undo-able. However, all of the basic move and rotate operations can now be undone. Don't worry; if you do something that can't be undone, the undo stack gets cleared. This way, the undo stack won't become out-of-sync with the model, and your model won't get trashed if you try to undo.

Note that the undo stuff is "experimental" and incomplete, so use it at your own risk. As always, save often.

BTW - This is probably the last release of kludge3d that will support gtk-1.2. The next release will use gtk2. No guarantees, though.

  Old News
Older news has been moved to a separate page. Go here to read all the kludge3d news, dating back to the original release.

SourceForge Logo