日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

osg中实现HUDAxis功能

發布時間:2023/12/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 osg中实现HUDAxis功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在場景左下角顯示一個表示當前場景坐標系,它只對相機旋轉有反應,對場景縮放和移動不起效果,采取方法:將一個坐標軸模型節點放在一個Projection下或放在Matrixtransform下設置為絕對坐標模式,然后再回調剔除移動變換。

使用這個類代碼

?

#include<osg/Geometry> #include<osg/Geode> #include<osgViewer/Viewer> #include<osgViewer/ViewerEventHandlers> #include <osg/Node> #include <osg/Geode> #include <osg/Group> #include <osgViewer/Viewer> #include <osgDB/ReadFile> #include <osgDB/WriteFile> #include<osg/DrawPixels> #include<osg/PositionAttitudeTransform> #include<osg/computeBoundsVisitor> #include<osg/MatrixTransform> #include<osg/ShapeDrawable> #include<osg/Shape> #include<osg/PolygonMode> #include<osg/NodeVisitor> class HUDAxis :public osg::Camera { public:HUDAxis();HUDAxis( const HUDAxis& copy, osg::CopyOp copyOp = osg::CopyOp::SHALLOW_COPY);META_Node(osg, HUDAxis);inline void setMainCamera(Camera* camera){ _mainCamera = camera; }virtual void traverse(osg::NodeVisitor& nv); protected:virtual ~HUDAxis();osg::observer_ptr<Camera> _mainCamera; };HUDAxis::HUDAxis() {//可以在這直接讀取axes.osgt;// this->addChild(osgDB::readNodeFile("axes.osgt")); }HUDAxis::HUDAxis( const HUDAxis& copy, osg::CopyOp copyOp /* = CopyOp::SHALLOW_COPY */) :Camera(copy, copyOp), _mainCamera(copy._mainCamera) {}// 每次回調時,該函數就會被執行 void HUDAxis::traverse(osg::NodeVisitor& nv) {double fovy, aspectRatio, vNear, vFar;_mainCamera->getProjectionMatrixAsPerspective(fovy, aspectRatio, vNear, vFar);// 改為正投影,正投影不會隨相機的拉近拉遠而放大、縮小,這樣就剔除了縮放效果this->setProjectionMatrixAsOrtho(-10.0*aspectRatio, 10.0*aspectRatio, -10.0, 10.0, 2.0, 4.0); //設置投影矩陣,使縮放不起效果// 讓坐標軸模型位于窗體右下角。osg::Vec3 trans(8.5*aspectRatio, -8.5, -8.0); if (_mainCamera.valid()){osg::Matrix matrix = _mainCamera->getViewMatrix();//改變視圖矩陣,讓移動位置固定// 讓移動固定,否則鼠標左鍵按住模型可以拖動或按空格鍵時模型會動matrix.setTrans(trans); this->setViewMatrix(matrix);}osg::Camera::traverse(nv); }HUDAxis::~HUDAxis() {}void main() {osg::ref_ptr<osgViewer::Viewer> spViewer = new osgViewer::Viewer;//使用這個類代碼 /osg::ref_ptr<HUDAxis> hudAxes = new HUDAxis;// 如果沒有坐標軸模型的osg文件,用cow.osg代替驗證也行,都一樣的,只是模型不同而已。osg::ref_ptr<osg::Node> _axes = osgDB::readNodeFile("cow.osg");hudAxes->addChild(_axes);osg::ref_ptr<osg::Camera> spCamera = spViewer->getCamera();hudAxes->setMainCamera(spCamera);hudAxes->setRenderOrder(osg::Camera::POST_RENDER);hudAxes->setClearMask(GL_DEPTH_BUFFER_BIT);hudAxes->setAllowEventFocus(false);hudAxes->setReferenceFrame(osg::Transform::ABSOLUTE_RF);spViewer->setSceneData(hudAxes);spViewer->run(); }

需要此相機的視圖矩陣和主相機的一樣。

總結

以上是生活随笔為你收集整理的osg中实现HUDAxis功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 尤物视频在线看 | 男人添女人囗交视频 | 久草视频在线资源站 | av中文字幕网站 | 超碰66| 黄色在线观看网站 | 亚洲福利av | 国产99999| 五月天在线播放 | 三上悠亚人妻中文字幕在线 | avtt久久 | 中文字幕在线导航 | 久久亚洲av无码精品色午夜麻豆 | 中文字幕乱码av | 日韩不卡在线观看 | 成人亚洲天堂 | 都市激情av| 国产成人短视频在线观看 | 天天干天天插 | 国产日产亚洲精品 | 黄色av免费在线播放 | 亚洲一区二区黄 | 天堂中文字幕在线 | 狼人av在线 | 亚洲熟女乱色综合亚洲av | 日韩国产综合 | julia一区| 欧美激情在线狂野欧美精品 | 日韩一二三四五区 | 午夜伦理福利视频 | 美女久久 | 精品国产乱码久久久人妻 | 欧美午夜三级 | 日韩电影网站 | 小镇姑娘高清播放视频 | 又黄又爽又色的视频 | 国产黄色一级片视频 | 日本爽爽爽 | aaa国产精品 | 打美女屁股网站 | 伊人伊网| 夜夜操天天干 | 国产精品拍拍 | 按摩毛片 | 中文在线观看免费视频 | 99热日韩 | 国产一区二区三区91 | 高清一区二区三区四区 | 777米奇影视第四色 五月丁香久久婷婷 | 国模视频一区二区 | 女人扒开腿让男人捅爽 | 中文字幕一区av | 最新中文字幕第一页 | 中文字幕日韩人妻在线视频 | 日韩美女av在线 | 国产精选视频在线观看 | 91微拍| 99精品乱码国产在线观看 | 波多野结衣爱爱 | 爱爱视频网址 | a毛片在线 | 日本黄色免费大片 | 日韩一区二区高清 | aaa黄色大片| 国产精品jizz在线观看老狼 | 日韩综合另类 | a级在线视频 | 亚洲伦理中文字幕 | 久久看片网| 青青草原一区二区 | 毛片网站免费观看 | 久久一级免费视频 | 亚洲自拍av在线 | 国产欧美激情视频 | 久久亚洲视频 | 精品人妻无码一区二区三区换脸 | www.黄色网址.com | 黄色一级视频片 | 午夜一二三区 | 日韩色网站| 天天操一操 | 国产老熟女伦老熟妇露脸 | 色av导航 | 欧美精品成人一区二区三区四区 | 91麻豆一区二区三区 | 久久久久国产一区二区三区潘金莲 | 国产无遮挡免费观看视频网站 | 精品无码三级在线观看视频 | av在线超碰 | 污视频网站免费观看 | 青草青草久热 | 日本不卡不卡 | 国产免费成人在线视频 | 91浏览器在线观看 | 色窝av| 欧美在线免费视频 | 男女猛烈无遮挡免费视频 | 日本人的性生活视频 | 思思精品视频 |