OSG中獲取任一時刻相機的位置

2021-06-22 15:17:04 字數 1490 閱讀 1877

就是在有漫遊器的程式中獲取相機任一時刻的位置,有時使用漫遊器漫遊時需要將某一時刻相機的位置列印出來。基於這個目的,做的乙個demo,由於前面一篇文章理解清楚了相機和漫遊器的關係,這次寫**時輕鬆了很多。

再次記錄一下,當使用run函式開啟**迴圈時,在run函式裡會對場景進行判斷,如果沒有漫遊器,那麼它就會給場景新增乙個trackballmanipulator漫遊器,如果有漫遊器,它什麼也不會做。所以如果在run函式之前設定

viewer->setcameramanipulator(null);
這種**是無效的,因為它立馬會被run函式中設定的漫遊器所覆蓋,如果需要關閉漫遊器,只有當run函式開始執行後再使用這行**才會關閉漫遊器。

獲取相機某一時刻的位置,主要是要將幾個典型的觀察點列印出來,所以漫遊器是必須的。然後需要將自己調整好的幾個位置列印出來,處理方法是調整好漫遊器的位置後在事件處理器中將漫遊器關閉,然後獲取相機位置,然後再將漫遊器新增上去。有一些需要注意的事項,在**中新增了注釋。

**如下:這樣每選取乙個合適的觀察點,按『k』鍵後就會將該觀察點列印出來。但是注意列印出觀察點後相機立馬恢復到了之前的位置,因為沒有更改操作器的初始位置。將下面注釋掉的這行**開啟,相機就還是選取的位置了,但是由於操作器的初始位置變了,導致漫遊的效果不是很好,旋轉的中心也發生了變化,所以將這行**注釋掉了。

//將當前位置設定為相機的初始位置

//mt->sethomeposition(eye,center,up);

**如下:

#include #include #include #include #include #include #include #include #pragma comment(lib, "osg.lib")

#pragma comment(lib, "osgdb.lib")

#pragma comment(lib, "osgviewer.lib")

#pragma comment(lib, "openthreads.lib")

#pragma comment(lib, "osgga.lib")

#pragma comment(lib, "osgutil.lib")

#pragma comment(lib, "osgtext.lib")

#pragma comment(lib, "osgparticle.lib")

#pragma comment(lib, "osgshadow.lib")

//這個事件處理器是從osg原始碼中helphandler這個類中copy過來了,看了下helphandler的原始碼,很簡單

class usereventhandler : public osgga::guieventhandler

}default: break;

} return false;

}};int main(int argc, char** argv)

Linux監測某一時刻對外的IP連線情況

相信大家都熟悉netstat命令吧,這裡就主要採用此命令,網上流傳的ddos deflate工具就是採用ip數量來統計對外連線數,然後結合iptables的方法來實現某個ip加入黑名單和解禁某ip netstat ntu awk cut d f1 sort uniq c sort n其中採用的命令,...

Linux監測某一時刻對外的IP連線情況

相信大家都熟悉netstat命令吧,這裡就主要採用此命令。網上流傳的ddos deflate工具就是採用ip數量來統計對外連線數,然後結合iptables的方法來實現某個ip增加黑名單和解禁某ip netstat ntu awk cut d f1 sort uniq c sort n當中採用的命令。...

Linux監測某一時刻對外的IP連線情況

相信大家都熟悉netstat命令吧,這裡就主要採用此命令。網上流傳的ddos deflate工具就是採用ip數量來統計對外連線數,然後結合iptables的方法來實現某個ip增加黑名單和解禁某ip netstat ntu awk cut d f1 sort uniq c sort n當中採用的命令。...