#OSG+VS#第十一周

本文总结了在使用OSG+VS进行三维模型开发时遇到的问题,包括如何获取模型世界坐标以及在框选模型过程中遇到的模型旋转、高亮颜色清除和多模型高亮等问题。通过查阅资料和不断尝试,部分问题得到了解决,但模型坐标获取仍存在困难,计划继续寻求解决方案。同时,文章提到了个人的生活安排和工作心态调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

成果总结:

1.关于获取模型的世界坐标

问了师姐,师姐给我讲解了一些模型结构上的东西,指了个大致方向,说实话半懂不懂,回来自己试了试,没有成功。

正巧经理来跟我讨论下一步的计划,我就跟他讲了坐标的问题。

第二天他告诉我说,目前没有现成的接口可以用;他也跟师姐讨论了,获取顶点坐标之后再区分有效可用的,很麻烦;说在考虑从数据源下手,对数据结构做些要求。让我也再想想办法。

同学告诉我教材上有“输出场景中所有顶点”的代码。花了一天照着写,将void apply(osg::Geode& geode)括号中改成我们的数据格式,发现无法进入apply函数。猜测还是跟数据本身结构格式有关,自己定义的数据几何体,多少还是跟osg自带的geode(geometry)有区别。。。

打算就这个问题再请教一下师姐,可惜这几天她都不在。

这个问题只能先放一放了。


2.框选一个区域的模型

使用的是:

osg::ref_ptr<osgUtil::PolytopeIntersector> intersector =new osgUtil::PolytopeIntersector(osgUtil::Intersector::WINDOW, xMin, yMin, xMax, yMax);

参考:http://2339637.blog.51cto.com/2329637/1406631

并结合已有的“选择”功能的代码,难度不是很大。

遇到的几个问题总结如下:

①在拖动鼠标框选的过程中,模型(相机)也会跟着旋转。

参考:原文和http://bbs.osgchina.org/forum.php?mod=viewthread&tid=10022&highlight=%BF%F2%D1%A1&_dsign=d3a79e74。

了解到,设置osg::observer_ptr<osg::Geometry> geometry;和osg::Vec3Array* vertex = new osg::Vec3Array(4);大概是为了让场景反方向运动,抵消鼠标拖动导致的移动。但是,又是由于模型与geometry的区别,这一方法无法实现。

最终方法:使用了case(osgGA::GUIEventAdapter::DRAG ):return true;,此时只要打开开关,场景被固定下来,无法再随鼠标运动。

②清除模型的高亮颜色。

响应键盘按键。跟“选择”的代码,最终才明白按键真正响应的是哪部分代码,是哪几行起到了恢复原有颜色的作用。删除了多余无用代码。

③框选几个模型时,只有一个模型高亮。

是自己的书写原因,照搬照抄多写了一个break,致使找到一个模型并高亮后就跳出了循环,其他模型没能进入循环着色。还是跟代码、设断点找出来的。


下周目标:

1.每周都很迷茫,,常常扣手机,已经扣到不想看电子设备了。现在如果能解决坐标问题,我的任务基本都完成了>.<哎

然而解决不了,定不下来……

牙龈发炎很严重,痘痘此起彼伏很烦=。=

定了月底去看皇上的票,纠结了很久周几回来,担心赶不上组会,最后还是决定赌一把,万一赶不上,只能请假了,自己这段时间也算是无功无过,即使被老师批评一顿,去那么远玩到了就是值得的。蓝先生说的对,做人最重要的是开心。哈哈。皇上也说,新疆不会让我失望。期待~~

就是路费太贵!

2.实在做不出计划了。上周还真是说对了,,坐标没那么容易获取……坑啊。真的只差这个了。

目前待解决的几个关键点如下:

①模型底部轮廓坐标。(不能说成顶点坐标,意思不同)

②分析窗户还是整个墙面。窗户的话,需要程序能筛选出模型的窗户;墙面的话,要考虑如果剔除死角和背光面。

③是否需要区域光影?还是整个屏幕光影效果。


after all,加油!坚持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值