当前位置: 首页 > wzjs >正文

官方网站下载免费软件大兴企业官网网站建设咨询

官方网站下载免费软件,大兴企业官网网站建设咨询,都有哪些网站,为什么要做响应式网站大坐标处理 CesiumUE总结 Cesium 首先想到的就是查看Cesium的代码看看他是怎么解决的对吧 这里有个最简代码片段,我们顺着往里找 * void main()* {* vec4 p czm_translateRelativeToEye(positionHigh, positionLow);* gl_Position czm_modelViewProjectionR…

大坐标处理

  • Cesium
  • UE
  • 总结

Cesium

首先想到的就是查看Cesium的代码看看他是怎么解决的对吧
这里有个最简代码片段,我们顺着往里找

* void main()* {*   vec4 p = czm_translateRelativeToEye(positionHigh, positionLow);*   gl_Position = czm_modelViewProjectionRelativeToEye * p;* }
vec4 czm_translateRelativeToEye(vec3 high, vec3 low)
{vec3 highDifference = high - czm_encodedCameraPositionMCHigh;// This check handles the case when NaN values have gotten into `highDifference`.// Such a thing could happen on devices running iOS.if (length(highDifference) == 0.0) {  highDifference = vec3(0);  }vec3 lowDifference = low - czm_encodedCameraPositionMCLow;return vec4(highDifference + lowDifference, 1.0);
}

这里可以看见他把camera的坐标也传进来了,然后high low分别和camera的high low减一下再合并到一起,就得到了相对相机的坐标系

也就是说,他不仅把坐标拆成了high low,还减去了相机坐标,也就是减去相机之后的坐标还拆,这确实是能支持很大的数据了

czm_modelViewProjectionRelativeToEye 这个值的创建就是普通的modelViewMatirx只是把translate清空了,如下代码

czm_modelViewRelativeToEye: new AutomaticUniform({size: 1,datatype: WebGLConstants.FLOAT_MAT4,getValue: function (uniformState) {return uniformState.modelViewRelativeToEye;},
}),modelViewRelativeToEye: {get: function () {cleanModelViewRelativeToEye(this);return this._modelViewRelativeToEye;},}
function cleanModelViewRelativeToEye(uniformState) {if (uniformState._modelViewRelativeToEyeDirty) {uniformState._modelViewRelativeToEyeDirty = false;const mv = uniformState.modelView;const mvRte = uniformState._modelViewRelativeToEye;mvRte[0] = mv[0];mvRte[1] = mv[1];mvRte[2] = mv[2];mvRte[3] = mv[3];mvRte[4] = mv[4];mvRte[5] = mv[5];mvRte[6] = mv[6];mvRte[7] = mv[7];mvRte[8] = mv[8];mvRte[9] = mv[9];mvRte[10] = mv[10];mvRte[11] = mv[11];mvRte[12] = 0.0;mvRte[13] = 0.0;mvRte[14] = 0.0;mvRte[15] = mv[15];}
}

modelViewProjectionRelativeToEye只是一并在CPU做完几个乘法

modelViewProjectionRelativeToEye: {get: function () {cleanModelViewProjectionRelativeToEye(this);return this._modelViewProjectionRelativeToEye;},
},
function cleanModelViewProjectionRelativeToEye(uniformState) {if (uniformState._modelViewProjectionRelativeToEyeDirty) {uniformState._modelViewProjectionRelativeToEyeDirty = false;Matrix4.multiply(uniformState._projection,uniformState.modelViewRelativeToEye,uniformState._modelViewProjectionRelativeToEye,);}
}

这个是high low的解释
https://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm
这是Cesium里的实现

EncodedCartesian3.encode = function (value, result) {//>>includeStart('debug', pragmas.debug);Check.typeOf.number("value", value);//>>includeEnd('debug');if (!defined(result)) {result = {high: 0.0,low: 0.0,};}let doubleHigh;if (value >= 0.0) {doubleHigh = Math.floor(value / 65536.0) * 65536.0;result.high = doubleHigh;result.low = value - doubleHigh;} else {doubleHigh = Math.floor(-value / 65536.0) * 65536.0;result.high = -doubleHigh;result.low = value + doubleHigh;}return result;
};

这是CPP代码

void CDoubleToTwoFloats::Convert(double doubleValue,float& floatHigh, float& floatLow)
{if (doubleValue >= 0.0){double doubleHigh = floor(doubleValue / 65536.0) * 65536.0;floatHigh = (float)doubleHigh;floatLow = (float)(doubleValue - doubleHigh);}else{double doubleHigh = floor(-doubleValue / 65536.0) * 65536.0;floatHigh = (float)-doubleHigh;floatLow = (float)(doubleValue + doubleHigh);}
}

UE

https://dev.epicgames.com/documentation/en-us/unreal-engine/large-world-coordinates-rendering-in-unreal-engine-5
这里是UE的文档
之前就听说UE有这个支持,好奇他怎么搞的
这里是文档里最后一段话,看起来也是类似Cesium的解法
不过他还有一个空间,是纠正了旋转不只是减去offset,建议能做就做,那估计就是没做:)

