#include "ofApp.h"
void ofApp::setup(){
ofSetFrameRate(60);
ofSetVerticalSync(true);
ofBackground(50, 50, 50, 0);
ofDisableArbTex();
ofEnableDepthTest();
model.loadModel("dog/dog.3ds");
model.setPosition(ofGetWidth()*.5, ofGetHeight() * 0.75, 0);
light.enable();
light.setPosition(model.getPosition() + glm::vec3(0, 0, 1600));
}
void ofApp::update(){
}
void ofApp::draw(){
ofSetColor(255, 255, 255, 255);
drawWithMesh();
}
void ofApp::drawWithModel(){
glm::vec3 position = model.getPosition();
ofPushMatrix();
ofTranslate(position);
ofRotateDeg(-ofGetMouseX(), 0, 1, 0);
ofRotateDeg(90,1,0,0);
ofTranslate(-position);
model.drawFaces();
ofPopMatrix();
}
void ofApp::drawWithMesh(){
glm::vec3 scale = model.getScale();
glm::vec3 position = model.getPosition();
float normalizedScale = model.getNormalizedScale();
ofVboMesh mesh = model.getMesh(0);
ofTexture texture;
ofxAssimpMeshHelper& meshHelper = model.getMeshHelper( 0 );
bool bHasTexture = meshHelper.hasTexture();
if( bHasTexture ) {
texture = model.getTextureForMesh(0);
}
ofMaterial material = model.getMaterialForMesh(0);
ofPushMatrix();
ofTranslate(position);
ofRotateDeg(-ofGetMouseX(), 0, 1, 0);
ofRotateDeg(90,1,0,0);
ofScale(normalizedScale, normalizedScale, normalizedScale);
ofScale(scale.x,scale.y,scale.z);
float liquidness = 5;
float amplitude = mouseY/100.0;
float speedDampen = 5;
auto &verts = mesh.getVertices();
for(unsigned int i = 0; i < verts.size(); i++){
verts[i].x += ofSignedNoise(verts[i].x/liquidness, verts[i].y/liquidness,verts[i].z/liquidness, ofGetElapsedTimef()/speedDampen)*amplitude;
verts[i].y += ofSignedNoise(verts[i].z/liquidness, verts[i].x/liquidness,verts[i].y/liquidness, ofGetElapsedTimef()/speedDampen)*amplitude;
verts[i].z += ofSignedNoise(verts[i].y/liquidness, verts[i].z/liquidness,verts[i].x/liquidness, ofGetElapsedTimef()/speedDampen)*amplitude;
}
if(bHasTexture) texture.bind();
material.begin();
mesh.drawFaces();
material.end();
if(bHasTexture) texture.unbind();
ofPopMatrix();
}
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