Specifications

Below is a copy of the Plans.rtf file in the repository, which details the future plans for this project. This may be out of date.

ABOUT THIS DOCUMENT

This document is designed to lay out the future plans for this modeler.

VERSION 1.0

Version 1.0 of this program is going to be pretty simple. I will consider it to be version 1.0 when it is fully functional and bug free as an extremely simple modeler.

The things that I expect to see in version 1.0 are these:

  • Several simple primitives
    • Cube
    • Cylinder
    • Sphere
  • Ability to control the camera
  • Ability to select different modes
  • Ability to select various components:
    • vertices
    • edges
    • faces
    • objects
  • Ability to perform basic editing of components
    • Ability to perform basic operations on vertices
      • Move X
      • Move Y
      • Move Z
      • Rotate around x-axis of centerpoint of selected vertices
      • Rotate around y-axis of centerpoint of selected vertices
      • Rotate around z-axis of centerpoint of selected vertices
      • Scale uniformly around centerpoint of selected vertices
      • Scale across x-axis of centerpoint of selected vertices
      • Scale across y-axis of centerpoint of selected vertices
      • Scale across z-axis of centerpoint of selected vertices
      • Connect two vertices in a single face
    • Ability to perform basic operations on edges
      • Move X
      • Move Y
      • Move Z
      • Rotate around x-axis of centerpoint of selected edges
      • Rotate around y-axis of centerpoint of selected edges
      • Rotate around z-axis of centerpoint of selected edges
      • Scale uniformly around centerpoint of selected edges
      • Scale across x-axis of centerpoint of selected edges
      • Scale across y-axis of centerpoint of selected edges
      • Scale across z-axis of centerpoint of selected edges
      • Cut into multiple segments with vertices
    • Ability to perform basic operations on faces
      • Move X
      • Move Y
      • Move Z
      • Rotate around x-axis of centerpoint of selected faces
      • Rotate around y-axis of centerpoint of selected faces
      • Rotate around z-axis of centerpoint of selected faces
      • Scale uniformly around centerpoint of selected faces
      • Scale across x-axis of centerpoint of selected faces
      • Scale across y-axis of centerpoint of selected faces
      • Scale across z-axis of centerpoint of selected faces
      • Extrude a face
    • Ability to perform basic operations of objects
      • Move X
      • Move Y
      • Move Z
      • Rotate around the x-axis of centerpoint of a selected object
      • Rotate around the y-axis of the centerpoint of a selected object
      • Rotate around the z-axis of the centerpoint of a selected object
      • Scale across the x-axis of a selected object
      • Scale across the y-axis of a selected object
      • Scale across the z-axis of a selected object
  • Ability to delete parts of the model
    • Ability to delete vertices
    • Ability to delete edges
    • Ability to delete faces
    • Ability to delete objects
  • A menu that allows the user to:
    • Start a new file (File > New)
    • Open a file (File > Open)
    • Save a file (File > Save)
    • Save As… a file (File > Save As…)
    • Import a model from an .OBJ (File > Import > OBJ)
    • Export a model as .OBJ (File > Export > OBJ)
    • Exit the program (File > Exit)
    • Open the outliner window (View > Outliner)
    • Open a new geometry window (View > Geometry Window)
    • See the about window (Help > About)
    • Get help (Help > Help)
  • Materials
    • Color materials that have ambient, diffuse, specular, and emissive values
  • Vertex Normals
    • Normals exist in model
    • Normals calculated based on adjacent triangle normals
  • Exporting
    • Write to OBJ files
  • Importing
    • Read from OBJ files

Version 1.1

Version 1.1 will be a small upgrade on version 1.0 to make it more powerful. The details are still in the formative stage, so be prepared to see them change. Also, if you have suggestions, feel free to let me know.

  • More primitives
    • Cone
    • Torus
  • More importers and exporters
    • Using the FBX SDK, build importers and exporters for:
      • 3DS
      • FBX
      • COLLADA
  • More modifiers
    • Move along normals
    • Extrude regions
    • Inset
    • Bridge?
    • Smooth?
  • Image Planes
  • Smooth/Flat shading
  • Orthogonal/Parallel Perspective, in addition to the build in perspective
  • select Edge rings
  • Select edge loops
  • Basic language translation system
  • Properties window for configuring The Forge

Version 1.2

A planned version 1.2 will more fully implement the plugin system as its central change, along with a few other smaller things. It is in this version that we expect/hope for development to really start expanding, because people will be able to create individual, unrelated components.

Version 1.3

Version 1.3 will handle the basics of image based texturing, along with a few other smaller things.

FUTURE VERSIONS

Version 1.0 will still be extremely simple, and version 1.1 will only have minimal improvements over that. There are some other big improvements that I will want to do. I've listed some here. Note that some of these features may be included in version 1.1 as well.

  • A plugin system for modifiers, importers, exporters, primitives, languages, and possibly flexible enough to allow for general changes as well.
  • An auto-save feature
  • Object groups
  • Language translations
  • Hard and soft edges
  • Many more primitive types - the ones below I expect to see eventually, though others will likely be created as well
    • Tetrahedron
    • Octahedron
    • Dodecahedron
    • Icosahedron
    • Gear
    • Tube
    • Various Knots
    • Cantellated Cube (Octotoad)
    • Text
    • Geodome
    • Hemisphere
    • N-Gon
    • N-Prism
    • Spiral
    • Spring
  • Many more modifiers
    • Inset, Bridge, Smooth, if not done in version 1.0
    • Object Modifiers
      • Flip
      • Clean Up
      • Auto-smooth
      • (Smoothing, but that has been mentioned elsewhere)
      • Duplicate
    • Face Modifiers
      • Flatten
      • Extract
      • Inset
      • Intrude
      • Bevel
      • Bridge
      • Triangulate
      • Reverse cut of two adjacent triangles
    • Edge Modifiers
      • More advanced cut to specify amount of segments
      • Connect edges
      • Flatten
      • Loop cut
      • Slide
  • Convert object with material colors to texture image
  • Material textures
  • Multiple methods of creating textures
    • A procedural texture generator
    • An image editor
    • Open with another editor
  • Object painting
  • Microsculpting
  • A simple scripting language
  • A development menu that has things in it like a mesh analyzer that lets you dig in and see how your mesh is interconnected, so that you can determine what's wrong with it, as well as a debug/logging system and window
  • Bones and animation
  • Select edge loop
  • Being able to do selection by accumulation, in addition to band boxes.
  • Add in an information line
  • Add in a status line
  • Add in a properties window that lets you customize all aspects of the program
  • Add/remove materials from the outliner and apply to selection
  • Show filename in title bar
  • List of recent files
  • Rendering components, including plugins to link to external renderers, as well as our own renderer.

WAYS PEOPLE CAN CONTRIBUTE

I'm not yet to a point where I'm ready for contributions, but eventually, there will be a variety of ways that a person could contribute:

  • Downloading a copy, finding and submitting bugs, and giving constructive feedback
  • Creating translations for other languages
  • Creating additional primitives
  • Creating additional operations for any mode
  • Creating additional importers and exporters
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License