[ Video ]
[ About ]
4年目スタート!
Start 4th year !
[ Source ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#pragma once #include "ofMain.h" class ofApp : public ofBaseApp { public: void setup(); void update(); void draw(); void keyPressed(int key) {}; void keyReleased(int key) {}; void mouseMoved(int x, int y) {}; void mouseDragged(int x, int y, int button) {}; void mousePressed(int x, int y, int button) {}; void mouseReleased(int x, int y, int button) {}; void windowResized(int w, int h) {}; void dragEvent(ofDragInfo dragInfo) {}; void gotMessage(ofMessage msg) {}; ofEasyCam cam; ofMesh base_mesh, draw_mesh; }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
#include "ofApp.h" //-------------------------------------------------------------- void ofApp::setup() { ofSetFrameRate(60); ofSetWindowTitle("openframeworks"); ofBackground(239); ofEnableDepthTest(); ofFbo fbo; fbo.allocate(ofGetWidth(), ofGetHeight()); fbo.begin(); ofTranslate(ofGetWidth() * 0.5, ofGetHeight() * 0.5); ofClear(0); ofSetColor(0); ofTrueTypeFont font; font.loadFont("fonts/Kazesawa-Bold.ttf", 400, true, true, true); string word = "4"; font.drawString(word, font.stringWidth(word) * -0.5, font.stringHeight(word)); fbo.end(); auto span = 15; ofPixels pixels; fbo.readToPixels(pixels); for (int x = 0; x < fbo.getWidth(); x += span) { for (int y = 0; y < fbo.getHeight(); y += span) { ofColor color = pixels.getColor(x, y); if (color != ofColor(0, 0)) { for (int z = -span; z <= span; z += span) { this->base_mesh.addVertex(glm::vec3(x - ofGetWidth() * 0.5, ofGetHeight() - y - ofGetWidth() * 0.25, z)); } } } } this->draw_mesh.setMode(ofPrimitiveMode::OF_PRIMITIVE_LINES); ofSetColor(39); } //-------------------------------------------------------------- void ofApp::update() { ofSeedRandom(39); this->draw_mesh.clear(); for (int i = 0; i < this->base_mesh.getNumVertices(); i++) { auto location = this->base_mesh.getVertex(i); auto param = int(ofGetFrameNum() * 2 + location.y) % 600; if (param > 300) { auto angle = ofMap(param, 300, 600, 0, PI * 2); auto rotation = glm::rotate(glm::mat4(), angle, glm::vec3(0, 1, 0)); location = glm::vec4(location, 0) * rotation; } this->draw_mesh.addVertex(location); } for (int i = 0; i < this->draw_mesh.getNumVertices(); i++) { for (int k = 0; k < this->draw_mesh.getNumVertices(); k++) { if (i == k) { continue; } if (glm::fastDistance(this->draw_mesh.getVertex(i), this->draw_mesh.getVertex(k)) < 20) { this->draw_mesh.addIndex(i); this->draw_mesh.addIndex(k); } } } } //-------------------------------------------------------------- void ofApp::draw() { this->cam.begin(); this->draw_mesh.drawWireframe(); for (auto& vertex : this->draw_mesh.getVertices()) { ofDrawSphere(vertex, 2); } this->cam.end(); } //-------------------------------------------------------------- int main() { ofSetupOpenGL(720, 720, OF_WINDOW); ofRunApp(new ofApp()); } |
[ Link ]
https://github.com/junkiyoshi/Insta20191216