FDFScalar(double Input)
{float High = (float)Input;float  Low = (float)(Input - High);
}

总结

这种做法每个坐标都需要存储两倍大小的坐标信息high low两个vector3,但是似乎如果要支持double的话,没有其他好法子


文章转载自:

http://jNYqmCmT.msLsn.cn
http://VZlMCV8u.msLsn.cn
http://BUaFqmDo.msLsn.cn
http://BwXykKFN.msLsn.cn
http://j6XMVrDt.msLsn.cn
http://klzu1rZ1.msLsn.cn
http://4kzgOkIT.msLsn.cn
http://XEnU5Dk2.msLsn.cn
http://OCastuvA.msLsn.cn
http://SJodKXv0.msLsn.cn
http://d3YZUM7m.msLsn.cn
http://Fd0rXrX1.msLsn.cn
http://EUtWXBJF.msLsn.cn
http://VOmJJuTv.msLsn.cn
http://PXUroPYE.msLsn.cn
http://vEZgaOTU.msLsn.cn
http://J4RICG8G.msLsn.cn
http://MP9awVzB.msLsn.cn
http://KeMmjM0o.msLsn.cn
http://sMmnZJOx.msLsn.cn
http://V4OtwmFA.msLsn.cn
http://3n8M6ifB.msLsn.cn
http://mZgeqWRG.msLsn.cn
http://o6JxTfUx.msLsn.cn
http://Gg0QaIbh.msLsn.cn
http://PZoKobfG.msLsn.cn
http://ro8S52rf.msLsn.cn
http://B9IpIs5p.msLsn.cn
http://yxnpc3iX.msLsn.cn
http://QGc2vWK9.msLsn.cn
http://www.dtcms.com/wzjs/676534.html

相关文章:

  • 门户网站建设招标书wordpress 人体时钟
  • 广西建设厅网站广西模板厂集中在哪里
  • 没注册可以做网站吗Orchard与wordpress
  • 网站建设方面的课程做一电影网站怎么赚钱
  • sns有哪些著名的网站有哪些目前还能去北京吗
  • 网页制作步骤主要有哪些寰宇seo
  • 本地化吃喝玩乐平台网站可以做吗自己做社交网站吗
  • 现在找个网站这么难的吗wordpress演示站功能
  • 国展做网站的公司北碚网站建设哪家好
  • 中小企业网站模板莆田seo接单
  • 上海广告公司网站制作移动网站开发工具
  • 太原做网站哪家公司好烟台网站开发技术
  • 备案需要写网站建设方案书要建设一个网站需要什么
  • 描述网站建设规范方法网络规划与设计题库
  • 网站开发青岛商城网站开发
  • 在线购物网站的设计做界面网站用什么语言好
  • 做洗化的网站学校网站源码wordpress
  • 平台网站建设ppt模板通信建设资质管理信息系统网站
  • 网站开发公司上海展示型企业网站开发
  • 建立网站邮箱受欢迎的广州网站设计
  • 新洲区城乡建设局网站青岛物流公司网站建设
  • 哪个商城网站建设好品牌设计属于平面设计吗
  • 网站建设 深圳宝安加入网站帮忙做网站
  • 北京著名网站设计公司注册了域名 网站怎么做
  • 搜狗竞价绑定网站要求php网站开发教程下载
  • word如何做网站wordpress oa 插件
  • 光谷中心城建设投资有限公司网站wordpress拖动实现
  • 怎么建立自己的网站平台多少钱企业网站托管公司
  • 免费注册域名网站百度代理
  • 军事新闻2022网络公司优化关键词