Giter Club home page Giter Club logo

ofxbranchesprimitive's Introduction

ofxBranchesPrimitive

Build status Build status

This openFrameworks addon can be used to compose geometries that are made out of branches. As "branch" I mean a class that is initialized with a starting point and an end point, a quaternion that defines the initial orientation and an initial direction.

The desired geometry for each branch can be specified when merging the branches into the mesh. By default, this addon comes with a cylindric geometry that can be used to create tubular structures, as in the example-circle-points app. If you want to create your own geometry for the branches, have a look at the example-branch application, find the ofxBranchCylinder::putIntoMesh method and substitute it with your custom one.

Usage

//in your header file
ofxBranchesPrimitive tube;

void ofApp::setup(){
    int tot_points = 200;
    int radius = 40;
    for (int i = 0; i <= tot_points; i++) {
      float theta = 2.0f * 3.1415926f * float(i) / float(tot_points-1);
      float x = radius * cosf(theta);
      float z = radius * sinf(theta);
      point.x = x;
      point.z = z;
      tube.addVertex(point);
    }
    tube.build();
}

void ofApp::draw(){
    tube.draw();
}

Options

By default, an ofxBranchesPrimitive uses a tubular geometry and it is initialized with these options:

static const ofxBranchesPrimitiveOptions defaultOptions = {
    false, // cap, if the upper part of the cylinder composing a branch is closed or not
    5.0,   // radius, it defines how large is the branch
    16,    // resolution, it defines how many faces the cylinder will have. The minimum number is 3
    1,     // textureRepeat, it defines how many times a texture will repeat
    1.0    // radiusScale, it defines how much the radius of a branch should scale compared to the previous one
};

You can create you can pass your options during the initialization of the object or using the setup(ofxBranchesPrimitiveOptions opt) method. Have a look at the example-scaled application for more details about how to pass these options.

Examples

example-branch

example-branch

example-circle-points

example-circle-points example-circle-points

example-scaled example-scaled

ofxbranchesprimitive's People

Contributors

edap avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ofxbranchesprimitive's Issues

No normals when I use this in my own class

Hi, sorry to bother you, especailly on such an old (but very useful) repo. I am trying to use this to create a tube in my own code and face a strange issue. I am basing my experiments on your example-circle-points, I am getting my points from a polyline, using an addon that lets me draw curves, https://github.com/fred-dev/ofxBezierEditor.

I was going a bit crazy as when I use your addon within the ofxBezierEditor class, when I try to draw the tube with normals I get the error that the mesh does not have normals enabled. I checked your build() method and it explicity turns on normals. After some efforts at understanding this, I instead included your addon in my ofApp.h file, extracted my polyline from the above addon and then used the points in a ofxBranchesPrimitive instance inside ofApp, and the normals are enabled and draw as expected.

Do you know by any chance what would casue this issue - there doesnt seem to be a way to not have normals with your addon ofxBranchesPrimitive::build(), as inside the method it calls getMesh().enableNormals(); The only functional difference is that the ofxBranchesPrimitive instance is inside the ofApp.h class, not in my class that is itslef included in ofApp.h.

cheers

Fred

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.