Developer Documentation
From K-3D
General
- 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
- Debugging - Brief overview on how to debug crashes
Design
Build
- Visibility - Experiments with the GCC symbol visibility mechanisms.
Data
- 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.
Documentation
Geometry
- 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.
Plugins
- 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.
Properties
- New in K-3D 0.7! Property Metadata - Describes how arbitrary metadata can be associated with properties to provide a better user interface.
Rendering
- 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.
Scripting
- 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.
Selection
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
Testing
Time
- 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.
Administrivia