The LionSnake Modeler

Here is the most recent version (1.7.14) of the LionSnake Modeler, fabled in story and song. This modeler is designed for creating posable subdivision surface models for use with the Persistence of Vision Ray Tracer, but you can also use it for editing Alias/Wavefront mesh files.

System Requirements

  • The program has been successfully run on Win98, WinME, Win2K, WinXP, and the 64-bit version of Vista.
  • Don't plan on it running on Win98 or WinME for much longer; it may, but I no longer test it on Win9x before releasing it (and haven't even tried to since 2004).
  • The program has not been successfully run on Win95. This appears to be an OpenGL driver issue.
  • In fact, OpenGL drivers are a known issue with this program. If you notice that Windows suddenly stops painting your window title bars properly, you are probably suffering from a buggy OpenGL driver.
  • OpenGL 1.1 or better is required.
  • A 16-bit color screen is good enough. (Does anybody still have one of those?)

    Features

    Posable models The models can be built around a linked skeleton.
    UV-mapping You can create uv-mapped meshes.
    POV-Ray Export The models can be exported to an include file readable by the Persistence of Vision Ray Tracer. The files are designed to work with my Catmull-Clark Surface Subdivision Suite to produce smooth, organic shapes.
    OBJ file import and export You can import and export Alias/Wavefront OBJ files.
    OpenGL for rendering. I would have used DirectX, but Microsoft made DirectX more difficult to program than was necessary.

    Downloads

    lsm_1_7_14.zip (167495 bytes)

    Contains:

    lsm_1_7_14_source.zip (161350 bytes)

    Contains:

    If you make a custom compile, you will need to include your compiler's version of comctl.lib, glu32.lib, opengl32.lib, and shell32.lib when linking.

    Screen shot

    If you've been using LionSnake for a while, and feel you have reason to be proud of what you've accomplished, send me a link to a render and I'll try and see if I can whip up a gallery here. For now, here's a view of the sample model that now comes with the download:

    Release History


    Version 1.7.14, 11 July 2009
  • The subdivision preview now shows the limit surface, edges, and vertices, instead of the hull values of these objects.
  • In another of those "does anybody care" areas, I created another class for application-wide data that deals with the user interface (such as window handles, etc.), and have begun moving all of the user interface code, especially the OS-specific code, into this new class. My goal is to have exactly one source file that contains the dreaded line, #include <windows.h>
  • You can now drag a face (and any other marked vertices) along that face's normal vector.
  • Hiding a vertex made it impossible to mark any edge or face which contained that vertex. Fixed.
  • The gadget for scaling an inset face was not properly calculating the distance from the center of the gadget to the drag point. Fixed.
  • Textures were not being smoothed consistently. Fixed.
  • After changing the file from which a texture was loaded, the update would not show without performing undo and/or redo operations. Fixed.
  • When an edge and a face covered the same spot in the view, there was some unsightly artifacting. Fixed.
  • The zoom no longer changes when the application window is resized.

  • Version 1.7.13, 14 February 2009
  • The Bones were not being displayed for some reason. Fixed.
  • There was a bug in .obj file import which would cause a crash if the texture vertices were specified using the relative indexing option. Fixed.

  • Version 1.7.12, 14 February 2009
  • The subdivision preview now approximates (pretty much) the final subdivision level. The refinement of this preview can be set from a menu option.
  • A lot of the time, Bones were too being drawn too small to be of much use. Fixed.
  • When Bone display was on, and there were Bones in the model, many of the on-screen objects would not highlight when the mouse rolled over them. Fixed.
  • You can insert a cube from the main menu or the context menu. The cube runs from <-1,-1,-1> to <1,1,1> and its edges are parallel to the coordinate axes.
  • You can now extrude or inset a single face (from an item in its context menu). A gadget appears that allows you to adjust the amount of extrusion or the scaling of insetting.
  • The gadgets for Bone scaling and Bone translation now look and operate differently.
  • Lines are now drawn with anti-aliasing, to improve its overall appearance.
  • Some of the global variables have been moved to a class built for holding application-wide data. This currently has no effect on the user experience, and was instituted in order to support an upcoming feature.
  • The dotted lines that once showed Bone dependency have been returned to service.
  • Building the skeleton has changed quite a bit. While in this mode, the most recently-created Bone will turn as the mouse moves, and clicking on an existing Bone will cause that Bone to be made the parent of the next Bone created while in Bone adding mode. The mode for adding bones can now be entered from the context menu for the highlighted bone.
  • When the mouse is over the end knob of a Bone, the rotation gadget for that Bone will be displayed. If you make any use of this gadget, it will remain visible and usable until you right-click it away.

  • Version 1.7.11, 14 July 2008

    Version 1.7.10, 22 April 2008

    Version 1.7.9, 2 Apr 2008

    Version 1.7.8, 28 Mar 2008

    Version 1.7.7, 17 Mar 2008

    Version 1.7.6, 17 Mar 2008

    Version 1.7.5, 9 Mar 2008

    Version 1.7.4, 1 Mar 2008

    Version 1.7.3, 29 Feb 2008

    Version 1.7.2, 28 Feb 2008

    Version 1.7.1, 27 Feb 2008

    Version 1.7, 25 Feb 2008

    Version 1.6.9, 20 November 2007

    Version 1.6.8, 19 November 2007

    Version 1.6.7, 24 February 2007

    Version 1.6.6, 17 February 2007

    Version 1.6.5, 22 January 2007

    Version 1.6.4, 6 January 2007

    Version 1.6.3, 5 January 2007

    Version 1.6, 22 December 2006

    Version 1.6, 6 December 2006

    Version 1.6, 4 November 2006

    Version 1.5b, 29 March 2006

    Version 1.5b, 28 March 2006

    Version 1.5a, 6 December 2005

    Version 1.5a, 27 November 2005

    Version 1.5a, 3 November 2005

    Version 1.5a, 14 July 2005

    Version 1.5, 28 February 2005

    Version 1.5, 13 December 2004

    Version 1.4, 7 December 2004

    Version 1.4, 29 November 2004

    Version 1.3f, 16 November 2004

    Version 1.3f, 11 November 2004

    Version 1.3e, 4 October 2004

    Version 1.3e, 20 September 2004

    Version 1.3e, 6 September 2004

    Version 1.3d, 26 August 2004

    Version 1.3d, 14 August 2004

    Version 1.3c, 11 August 2004

    Version 1.3b, 6 July 2004

    Version 1.3b, 5 July 2004

    Version 1.3b, 9 June 2004

    Version 1.3a, 8 June 2004

    Version 1.3, 3 June 2004

    Version 1.2, 30 May 2004

    Version 1.2, 28 May 2004

    23 April 2004

    22 April 2004

    Known Issues

  • If you find a bug, try to narrow down the conditions under which the bug occurs, and let me know what they are.
  • Those who are masochistic enough to attempt porting this to MacOS or Linux have noticed that while I have encapsulated some of the OS-specific portions of the code, there remains much to do on that score. This was originally a vanilla-C program, and I hadn't given any thought to porting it when starting the project, and the parts that are most OS-specific are the parts that were written first. I'm getting better ideas on portability now that I am brainstorming another app that will have maximum portability from the get-go.

    My To-Do List:

    Less OS-dependent code My goal, as stated above, is to have only one code module that has any need to make Windows API calls, so that porting this will be easier. As part of this, I will have OpenGL do most, if not all, of the UI drawing.
    More editing features Simple things, like splitting a face by drawing a line across it, and, where exactly two edges meet at a vertex, to merge those edges.
    Gadgets that scale and rotate selected portions of the mesh Could be useful for some users
    Support more texture file types Right now only 24-bit .bmp files are supported, and I know that I should definitely support .jpg and .png.
    A customizable UI Allow different color schemes, different hot keys, and so on.
    Scripting capability Allows users to extend the features.
    Scene building, posing, and animation Will be part of version 2.0
    Morphs Helpful for animations

    Send all praise, adoration, job offers, bug reports, and tomorrow's winning lottery numbers to:

    evilsnack at hotmail dot com

    Back to John's Freeloading Home Page

    Hosted by www.Geocities.ws

    1