当前位置: 首页 > news >正文

网站进入百度观察期wordpress的编码问题

网站进入百度观察期,wordpress的编码问题,郑州app定制开发,网站建设实训个人总结1000字​若该文为原创文章#xff0c;未经允许不得转载 本文章博客地址#xff1a;https://blog.csdn.net/qq21497936/article/details/143852695 各位读者#xff0c;知识无穷而人力有穷#xff0c;要么改需求#xff0c;要么找专业人士#xff0c;要么自己研究 长沙红胖子Qt…​若该文为原创文章未经允许不得转载 本文章博客地址https://blog.csdn.net/qq21497936/article/details/143852695 各位读者知识无穷而人力有穷要么改需求要么找专业人士要么自己研究 长沙红胖子Qt长沙创微智科博文大全开发技术集合包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等持续更新中… OSG开发专栏点击传送门 上一篇《OSG开发笔记三十一OSG中LOD层次细节模型介绍和使用》 下一篇 持续补充中… 前言 深入理解相机视口摸索相机视口旋转功能背景透明或者不透明。   本篇实现了一个左下角旋转HUD且背景透明的相机视口。 Demo HUD相机的坐标 抬头HUD就是通过投影矩阵来实现具体可参看《OSG开发笔记二十OSG使用HUD显示文字》 Hud要单独创建一个新相机注意关闭光照不受光照影响所以内容以同一亮度显示关闭深度测试渲染顺序设置为POST否则可能会被场景中的其他图形所覆盖。设置参考贴为绝对型setReferenceFrame(osg::Transform:ABSOLUTE_RF)使其不受父节点变换的影响setMatrix(osg::Matrix::identity())投影矩阵通常会设置为屏幕尺寸大小 相机Camera 相机osg::Camera和视口Viewport是两个核心概念对于理解OSG中的三维场景渲染至关重要。   相机在OSG中用于模拟真实世界中的摄影机它负责捕捉和渲染三维场景。相机类osg::Camera继承自osg::Transform和osg::CullSetting类用来管理OSG中的模型——视图矩阵。相机的管理主要是通过各种变换实现的这些变换包括 视点变换设置视点的方向和位置。默认情况下视点定位为坐标原点指向Y正方向。可以通过调整视点的位置和参考点的位置来改变相机的观察方向和角度。投影变换由于显示器只能用二维图像显示三维物体因此要靠投影来降低维数。投影变换的目的是定义一个视景体使视景体外多余的部分被裁减掉最终进入图像的只是视景体内的有关部分。OSG支持两种投影方式透视投影Perspective Projection和正视投影Orthographic Projection。透视投影能够模拟人眼的视觉效果使远处的物体看起来更小而正视投影则保持物体的大小不变不受距离影响。视口变换将视景体内投影的物体显示在二维的视口平面上。即将经过几何变换、投影变换和裁剪变换后的物体显示于屏幕窗口内指定的区域内这个区域通常为矩形称为视口。 视口ViewPort 具体来说视口变换涉及以下几个参数 屏幕左下角的坐标定义了视口在屏幕上的左下角位置。屏幕宽度和高度定义了视口的宽度和高度即相机捕捉的场景在屏幕上显示的区域大小。   在OSG中可以通过调用相机的setViewport方法来设置视口。例如 pCamera-setViewport(new osg::Viewport(0, 0, width, height));这行代码创建了一个新的视口并将其设置为相机的当前视口。其中0和0是屏幕左下角的坐标width和height是视口的宽度和高度。 相机与视口的关系 相机和视口在OSG中紧密相连共同决定了三维场景的渲染效果。相机负责捕捉和渲染场景而视口则定义了相机捕捉的场景在屏幕上的显示位置和大小。通过调整相机的各种变换和设置视口的大小和位置可以实现丰富的三维视觉效果和交互体验。 设置相机观察函数 void setViewMatrixAsLookAt(const osg::Vec3d eye, const osg::Vec3d center, const osg::Vec3d up);eye表示相机的位置。这是一个三维向量指定了相机在世界坐标系中的位置。center表示相机观察的中心点。这也是一个三维向量指定了相机应该对准的物体或场景的中心位置。up表示哪个方向是正方向。这同样是一个三维向量通常用于指定相机的上方方向例如通常设置为 (0,0,1) 表示Y轴正方向为上方。   设置相机位置和方向通过指定 eye、center 和 up 三个参数你可以精确地控制相机的位置和姿态。eye 和 center 之间的向量表示相机的观察方向而 up 向量则用于确定相机的上方方向。   关闭漫游器在使用 setViewMatrixAsLookAt 函数之前通常需要关闭相机的漫游器Camera Manipulator。这是因为漫游器会自动更新相机的观察矩阵从而覆盖你通过 setViewMatrixAsLookAt 设置的参数。可以通过调用 viewer-setCameraManipulator(NULL) 来关闭漫游器。   坐标系OSG 使用右手坐标系其中 X 轴向右Y 轴向上Z 轴向前。因此在设置 eye、center 和 up 参数时需要确保它们符合右手坐标系的规则。   视图矩阵setViewMatrixAsLookAt 函数实际上是通过设置相机的视图矩阵来实现相机位置和姿态的调整。视图矩阵是一个 4x4 的矩阵用于将相机坐标系中的点转换到世界坐标系中。 setViewMatrixAsLookAt 是一个强大的函数它允许你以直观的方式设置相机的位置和姿态。通过合理地使用这个函数你可以创建出各种复杂而逼真的三维场景和视觉效果。 Demo关键源码 创建Hud相机 // 步骤一创建HUD摄像机 // osg::ref_ptrosg::Camera pCamera new osg::Camera;osg::ref_ptrHudRotateCamera pCamera new HudRotateCamera;pCamera-setMasterCamera(_pViewer-getCamera());// 步骤二设置投影矩阵 // pCamera-setProjectionMatrix(osg::Matrix::ortho2D(0, 1280, 0, 800));// 步骤三设置视图矩阵,同时确保不被场景中其他图形位置变换影响, 使用绝对帧引用pCamera-setReferenceFrame(osg::Transform::ABSOLUTE_RF);pCamera-setViewMatrix(osg::Matrix::identity());// 步骤四清除深度缓存pCamera-setClearMask(GL_DEPTH_BUFFER_BIT);// 步骤五设置POST渲染顺序(最后渲染) // pCamera-setRenderOrder(osg::Camera::PRE_RENDER); // 渲染不显示 // pCamera-setRenderOrder(osg::Camera::NESTED_RENDER);pCamera-setRenderOrder(osg::Camera::POST_RENDER);// 步骤六设置为不接收事件,始终得不到焦点pCamera-setAllowEventFocus(false);// osg::ref_ptrosg::Geode pGeode new osg::Geode(); // pGeode new osg::Geode();osg::ref_ptrosg::StateSet pStateSet pGeode-getOrCreateStateSet();// 步骤七关闭光照pStateSet-setMode(GL_LIGHTING, osg::StateAttribute::OFF);// 步骤九关闭深度测试pStateSet-setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);// pGeode-addDrawable(pGeometry.get());pCamera-addChild(pGeode.get());pGroup-addChild(pCamera.get());HudRotateCamera.h #ifndef HUDROTATECAMERA_H #define HUDROTATECAMERA_H#include osg/Camera #include osg/CopyOpclass HudRotateCamera : public osg::Camera { public:HudRotateCamera();HudRotateCamera(const HudRotateCamera copy, const osg::CopyOp copyOp osg::CopyOp::SHALLOW_COPY);META_Node(osg, HudRotateCamera);public:void setMasterCamera(Camera* camera);public:virtual void traverse(osg::NodeVisitor nodeVisitor);protected:virtual ~HudRotateCamera();protected:osg::observer_ptrCamera _pMasterCamera; // 新增了相机主要是用来获取举证的 };#endif // HUDROTATECAMERA_HHudRotateCamera.cpp #include HudRotateCamera.hHudRotateCamera::HudRotateCamera(): Camera() {}HudRotateCamera::HudRotateCamera(const HudRotateCamera copy, const osg::CopyOp copyOp): Camera(copy, copyOp),_pMasterCamera(copy._pMasterCamera) {}HudRotateCamera::~HudRotateCamera() {}void HudRotateCamera::setMasterCamera(osg::Camera *camera) {_pMasterCamera camera; }void HudRotateCamera::traverse(osg::NodeVisitor nodeVisitor) {double fovy, aspectRatio, vNear, vFar;_pMasterCamera-getProjectionMatrixAsPerspective(fovy, aspectRatio, vNear, vFar);// 设置投影矩阵使缩放不起效果, 改为正投影正投影不会随相机的拉近拉远而放大、缩小这样就没有缩放效果// 放大缩小是根据左右上下距离越大就物体越小越小就物体越大this-setProjectionMatrixAsOrtho(-50 * aspectRatio,50 * aspectRatio,-50,50,vNear,vFar);// 让坐标轴模型位于窗体左下角osg::Vec3 vec3(-40, -40, 0);if (_pMasterCamera.valid()){// 改变视图矩阵, 让移动位置固定osg::Matrix matrix _pMasterCamera-getViewMatrix();// 让移动固定, 即始终位于窗体右下角否则鼠标左键按住模型可以拖动或按空格键时模型会动matrix.setTrans(vec3);this-setViewMatrix(matrix);}osg::Camera::traverse(nodeVisitor); }工程模板v1.35.0 入坑 入坑一没有按照预期的方式全屏显示在正中间 问题 想一直显示在中间且能旋转移动中心但是实际效果如下方格100x100间距1.0测试    尝试 将面方格缩小为10x10线放小测试    缩小正交投影       可能跟相机查看位置有关新增相机位置和方向等信息    没什么影响    这里可能理解有问题我们需要区域投影到视口那么一个是投影的区域三维区域的大小一个是投影到桌面2D他的大小这里其实类似于HUD通过HUD的方式添加了几行代码设置投影矩阵    经过测试可以跳过相机调整视口、中心改变后也会移动所以他一种在其位置区域。   然后回到前面发现也可以再次摸索发现如下特点    所以此时纵横都是10所以窗口大小要是符合11101011的比例改为400400测试还是一样    但是调整为800x800就好了    放最大也不会截取少了    所以这个有点搞不明白了总之是解决了且投影矩阵和正交矩阵都可以解决测试投影矩阵和正交举证都收视口大小影响但是影响具体不知就好像800x800是最小一样其他的没测了只测了400x400、600x600不行看比例800x800是最小正好满窗口了。    又怀疑投过去的区域小了将区域放大其位置反倒缩小所以跟理解不一样 一种是理解直接投射过去投射过去区域变大所以变大不是的一种是投射过去区域不变那么区域变大视图区域可见空间范围变大实际是这样但是视口对屏幕的大小未变   综合以上又测试了加大视口也正常所以怀疑有可能是qt和osg结合的时候这个地方设置了一个最小值而可能吧欢迎探讨这里深究暂时也没结果且解决了所以不继续深究了。 解决 修改相机视口大小为最小800x800。    后续补充 后续查看做的这个qtosg兼容类做的时候自己设置的800x800就是这个原因了    入坑二相机视口区域不透明 问题 当作最前面的文本hud是可以透明但是这里进行调整之后无法透明。    尝试 修改了语句可以透明了部分但是没了。    解决 相机是一个投影矩阵没有透明但是文字hud为什么透明呢。 入坑三内置几何体关闭光照后纯白色 问题 关闭光照后几何体白色    原理 光照关闭要设置颜色不想设置颜色就单独给体开放关照。 解决 入坑四文本看不到 问题 文本看不到旋转后发现是太大了。    位置较大。 尝试 测试下是把整个坐标区域的展示范围扩大那么实际看起来就是缩小。 解决 入坑五hud旋转中心不对 问题 Hud旋转中心不对    这时旋转中心还不对可能需要调整旋转中心    原理 开始去修改矩阵发现都不对其实中间点一直是000其就是中心那么我们设置文本的显示点不是从00开始即可。   下面将四边形的角点改为000来标识然后修改文本的中心点    解决 入坑六hud旋转反向了 问题 旋转是反的然后光照也反了变换矩阵有问题    原理 数据几何变换算来算去很费劲直接测试的结论    代码写反了让上下反向了应该是-50~50 解决 还剩下光照问题这个不好咋弄了反正是关闭光照或者是自己手动添加光源用系统的可能有点问题。    这个暂时没解决实际使用就是用一个可以从长度单独给这个相机设置一个光源这里因为需求本身不需要投影不做测试了。 上一篇《OSG开发笔记三十一OSG中LOD层次细节模型介绍和使用》 下一篇 持续补充中… 本文章博客地址https://blog.csdn.net/qq21497936/article/details/143852695
http://www.hkea.cn/news/14499813/

