#include "ofApp.h"
//--------------------------------------------------------------
void ofApp::setup() {
ofSetVerticalSync(true);
// load an image from disk
img.load("linzer.png");
// we're going to load a ton of points into an ofMesh
mesh.setMode(OF_PRIMITIVE_POINTS);
// loop through the image in the x and y axes
int skip = 4; // load a subset of the points
for(int y = 0; y < img.getHeight(); y += skip) {
for(int x = 0; x < img.getWidth(); x += skip) {
ofColor cur = img.getColor(x, y);
if(cur.a > 0) {
// the alpha value encodes depth, let's remap it to a good depth range
float z = ofMap(cur.a, 0, 255, -300, 300);
cur.a = 255;
mesh.addColor(cur);
glm::vec3 pos(x, y, z);
mesh.addVertex(pos);
}
}
}
ofEnableDepthTest();
glEnable(GL_POINT_SMOOTH); // use circular points instead of square points
glPointSize(3); // make the points bigger
}
//--------------------------------------------------------------
void ofApp::update() {
}
//--------------------------------------------------------------
void ofApp::draw() {
ofBackgroundGradient(ofColor::gray, ofColor::black, OF_GRADIENT_CIRCULAR);
// even points can overlap with each other, let's avoid that
cam.begin();
ofScale(2, -2, 2); // flip the y axis and zoom in a bit
ofRotateYDeg(90);
ofTranslate(-img.getWidth() / 2, -img.getHeight() / 2);
mesh.draw();
cam.end();
}
//--------------------------------------------------------------
void ofApp::keyPressed(int key){
}
//--------------------------------------------------------------
void ofApp::keyReleased(int key){
}
//--------------------------------------------------------------
void ofApp::mouseMoved(int x, int y){
}
//--------------------------------------------------------------
void ofApp::mouseDragged(int x, int y, int button){
}
//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button){
}
//--------------------------------------------------------------
void ofApp::mouseReleased(int x, int y, int button){
}
//--------------------------------------------------------------
void ofApp::mouseEntered(int x, int y){
}
//--------------------------------------------------------------
void ofApp::mouseExited(int x, int y){
}
//--------------------------------------------------------------
void ofApp::windowResized(int w, int h){
}
//--------------------------------------------------------------
void ofApp::gotMessage(ofMessage msg){
}
//--------------------------------------------------------------
void ofApp::dragEvent(ofDragInfo dragInfo){
}
Comments