「がんばれない」けど「がんばりたい」

ITエンジニアの仕事のこと。AI、機械学習、ディープラーニング。地頭力。車のこと。

nearClipとfarClipとオブジェクトの位置

openFrameworksでnearClipとfarClipをセットする時の引数は、 どちらも透視法射影では、たぶん正値を入れる感じなのと、 oFのworld座標系のz軸の+ーの向き関係を忘れてしまいガチなのでメモ。

久しぶりにoFというかOpenGL使うと、忘れてる…

■例1

このカメラ設定だと間隔的にオブジェクトのz位置も0以上100以下にしがちだけど、ワールド座標系でのz軸は手前に行くほどプラス。なので、理論的にはz座標は-0から-100以内にしないとモニタに映らない。

    cam.setNearClip(0);
    cam.setFarClip(100);
    cam.setFov(100);

    //カメラ位置重要    
    cam.setPosition(ofVec3f(0,0,0));

    cam.begin();
     glPointSize(20);
     glBegin(GL_POINTS);
     glVertex3f(0, 0, -6);
     glEnd();
    cam.end();

■例2

カメラの位置を以下の様に手前に50の位置にセットした場合は、オブジェクトが見えるz軸範囲は、理論的には-50〜50。

    cam.setNearClip(0);
    cam.setFarClip(100);
    cam.setFov(60);

    //カメラ位置
    cam.setPosition(ofVec3f(0,0,50));


    cam.begin();
    
     glPointSize(20);
     glBegin(GL_POINTS);
     glVertex3f(0, 0, 50);
     glEnd();
    
    cam.end();

という事だと思うのだけど、 どうもギリギリ理論値通りにならない。 そこでfovの値を広げたりすると映ったりする事が分かりました。しかもfovの値を180(度)にすると、clip値に関わらず、どこまでも見える気がする…。。