相关文章:

  • 网站开发工资低ui软件
  • 网站的导航栏设计文本石柱网站制作
  • 体验比较好的网站个人怎么做淘宝客网站吗
  • 高仿id97网站模板广州安卓程序开发
  • 泉州网站建设公司广告设计公司需要用专线网吗
  • 游戏网站免费入口app软件开发流程
  • 门户型网站有哪些dede 友情链接 网站简况 调用
  • 微信网站怎么建设网站建设的书籍知乎
  • 扁平化网站首页用小程序做视频网站
  • 做网站分辨率一般多少婚庆公司网页设计模板
  • 上海建设机械网站做一个企业网站需要哪些技术
  • 做自己的网站能赚钱吗什么是搜索引擎优化seo
  • 网站 建设方案乐山做美食推荐的网站
  • 西部数码网站打不开网站建设计入到什么科目
  • 哪家企业做网站好江西省建设监督网站
  • c语言做网站吗四个商城建设
  • 国内漂亮大气的网站weui-wordpress
  • 有名的网站重庆智能网站建设多少钱
  • 著名网站织梦中国免费空间网
  • 知网网站开发网站目录架构
  • 建网站教程如何制作自媒体短视频
  • 网站购物车建设外链在线生成
  • 公司展示网站费用手机网站域名解析
  • 电子商务网站建设与运营方向陕西建设交通集团招聘信息网站
  • 成都专业网站推广做网站排名seo
  • wordpress查询成绩网站站内关键词优化
  • 域名和网站名不一样软件工程师证书报考要求
  • 做自己的网站需要什么工作简历模板电子版免费
  • 方圆网通网站建设关键词排名优化易下拉系统
  • 网站 空间 购买免费网站空间可访问