Developer Documentation

From K-3D

Jump to: navigation, search


  • Getting Started - Platform-specific instructions on how to build or install K-3D.
  • Code - Use the source, Luke!
  • Bugs - Look for bugs to squash in the issue tracker!
  • Source Documentation - Documentation automatically generated from the K-3D sources.
  • K-3D Dashboard - K-3D includes automated regression testing, see the latest results in the Dashboard.
  • SourceForge Project Page - K-3D's source repositories, bug and patch trackers, and downloadable files are graciously hosted by the SourceForge project.
  • Professional Development - Reserved for professional publications by K-3D contributors.
  • Developer Bibliography - Further reading for developers.
  • Logos - Logos and other project graphics.
  • Developer Nicknames - Official, and incredibly scalar-important!
  • Future Work - A central location for forward-looking ideas, design documents, and general speculation.
  • Developer Meetings - Our attempt at holding regular organizational and technical meetings.


  • Debugging - Brief overview on how to debug crashes



  • Visibility - Experiments with the GCC symbol visibility mechanisms.


  • New in K-3D 0.7! Binary Resources - Details on how you can embed files in K-3D binaries for use at runtime.
  • Bitmap Storage - Explains how bitmap data is handled internally in K-3D.
  • Data Containers - Describes K-3D's policy-based design for storing plugin data.
  • File IO - For all your input and output needs.
  • New in K-3D 0.7! Filetype Detection - Covers the mechanisms K-3D uses to identify filetypes and match them to plugins (for import/export, scripting, etc).
  • New in K-3D 0.7! Fundamental Types - K-3D defines a set of fundamental (integer, float, string) types that should be used for all new code.
  • New in K-3D 0.7! Named Array Collections - We provide special support for collections of named arrays, which are used in many other data structures.
  • New in K-3D 0.7! Pipeline Data - K-3D uses a special smart/shared-point class - "k3d::pipeline_data" to provide efficient data processing.
  • Rotation Data - Describes objects for storing 3D orientation data.
  • XML Parsing - Describes the toolkit used for working with XML data.


  • Recording Tutorials - Guidelines and documentation on how to record new interactive tutorials.


  • New in K-3D 0.7! Geometric Primitive Design - Covers how K-3D stores and manipulates geometric primitives.
  • New in K-3D 0.7! Generic Geometry Selection - Describes how generic geometric primitives are selected.
  • New in K-3D 0.7! Mesh Painters - Discusses the new framework for rendering mesh data in OpenGL.
  • New in K-3D 0.7! Painter Types - An overview of how painters can handle face normals, edges, per-vertex colors, and other specialized drawing styles.
  • New in K-3D 0.7! Mesh Painter Gallery - A gallery of mesh painter styles, many written in Python!
  • New in K-3D 0.7! GTS Plugins Removed - In case you were wondering ...
  • New in K-3D 0.7! CGAL Boolean Operations - Work-in-progress page on the new boolean implementation using CGAL
  • Implicit Surfaces - K-3D includes support for implicit surfaces (RenderMan blobbies).
  • New in K-3D 0.7! Polyhedra Data Structure - Shows Polyhedra memory's representation and traversal techniques.


  • Plugin Design - An overview of how K-3D plugins work.
  • Plugin Classes - Covers the important distinction between application and document plugins.
  • Plugin Licensing - Important information regarding plugin licensing.
  • New in K-3D 0.7! Plugin Metadata - Describes how plugin authors can provide arbitrary metadata to describe their plugins.
  • New in K-3D 0.7! Node Metadata - Information on how arbitrary metadata can be associated with individual document nodes.
  • New in K-3D 0.7! Building Plugins - Covers different options for building K-3D plugins.
  • New in K-3D 0.7! Plugin Tutorial - A "hands-on" guide to creating your own plugins.
  • On Demand Modules - Discusses how K-3D delays loading plugin modules until they're needed.
  • New in K-3D 0.7! Virtual Plugins - A new mechanism allows concrete plugin instances to be created by "virtual" factories.


  • New in K-3D 0.7! Property Metadata - Describes how arbitrary metadata can be associated with properties to provide a better user interface.


  • Cameras And Render Engines - Discusses how cameras, render engines, and other objects interact in K-3D.
  • Layered Shaders - Highly experimental Aqsis specific feature.
  • Material Design - Details how materials are assigned to geometric primitives.
  • Negative Scale - Information on how to handle OpenGL normals properly when a transformation matrix has negative scale factors.
  • RedrawAll - A few words on how the display gets updated.
  • Render Models - Discusses how render engines, lights, and materials interact in K-3D.
  • RenderMan API - Describes K-3D API that handles RenderMan output.
  • Shader Paths - Discusses the rationale for referencing shaders by filesystem path instead of name.


  • Script Engines - Details on creating plugins to support new scripting languages.
  • Scripting - Provides an introduction to K-3D scripting.
  • Python - Documentation for the Python script engine used for most general-purpose scripting tasks.
  • RenderManScript - Injects arbitrary RenderMan API calls into the rendered scene.


Subdivision Surfaces

  • SDS Preview - Ongoing work on adding realtime SDS preview to the K-3D UI.
  • SDS Corners - Info about variable sharpness corners on SDS models.
  • SDS design doc - Short explanation on the design of the SDS preview



  • Time - Provides an overview of how "time" works within a K-3D document.

User Interface

  • Internationalization - Covers technical details of how to write code that can be localized (translated into other languages).
  • Localization - Discusses how to create and maintain locales (language translations).
  • Next Generation User Interface - The central location for discussion on the 0.6 UI.
  • Shutdown Warnings - Discussion on how to prevent accidental loss of data during normal shutdown.
  • Snap Design - Covers the new framework for interactive "snap" behavior.
  • Tool Design - Discusses the relationships among nodes, tools, and the user interface.
  • Widget Toolkit - Describes the toolkit used for the standard user interface.

Visualization Pipeline

  • Visualization Pipeline - K-3D uses a sophisticated graph-based visualization pipeline to implement procedural modeling and animation.
  • Visualization Pipeline Display - Some initial thoughts on a pipeline visualization component.
  • Pipeline Hints - Describes how upstream nodes in the pipeline can send "hints" to downstream nodes when changes occur.
  • Hint Mapping - A more in-depth discussion of how nodes alter hints as they travel down the pipeline.


Personal tools