framework2

Форк
0
61 строка · 1.8 Кб
1
//
2
//  ofxFBXNurbsCurve.cpp
3
//
4
//  Created by Nick Hardeman on 5/8/19.
5
//
6

7
#include "ofxFBXNurbsCurve.h"
8
#include "ofxFBXSrcNurbsCurve.h"
9

10
//----------------------------------------
11
ofxFBXSource::Node::NodeType ofxFBXNurbsCurve::getType() {
12
    return ofxFBXSource::Node::OFX_FBX_NURBS_CURVE;
13
}
14

15
//--------------------------------------------------------------
16
void ofxFBXNurbsCurve::setup( shared_ptr<ofxFBXSource::Node> anode ) {
17
    ofxFBXNode::setup( anode );
18
    if( anode && anode->getType() == ofxFBXSource::Node::OFX_FBX_NURBS_CURVE ) {
19
        auto tc = dynamic_pointer_cast<ofxFBXSource::NurbsCurve>( anode );
20
        tc->configurePolyline( mPolyline );
21
        setTransform( tc );
22
    }
23
}
24

25
//--------------------------------------------------------------
26
void ofxFBXNurbsCurve::draw() {
27
    if(mPolyline.size()) {
28
        transformGL(); {
29
            mPolyline.draw();
30
        } restoreTransformGL();
31
    }
32
}
33
//
34
//--------------------------------------------------------------
35
void ofxFBXNurbsCurve::setPolyline( ofPolyline& apoly ) {
36
    mPolyline = apoly;
37
}
38

39
//--------------------------------------------------------------
40
ofPolyline ofxFBXNurbsCurve::getGlobalPolyline() {
41
    glm::mat4 gmat = getGlobalTransformMatrix();
42
    // transform points into global space //
43
    ofPolyline tpoly = getPolyline();
44
    
45
    for( int i = 0; i < tpoly.size(); i++ ) {
46
        auto& mp = tpoly[i];
47
        glm::vec4 v = gmat * glm::vec4(mp, 1.0);
48
        mp = glm::vec3(v.x, v.y, v.z);
49
    }
50
    return tpoly;
51
}
52

53
//--------------------------------------------------------------
54
ofPolyline ofxFBXNurbsCurve::getGlobalPolylineAroundPosition() {
55
    glm::vec3 gpos = getGlobalPosition();
56
    auto tpoly = getGlobalPolyline();
57
    for( auto& tv : tpoly.getVertices() ) {
58
        tv -= gpos;
59
    }
60
    return tpoly;
61
}
62

63

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.