TA的每日心情 | 开心 2020-1-14 14:24 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
本帖最后由 slxcainiao 于 2014-7-9 16:47 编辑
问题描述:
有一些数据,包括地形数据和自定义的建筑物模型数据。
地形数据利用osgdem生成了分层文件。
建筑物模型数据利用osg来构建Geometry,之后利用 osgDB::writeNodeFile 来输出数据到osg文件。
其中 存储顶点的数据类型有:
osg::ref_ptr<osg::Vec3Array> vc=new osg::Vec3Array();32位
osg::ref_ptr<osg::Vec3dArray> vc=new osg::Vec3dArray();64位
之前使用 Vec3dArray 类型,发现Android手机端无法加载文件。原因是Android 底层 Opengl ES 暂时不支持64位,故无法识别 Vec3dArray。
之后将数据类型修改为 Vec3Array,osgDB::writeNodeFile输出的文件能够被手机加载并识别。
但是我定义的顶点的坐标被格式化了。
osg::ref_ptr<osg::Vec3dArray> vc=new osg::Vec3dArray();64位
VertexArray Vec3dArray 6
{
282618.53125 4213654 150
282682.59375 4213421.5 150
282879.0625 4213654 150
282879.0625 4213654 150
282682.59375 4213421.5 150
282880.15625 4213421.5 150
}
坐标值基本接近自定义的原始数值;
=============================================
osg::ref_ptr<osg::Vec3Array> vc=new osg::Vec3Array();32位
VertexArray Vec3Array 6
{
282619 4.21365e+006 150
282683 4.21342e+006 150
282879 4.21365e+006 150
282879 4.21365e+006 150
282683 4.21342e+006 150
282880 4.21342e+006 150
}
很明显,数据被格式化过,而且误差很大了。
=================================================
之后,尝试先进行 MatrixTransform ,将场景进行平移,使场景中心点作为(0,0,0),以期望减小坐标值的长度,之后将geode作为child加载到 MatrixTransform 下。
输出osg文件数据如下:
MatrixTransform {
UniqueID MatrixTransform_0
nodeMask 0xffffffff
cullingActive TRUE
referenceFrame RELATIVE
Matrix {
1 0 0 0
0 1 0 0
0 0 1 0
282376 4.21388e+006 0 1
}
。。。。。。。。。。。。。
VertexArray Vec3Array 6
{
242.701 -227.989 150
306.764 -460.489 150
503.233 -227.989 150
503.233 -227.989 150
306.764 -460.489 150
504.326 -460.489 150
}
================================================
上述相关输入的原始数据:
MatrixTransform osg::Vec3d trans=osg::Vec3d(282375.83000000002,4213881.9890000001,0.0);
Vec3dArray的6个值:
[0] { _xCoor=282618.53125000000 _yCoor=4213654.0000000000 _zCoor=150.00000000000000 }
[1] { _xCoor=282682.59375000000 _yCoor=4213421.5000000000 _zCoor=150.00000000000000 }
[2] { _xCoor=282879.06250000000 _yCoor=4213654.0000000000 _zCoor=150.00000000000000 }
[3] { _xCoor=282879.06250000000 _yCoor=4213654.0000000000 _zCoor=150.00000000000000 }
[4] { _xCoor=282682.59375000000 _yCoor=4213421.5000000000 _zCoor=150.00000000000000 }
[5] { _xCoor=282880.15625000000 _yCoor=4213421.5000000000 _zCoor=150.00000000000000 }
场景范围:
XMax 282875.83 double
XMin 281875.83 double
YMax 4214381.989 double
YMin 4213381.989 double
====================================================================
地形利用osgdem生成,而他输出的文件中的数据看起来保存的比较完整:
PagedLOD {
nodeMask 0xffffffff
cullingActive TRUE
Center 282875.84375 4213882 67.206787109375
Radius -1
RangeMode DISTANCE_FROM_EYE_POINT
.....................................
高度
Heights
{
69.5078811645508 69.2155151367188 68.8520278930664 68.6271667480469 68.7114410400391 69.0150146484375 69.3222427368164 69.5664978027344 69.9128265380859 70.3904647827148
......................................
我定义建筑物模型使用的是:wgs84 utm 50区
求教大神:有没有好的处理方式来解决上述问题。
谢谢。
|
|