TA的每日心情 | 开心 2021-6-6 13:38 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
问题:体绘制中需要一个前纹理(绘制立方体开启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。
我个人觉得可能是获取主相机的参数精度不够导致的这样的问题,但又不是十分确定,本人不是学习图形学的,是地理信息系统专业的,有些图形学知识不是十分了解,望各位见谅,问题不知道描述清楚没。
|
|