Cesium 转换到视图空间的方法

Cesium 转换到视图空间的方法

方法1-从屏幕空间

// depth: [0, 1]
vec4 windowToEye(in vec2 uv, in float depth){
  vec4 posInCamera = czm_windowToEyeCoordinates(gl_FragCoord.xy, depth);
  posInCamera = posInCamera / posInCamera.w;
  return posInCamera;
}

vec4 originDepth = texture(depthTexture, v_textureCoordinates);
vec4 posInCamera = windowToEye(v_textureCoordinates, originDepth.r);
方法2-从剪裁空间
float getClipDepth(in vec4 depth){
  float z_window = czm_unpackDepth(depth);
  z_window = czm_reverseLogDepth(z_window);
  float n_range = czm_depthRange.near;
  float f_range = czm_depthRange.far;
  return (2.0 * z_window - n_range - f_range) / (f_range - n_range);
}

// depth: [-1, 1]
vec4 clipToEye(in vec2 uv, in float depth){
  vec2 xy = vec2((uv.x * 2.0 - 1.0),(uv.y * 2.0 - 1.0));
  vec4 posInCamera =czm_inverseProjection * vec4(xy, depth, 1.0);
  posInCamera =posInCamera / posInCamera.w;
  return posInCamera;
}

vec4 originDepth = texture(depthTexture, v_textureCoordinates);
float depth = getClipDepth(originDepth);
vec4 posInCamera = clipToEye(v_textureCoordinates, depth);
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cesium高程转换是指将地球表面上的高程数据转换Cesium地球上的高程数据。Cesium是一种基于Web的地理信息系统( GIS )软件平台,可以用于浏览、可视化和分析地球表面的各种地理数据。 在进行Cesium高程转换时,首先需要获取地球表面的高程数据。常用的高程数据包括数字高程模型( DEM )和激光雷达(LIDAR)数据。DEM是由航空或卫星传感器获取的地形数据集,可以描述地球表面的高低起伏。LIDAR则是通过激光束扫描地面,测量地球表面的高程信息。 一旦获得了地球表面的高程数据,就可以使用Cesium的高程转换工具来将其转换Cesium地球上的高程数据。这个过程包括两个主要步骤:插值和投影。 插值是将地球表面上的离散高程数据通过某种插值算法,生成一个连续的高程模型。常用的插值算法包括三角网格插值和反距离插值等。 投影是将高程模型从地球坐标系转换Cesium的场景坐标系。在这个过程中,需要考虑地球的椭球体形状、坐标系的转换和数据的缩放等因素。 一旦完成了高程转换,就可以将转换后的高程数据加载到Cesium平台上,实现对地球表面高程的可视化和分析。用户可以通过各种方式,如渲染三维地形、生成等高线图或进行洪水模拟等,来使用这些高程数据。 总之,Cesium高程转换是将地球表面上的高程数据转换Cesium地球上的高程数据的过程,它能够为地理信息系统的可视化和分析提供更加精确和详细的高程数据支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值