查看: 2045|回复: 17

使用setProjectMatrixAsOrtho引其的模型拉伸问题

[复制链接]

该用户从未签到

发表于 2012-11-5 16:22:13 | 显示全部楼层 |阅读模式
我要进行立面,我使用setProjectMatrixAsOrtho将相机重新设置,但是得到的模型截图有了拉伸,特别在范围小的情况下更加严重,这是怎么回事,如何避免呢?
谢谢指教。

该用户从未签到

发表于 2012-11-6 07:57:06 | 显示全部楼层
相机的横纵比和viewport的横纵比 不一致 肯定会拉伸的

该用户从未签到

 楼主| 发表于 2012-11-6 10:17:53 | 显示全部楼层
在我程序中,相机初始是透视投影,相机的横纵比是1.6:1,使用setProjectMatrixAsOrtho后,记录了此时比例asP=(right-left)/(maxHet-minHet),设置viewPort(0,0,len,len/asP),但截图还是有拉伸,我的设置哪有问题呢?谢谢指教。

该用户从未签到

 楼主| 发表于 2012-11-7 10:40:24 | 显示全部楼层
是我没有说清楚问题吗?没有人关注呢!

该用户从未签到

发表于 2012-11-9 14:19:34 | 显示全部楼层
我不知道您说的拉伸是什么现象,也不知道您是如何设置正射投影的数值的

该用户从未签到

 楼主| 发表于 2012-11-13 14:09:16 | 显示全部楼层
不好意思,这几天不在公司,没及时看帖。
setProjectMatrixAsOrtho的参数是,最大高度,最小高度,近、远裁剪面都是在界面手动输入的数值,一般分别是150、-50、1.0、500。left和right的值是根据在三维场景中画出的一条线动态确定的,这两个值变化范围较大。我说的拉伸是指,比如我话100米的距离,left为-50,right为50,那么这条线中间的房子会是细长的。如果话10米得线,房子会是扁平的。这样设置left和right是因为想把截出来的图正好显示线后面的对象。
array,请问我如何正确设置参数可以达到我的目的。谢谢。

该用户从未签到

 楼主| 发表于 2012-11-15 11:28:35 | 显示全部楼层
请大家关注下。我很挠头这个问题!谢谢!

该用户从未签到

发表于 2012-11-15 13:34:11 | 显示全部楼层
您坚持用文字而不是图来表达自己的问题和需求,我只能说我很难看懂您到底在做什么

该用户从未签到

 楼主| 发表于 2012-11-16 08:55:28 | 显示全部楼层
不好意思,单位上网和拷贝东西不方便,所以就偷懒了。
如果我画的线比较长,
D:\hxh\cap\2
那么截图就是细长的
D:\hxh\cap\21

该用户从未签到

 楼主| 发表于 2012-11-16 08:58:40 | 显示全部楼层
怎么样能保持模型自身的比例呢?

该用户从未签到

 楼主| 发表于 2012-11-16 09:00:21 | 显示全部楼层
如果我画的线比较短,
D:\hxh\cap\3

那么截图就是扁平的
D:\hxh\cap\31

该用户从未签到

 楼主| 发表于 2012-11-16 09:03:34 | 显示全部楼层
看不到图啊,我上传附件吧。
麻烦array帮忙看看

画线短截图

画线短截图

画线短场景

画线短场景

画线长截图

画线长截图

画线长场景

画线长场景

该用户从未签到

发表于 2012-11-19 10:33:09 | 显示全部楼层
您的场景现在有什么问题?我看到的结果似乎是正常的

该用户从未签到

 楼主| 发表于 2012-11-19 11:16:01 | 显示全部楼层
我的场景应该没什么问题,是截图的问题。我想实现不管我如何设置setProjectMatrixAsOrtho的left和right参数,截图中的物体的比例和场景中的比例是一致的。但现在“画线短截图.jpg”中的物体显然是扁平的,而“画线长截图.jpg“中的物体是细长的(相对于场景中的物体)。谢谢解答!

该用户从未签到

 楼主| 发表于 2012-11-19 11:19:01 | 显示全部楼层
另,我在”画线短.jpg“”画线长.jpg“两图中只是想表达我画的线长不同,进而影响setProjectMatrixAsOrtho的left和right参数。而“画线短截图.jpg”和“画线长截图.jpg“是我用相机实时抓到的图。

该用户从未签到

发表于 2012-11-19 16:19:39 | 显示全部楼层
我想实现不管我如何设置setProjectMatrixAsOrtho的left和right参数,截图中的物体的比例和场景中的比例是一致的
这里是矛盾的,正射投影的时候l,r,b,t四个参数肯定是影响输出结果的,您这里其实是输出的图像分辨率不对,即,本该是200x600的内容被您render到了一张800x600的图上,改变RTT输出截图的分辨率就可以了

该用户从未签到

 楼主| 发表于 2012-11-19 16:28:00 | 显示全部楼层
RTT输出截图的分辨率的长高比由正射投影参数决定,是这个意思吧?
另外,数据截图的的背景可以是一张图片,而非纯色吗?改如何设置呢?

该用户从未签到

发表于 2012-11-22 17:07:39 | 显示全部楼层
建议您还是先渲染到背景alpha为0的buffer然后再融混,直接buffer本身带有内容的话,不同的显卡表现可能不一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表