首页 / 浏览问题 / 桌面GIS / 问题详情
模型的骨架转点
6EXP 2022年06月01日
SuperMap iDesktopX 11i,iObject java.

需求是将立体的三维模型转换成三维体,首先要提取骨架的顶点。问题是:

1、Skeleton类的getVertices方法,返回的是一维数组,是否是每个点的xyz坐标按顺序放置的?

2、这些顶点的坐标都是相对坐标,单位应该都是米,那么是以模型的哪个点为参考的?用哪个类的哪个方法获取呢?

3、模型是地理坐标系,需要转换地理坐标?

请问有人有现成的范例吗,求教!

1个回答

您好,

1.顺序是xyz

2.是模型原点,不同模型的原点是不一样的,具体看建模的元点设置,底部中心,模型中心,顶部中心或者任意位置都是可能的。

超图iDesktop或者iobject建模的话,没有额外设置模型原点在底部面中心,其它软件就要看建模是的模型中心原点拖在什么位置了,

这个需要您确认您的模型情况。‘

如果再建模软件没有这个坐标记录的话,是没法得到的,因为对于这个数据本身来说,顶点之间相对关系就可以构建出模型体了,

构建出来后将这个模型的0,0,0点挪移到地理数据坐标值上。这个0,0,0原点位于这个模型的哪个位置并不属于模型的空间信息,

所有没有什么接口可以获得的,需要模型本身的额外属性信息来记录。

如上三个外观完全一样的圆锥体,模型中心的坐标轴心完全不同,三个对于模型数据来说都是正常的,

但是这个三个轴心位于模型的什么位置那个点,模型数据本身是没有记录的也不需要记录的,因此也没有说可以通过哪个接口可以获得,

如果有这个属性只能是建模时认为记录的。

当然这三个模型因为中心不同在gis软件或者建模软件中给他们相同的的坐标,我们肉眼可见的圆锥实体部分的位置是不一样的。

所以这些相对坐标是模型的哪个点为参考,只能您根据自己模型的情况自行来具体看。

如图中您也可以看出来对于模型来说,每个模型都是自己的参考系,只有模型的定位坐标是世界坐标或者场景坐标的。

如果您想搞清楚明白这些逻辑关系,建议您是通过建模软件实操或者建模原理学习了解一下原理逻辑关系,

就能比较清楚的想明白您的业务需求怎么来实现。这些算是您的业务逻辑设计实现范畴的。

坐标问题,相对来说模型轴心零点与模型定位地理坐标,即直接相加。

希望可以帮助到你。

于丁
1
9,653EXP 2022年06月01日

您好,谢谢!该问题已解决,我找到相对点是SkeletonBoundCenter,但这只是一个模型的。对于多个模型来说,还需要用到Geometry.getPosition。总之就是这两个点。

我是在平面坐标系下弄的。不出所料,现在又遇到了投影的问题。如您有空,麻烦移步至这里:

http://ask.supermap.com/108890

另外还想请教一个问题:由骨架提取出来的点集没有顺序。这样的话,三维点构建三维线就会出错。这是否与Skeleton对象的getVertexIndexes方法有关?这个方法怎么用呢?
...