Skip to content

Tutorials, Examples and Documentation

patriciogonzalezvivo edited this page Feb 22, 2012 · 31 revisions

Tutorials are descriptions of how to accomplish a task. They are generally accompanied by an example.

An example is a demonstration of something with code. It could be demonstrating how to accomplish a task from a tutorial, or it could be demonstrating how a single function works.

Documentation refers to all of these things, but especially the class-by-class, function-by-function reference at http://www.openframeworks.cc/documentation

Documentation

Pretty much everything can be improved here.

  • Improved and featured (i.e. on openframeworks.cc) version of the P5-to-OF rosetta stone -- GAB

  • Improved descriptions. For example, a widely used class and its first few methods usually have a few sentences or a paragraph explaining what they do, but these tend to fall off as you scroll down the page. Would be nice to have a description for each function in the online docs. -- GAB

Tutorials

What kinds of tutorials are needed or need to be improved?

Posible tutorials order from cero knowledge to advance stuff

  1. BootCamp (All this could be some small and friendly videos... some of this things are already on the openFrameworks Vimeo account but seem unaccessible from openframeworks.cc )

    • I´m going to a OF Workshop, What I need to do before going?: downloading oF, installing IDE, installing dependences, compiling the core. (May be: installing macport, git-core, python stuff for project generation ??)
    • Some theoretical and friendly introduction to C++ compilers and pre-compilers works. (Basicaly why it´s going to look different from all-in-one Processing IDE´s )
    • oF Project structure ( src, bin , bin/data, core and addons ) and how testApp works ( setup() / update() / draw() / keyboard, mouse, windows events )
    • Compiling your first project. Basic guide to start compiling the awesome OF examples
  2. Some basic programming principles ( We can follow Toddy book or Daniel Shiffman order )

    • 2D Cartesian coordinates, drawing some stuf ( ofCircles, ofRectangles, ofColor, ofFill, etc )
    • Variables ( native C++ type: bool, char , int, float, double and some openFrameworks variables: ofGetWindowsWith(), mouseX, ofGetFramerate(), etc )
    • Loops and conditions
    • Arrays and Pointes ( examples: pixel by pixels stuff and other mirror applications )
    • Methots and Classes ( examples: we can start making a PARTICLE EXAMPLE)
  3. Going deeper in to OF

    • A generic map and explanation about openFrameworks/lib/openFrameworks and base libraries ( openGL, assimp, etc..) in order to give a general more clear idea what OF is. And people start geting excited about the things they CAN do with OF
    • Transition tutorial from other frameworks and lenguajes: like OPP tutorial and P5 Tutorial from the wiki. ( Example: one way to put all this things on the road it´s through start bulding a BASIC PARTICLE EXAMPLE that first make an object and the makes array of it )
    • STL (vectors, linked lists, maps, deques) (should we really make STL tutorials? I figure there must be millions on the net already - Christoph). (I think discussing how STL works with OF objects, some pitfalls, etc will be really helpful. This is already part of the OOP tutorial, but I think it's useful to show how c++ libraries can be a big help). ( Example: in this point we can return to the previous example and make an ADVANCE PARTICLE EXAMPLE using vectors and lists )
    • 3D: some OpenGL basic things, cameras, lights, etc
    • What are addons and how to deal with them? ( In this point it could be really handy to give some basic GIT information in order to start having fun exploring ofxAddons.com
  4. Going further or beyond the limits ( ADDONS )

    • some stuff that use addonExamples
    • Not sure where this fits in but one of the appealing things about OF is the direct access to a variety of cameras, sensors, external equipment, etc. What if there were a collection (Wiki-like I guess) of equipment used, referenced addons, watchouts, performance... -jvcleave (+1 this is great and has been done informally)
  5. Use && Contribute

    • Git workflow: How/why do I work with git? How can I accomplish specific OF-related tasks with git? ([Christoph]: I intend to tackle at least part of this)
    • How to make good addons that can be compiled succesfully over all platforms.
    • Code style
    • Core contribution. maybe here it´s a good place to talk about the history of openFrameworks Core and how/why things are like they are.

  • A beginners guide to the GPU pipeline with examples using the relevant OF classes: ofTexture, ofShader, ofFbo, ofVbo, etc. (this could also be conceptualized as a reference) -- GAB

  • How to use lights effectively in 3D. The relationship between lights and materials. I feel like there's nearly nothing out there about ofMaterials or ofLight. -- GAB

  • setting up a kinect with OF overview

  • computer vision 101

  • making an addon, adding addons, etc.

  • Games! Collisions, using Vanderlin's Box 2D libraries...

  • Tutorial on Event Handling and maybe how to build a simple GUI button or slider

  • Tutorial on arrays - Array of ints, array of strings, array of images, array of objects, array of arrays (multiple image sequences & simple particle system)

Some idea for the tutorials

  • There are a lot of workshops that are held by the OF community that produce great work in short periods of time and low barriers to entry. What makes a good workshop and what are good pre-requisites? Should we provide presentation/workshop materials to the community? (thinking of Roxlu's slideshares) -jvcleave

  • port everything from the old wiki. / Potentially moving some of the tutorials from the wiki to the site, or cleaning them up / modernizing them.

  • video tutorials, everyone should do a short video explaining something. The topic can be anything but probably things like setting up OF make more sense than code related topics.

  • On the same note as the video tutorials, I was wondering if videos of the provided example apps would be helpful. Videos like James' are great for people to get a feel for the capabilities before diving in. The ofxTimeline example and his TSPS+Unity example come to mind. -jvcleave

  • Better beginner examples for standard file handling stuff: load and parse/write and save xml, search through a directory for a file, etc. This could mainly be highly modularized examples that people could work off of. -- GAB

  • Some ofAssimpLoader examples: loading a mesh, playing back existing mesh animations, controlling a rigged mesh. -- GAB

  • More resources for working with networking in OF: basic web API examples, socket communication examples, and tutorials. -- GAB

Examples

Which examples are in dire need of improvement? Which core functionality needs examples in the first place?

  • ofBuffer / ofFile / ofDirectory need examples now.
  • ofDataPath / working directory, etc.
  • ofCamera could use more tutorials and the 3d tutorial is a bit too complex, simpler smaller 3d examples
  • ofPixels / ofPixelsRef, etc could be useful
  • fbo, advanced fbo options. For example, showing how trails in a floating point fbo look vs trails in a non floating point fbo. Sort of "best practices" and ideas to try out.
  • more about shaders and fbos.
  • some sort of OPENGL stress test example, that says, "my machine can do X,Y but not Z". luaAV has a fairly good one to look at.
  • ofMesh, approaches to working with meshes, etc.
  • tweening example (Golan)
  • color example (Golan)
  • Anything vbo related.

Other Changes

  • "myApps" in "examples", containing emptyExample