如何用OpenGL实现3d场景的精确输出?

davic 2006-12-03 08:29:11
本人把3ds模型读入OpenGL后,对模型进行视图变换、透视投影变换、再进行视口变换,然后显示在屏幕上,并将场景保存为位图,因实验要求,需要对保存的位图图象大小进行精确控制。也就是说需要计算一个顶点坐标为(-230.0,-230.0,-550.0)
(-230.0,230.0,-550.0),(230.0,230.0,-550.0),(230.0,-230.0,-550.0),的正方形经过视图变换、透视投影变换、行视口变换(以上几个变换参数已知)后显示在屏幕上到底有几个像素?

请各位大虾拔刀相助啊!

把各个参数代入变换矩阵,按变换顺序用MATLAB算了一下,与实际保存下来的像素数相差甚远!不知为何?计算过程如下:
标顶点a=(-230,-230,-550,1),视图变换为矩阵为单位矩阵,即默认在原点观察,透视投影变换为gluPerspective(60.0f,4/3,1.0f,800.0f);即透视矩阵为:
p=[3*cot(30)/4, 0, 0, 0
0, cot(30), 0, 0
0,0,801/799,800*2/799
0, 0, -1, 0]
视口变换为glViewport(0,0,800,600);
对a进行视图和投影变换:a'=p*a=(26.9307,35.9076,-549.3742,500)
再进行透视除法:a''=a'/500=(0.049,0.0653,-0.9989,1.0000)
然后进行视口变换转化为屏幕坐标:
利用公式:Xwin=(Xnd+1)width/2+x=(0.049+1)*800/2+0=419.6
Ywin=(Ynd++1)height/2+y=(0.0653+1)*600/2+0=319.59
按同样步骤也算了顶点b=(-230.0,230.0,-550.0,1)
得Xwin'=419.6
Ywin'=280.41
这样两个顶点之间的像素坐标距离为39.2
实际用PHOTOSHOP查看两点之间却有410个像素!!!
...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
FatGarfield 2006-12-05
  • 打赏
  • 举报
回复
具体一点要你自己google了,呵呵
FatGarfield 2006-12-04
  • 打赏
  • 举报
回复
用Occlusion Query试试看
davic 2006-12-04
  • 打赏
  • 举报
回复
谢谢!
能具体一点吗
内容概要:本文提出了一种针对自主多无人机系统的通信模式选择概率模型,该模型能够基于动态环境中实时采集的数据进行智能决策,有效提升多无人机在协同作业中的协作效率与任务执行成功率。研究结合了不确定性因素的影响,采用Matlab实现算法仿真,构建了适应复杂环境变化的通信机制,重点解决了多无人机系统在动态环境下通信稳定性与可靠性的问题,具有较强的实用性和工程应用价值。; 适合人群:具备一定控制理论、通信系统或无人机相关背景,熟悉Matlab/Simulink仿真的科研人员及研究生;适用于从事多智能体系统、无线通信优化或协同控制方向的研究者。; 使用场景及目标:①应用于多无人机协同任务中的通信【自主多无人机系统通信模式选择的概率模型】基于动态环境中的实时数据做出决策,从而提高多无人机协同作业中的协作效果与任务成功率(Matlab代码实现)资源动态分配与模式切换;②为应对动态环境干扰下的通信中断问题提供决策支持;③提升复杂场景下无人机集群的任务完成率与系统鲁棒性; 阅读建议:建议结合Matlab代码深入理解模型实现细节,重点关注概率决策机制与实时数据处理流程,可进一步扩展至其他多智能体系统通信优化场景进行二次开发与验证。
内容概要:本文主要围绕UWB-IMU与UWB定位技术的对比研究展开,基于Matlab代码实现,结合状态估计算法(如UKF、AUKF等)对两种定位方式的性能进行分析与比较。研究重点在于通过数据融合提升定位精度与稳定性,尤其适用于复杂环境下的高精度定位需求。文中提供了完整的仿真代码和实现方法,便于读者复现与扩展应用。此外,文档还列举了大量相关科研方向和技术服务内容,涵盖机器学习、信号处理、路径规划、电力系统等多个领域,展示了广泛的技术支持能力。; 适合人群:具备一定Matlab编程基础,从事定位技术、状态估计、传感器融合或相关科研UWB-IMU、UWB定位对比研究(Matlab代码实现)方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高精度室内定位系统的设计与优化;②开展UWB与IMU融合定位算法的研究与验证;③学习和掌握卡尔曼滤波(如UKF、EKF)在实际定位问题中的应用;④为科研项目提供算法仿真支持和技术参考。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注数据融合策略与状态估计实现过程,同时可参考文中提及的相关技术方向拓展研究思路。注意区分纯UWB与UWB-IMU融合方案的性能差异,深入理解IMU在补偿UWB信号缺失方面的关键作用。
内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,涵盖正向与逆向运动学求解、正向动力学控制,并采用拉格朗日-欧拉法推导逆向动力学方程,所有内容均通过Matlab代码实现。同时结合RRT路径规划与B样条优化技术,提升机械臂运动轨迹的合理性与平滑性。文中还涉及多种先进算法与仿真技术的应用,如状态估计中的UKF、AUKF、EKF等滤波方法,以及PINN、INN、CNN-LSTM等神经网络模型在工程问题中的建模与求解,展示了Matlab在机器人控制、智能算法与系统仿真中的强大能力。; 适合人群:具备一定Ma六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)tlab编程基础,从事机器人控制、自动化、智能制造、人工智能等相关领域的科研人员及研究生;熟悉运动学、动力学建模或对神经网络在控制系统中应用感兴趣的工程技术人员。; 使用场景及目标:①实现六自由度机械臂的精确运动学与动力学建模;②利用人工神经网络解决传统解析方法难以处理的非线性控制问题;③结合路径规划与轨迹优化提升机械臂作业效率;④掌握基于Matlab的状态估计、数据融合与智能算法仿真方法; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点理解运动学建模与神经网络控制的设计流程,关注算法实现细节与仿真结果分析,同时参考文中提及的多种优化与估计方法拓展研究思路。

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