查看: 1054|回复: 2

体绘制的前、后两个纹理不能严格匹配

[复制链接]
  • TA的每日心情
    开心
    2021-6-6 13:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2013-9-26 08:45:52 | 显示全部楼层 |阅读模式
    问题:体绘制中需要一个前纹理(绘制立方体开启BACKFACE裁剪后得到的纹理)、一个后纹理(绘制立方体开启FRONTFACE裁剪后得到的纹理),但是两个纹理不能严格匹配,当其进行大尺度平移(如地球半径量级),两个纹理就出现偏差。

    具体实现过程:1、使用CreateCube()函数(自建函数,用于绘制一个归一化的立方体)创建一个立方体;
                             2、将CreateCube()得到的节点添加到一个MatrixTransform节点下,并将MatrixTransform节点添加到场景根节点下,并且MatrixTransform节点启用BACKFACE裁剪,从而可以得到一张前纹理;
                             3、创建一个Camera,并且添加到场景根节点下,此相机启用FrameBuffer绘制,将CreateCube()得到的节点添加到一个新的MatrixTransform节点下(启用FRONTFACE裁剪),并将该MatrixTransform节点添加到Camera相机中,并建立一个更新回调,每帧绘制之前获取主相机的投影参数、视口参数,使用获取的参数设置FrameBuffer相机,保证此相机与主相机中的立方体绘制在空间中同一位置、并且在屏幕上位于同一位置;
                            4、第二步得到立方体前纹理,第三步得到立方体后纹理,这样可以用于体绘制中raycast计算,从而得到体绘制效果。


    存在的问题:当两个MatrixTransform进行同一变换时,如果变换尺度小,如平移(1000.0,1000.0,10.0)两个纹理完美匹配,然而当变换尺度大,如(6378000.0,6388000.0,0.0)两张纹理就出现偏差,不能完全匹配,导致体绘制效果错乱。


    有没有遇到过这样类似的问题,麻烦你说下你的解决方法,谢谢了,我的QQ364757525。
    我个人觉得可能是获取主相机的参数精度不够导致的这样的问题,但又不是十分确定,本人不是学习图形学的,是地理信息系统专业的,有些图形学知识不是十分了解,望各位见谅,问题不知道描述清楚没。


    该用户从未签到

    发表于 2013-9-26 09:58:12 | 显示全部楼层
    大数据,你就要考虑数据的类型定义,和精度的问题!
  • TA的每日心情
    开心
    2021-6-6 13:38
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2013-9-26 10:39:14 | 显示全部楼层
    哦,我现在还在找是不是因为获取主相机参数精度造成的,谢谢你
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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