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

建一个团购网站餐饮装修专业设计

建一个团购网站,餐饮装修专业设计,网站开发关键技术,淘宝内部优惠券网站怎么建设原理就是3dtiles里面的属性clippingPlanes 采用ClippingPlaneCollection#xff0c;构成多边形来挖洞。 其次就是xyz法向量挖洞 clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的… 原理就是3dtiles里面的属性clippingPlanes 采用ClippingPlaneCollection构成多边形来挖洞。 其次就是xyz法向量挖洞 clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的切割区域planes: [new this.ffCesium.Cesium.ClippingPlane(new this.ffCesium.Cesium.Cartesian3(0.0, 0.0, -1.0), // 法向量23.0 // 切割平面到原点的距离高度)] })以下是多边形裁剪 import * as Cesium from cesium class tileSetClipByPolygon {constructor(options) {this.tileSet options.tileSet || null //3dtiles this.originPositions options.originPositions || [] //点this.unionClippingRegions !options.unionClippingRegions ? options.unionClippingRegions : truethis.enabled !options.enabled ? options.enabled : truethis.edgeColor options.edgeColor || Cesium.Color.WHITEthis.edgeWidth options.edgeWidth || 0.0}isClockwise(polygon) {var area 0var length polygon.lengthfor (var i 0; i length; i) {var j (i 1) % lengtharea polygon[i][0] * polygon[j][1] - polygon[j][0] * polygon[i][1]}return area 0}getInverseTransform() {let transformlet tmp this.tileSet.root.transformif ((tmp tmp.equals(Cesium.Matrix4.IDENTITY)) || !tmp) {// 如果root.transform不存在则3DTiles的原点变成了boundingSphere.centertransform Cesium.Transforms.eastNorthUpToFixedFrame(this.tileSet.boundingSphere.center)} else {transform Cesium.Matrix4.fromArray(this.tileSet.root.transform)}return Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4())}clippingByPositions(clipping) {// debuggerconsole.log(this.tileSet, this.tileSet)this.tileSet.clippingPlanes nullconst Cartesian3 Cesium.Cartesian3const pointsLength clipping.lengthconst clockwise this.isClockwise(clipping)//所有的裁切面const clippingPlanes []let positionsif (clockwise) {//如果为逆则需要对数组取反positions clipping.reverse()} else {positions clipping}positions clippingconst inverseTransform this.getInverseTransform()for (let i 0; i pointsLength; i) {const nextIndex (i 1) % pointsLengthconst next Cesium.Matrix4.multiplyByPoint(inverseTransform, Cesium.Cartesian3.fromDegrees(positions[nextIndex][0], positions[nextIndex][1]), new Cesium.Cartesian3())const now Cesium.Matrix4.multiplyByPoint(inverseTransform, Cesium.Cartesian3.fromDegrees(positions[i][0], positions[i][1]), new Cesium.Cartesian3())// 定义一个垂直向上的向量uplet up new Cesium.Cartesian3(0, 0, 10)//得到指向下一个点的向量let right Cartesian3.subtract(next, now, new Cartesian3())right Cartesian3.normalize(right, right)let normal Cartesian3.cross(right, up, new Cartesian3())Cartesian3.normalize(normal, normal)//将法向量进行反向if (this.unionClippingRegions) {Cartesian3.negate(normal, normal)}//由于已经获得了法向量和过平面的一点因此可以直接构造Plane,并进一步构造ClippingPlanelet planeTmp Cesium.Plane.fromPointNormal(now, normal)const clipPlane Cesium.ClippingPlane.fromPlane(planeTmp)clippingPlanes.push(clipPlane)}let the thisconst clipPlanes new Cesium.ClippingPlaneCollection({planes: clippingPlanes,edgeWidth: the.edgeColor,edgeColor: the.edgeColor,enabled: the.enabled,unionClippingRegions: the.unionClippingRegions})console.log(clipPlanes, clipPlanes)this.tileSet.clippingPlanes clipPlanes}removeTilesetClip() {this.tileSet.clippingPlanes.enabled false} } export default tileSetClipByPolygon使用 this.CeiumPolygonClipA new CeiumPolygonClip({tileSet: photographyTileset.value,originPositions: clipping,unionClippingRegions: false})this.CeiumPolygonClipA.clippingByPositions(clipping) 在 CesiumJS 中ClippingPlane 和 ClippingPlaneCollection 通常用于控制哪些部分的场景或模型是可见的。通过切割面ClippingPlanes你可以裁剪或隐藏指定区域的内容。clippingPlanes 主要应用于以下几种对象 1. 3D Tiles 3D Tiles 是一种用于存储和传输大规模 3D 场景的格式它可以通过 clippingPlanes 进行裁剪。这是一个非常常见的应用尤其是在城市建模和大规模场景可视化中。 clippingPlanes 可以直接应用于 Cesium3DTileset 对象以裁剪掉 3D Tiles 模型的一部分。 示例 const tileset viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: path/to/your/3dtiles/tileset.json,clippingPlanes: new Cesium.ClippingPlaneCollection({planes: [new Cesium.ClippingPlane(Cesium.Cartesian3.UNIT_Z, 100.0)]}) }));在这个例子中Cesium3DTileset 会被切割只显示离 Z 轴 100 单位以内的区域。 2. Primitive原始几何体 clippingPlanes 也可以用于 Primitive 对象如几何体、模型等这是最基础的 3D 对象类型。通过将 ClippingPlaneCollection 赋值给 Primitive可以在渲染时裁剪它的几何体。 这种方法适用于自定义的几何体或其他静态几何体例如球体、立方体等。 示例 const sphereGeometry new Cesium.SphereGeometry({radius: 100.0 });const sphere new Cesium.Primitive({geometryInstances: new Cesium.GeometryInstance({geometry: sphereGeometry,modelMatrix: Cesium.Matrix4.fromTranslation(new Cesium.Cartesian3(0.0, 0.0, 0.0)),}),appearance: new Cesium.MaterialAppearance({material: Cesium.Material.fromType(Color, {color: Cesium.Color.RED})}),clippingPlanes: new Cesium.ClippingPlaneCollection({planes: [new Cesium.ClippingPlane(Cesium.Cartesian3.UNIT_Z, 50.0) // 裁剪半径为 50 的球体]}) });viewer.scene.primitives.add(sphere);在这个例子中创建了一个球体并将其裁剪裁剪面距离原点 50 单位隐藏球体超过该高度的部分。 3. Models3D 模型 ClippingPlanes 也可以应用于 3D 模型如 glTF 模型。在 Cesium.Model 中clippingPlanes 可以用来裁剪模型的一部分。 示例 const model viewer.scene.primitives.add(Cesium.Model.fromGltf({url: path/to/your/model.glb,clippingPlanes: new Cesium.ClippingPlaneCollection({planes: [new Cesium.ClippingPlane(Cesium.Cartesian3.UNIT_Z, 50.0)]}) }));这段代码将对加载的 glTF 模型应用切割面裁剪掉离 Z 轴 50 单位以上的部分。 4. Terrain地形 对于 Cesium 中的地形数据例如使用 3D Tiles 数据源的地形可以通过切割面进行裁剪。地形通常是通过 Cesium.CesiumTerrainProvider 加载的而切割面可以用来限制地形的显示。 这种应用场景通常适用于大规模的地形可视化用户可以通过切割面查看地形的特定部分或从不同的切割角度进行分析。 5. Imagery影像图层 clippingPlanes 还可以用于影像图层特别是当你想要切割或限制影像图层的显示时。通过使用 clippingPlanes你可以将某些区域的影像数据裁剪掉以使其他数据更加突出。 示例 const imageryLayer viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({url : https://your-imagery-url/{z}/{x}/{y}.png }));imageryLayer.clippingPlanes new Cesium.ClippingPlaneCollection({planes: [new Cesium.ClippingPlane(Cesium.Cartesian3.UNIT_Z, 100.0)] });在这个例子中影像图层会被切割只显示离 Z 轴 100 单位以内的部分。 其他可能的应用场景 Skybox天空盒 clippingPlanes 也可用于裁剪 天空盒这在某些需要动态裁剪天空内容的应用中有用。 Custom Primitives自定义原始几何体 如果你自己创建了自定义几何体可以通过 clippingPlanes 使其进行裁剪减少计算负担或者实现特定的可视化效果。 Ground Clipping (地面裁剪) 对于需要动态控制地面显示的场景clippingPlanes 可以用来裁剪地面或者将其与其他场景元素进行交互。 总结 ClippingPlanes 在 Cesium 中是一个非常灵活的工具可以应用于以下对象 3D Tiles如城市模型Primitives如几何体Models如 glTF 模型Terrain地形Imagery影像图层Skybox天空盒Custom Primitives自定义几何体 这些对象可以通过 ClippingPlaneCollection 结合多个切割面来实现不同的裁剪效果从而动态地控制场景中的可见部分。
http://www.hkea.cn/news/14394437/

相关文章:

  • 郑州网络科技公司有哪些网站移动端优化的重点有哪些
  • 网站建设考试样题及答案佛山建设局官方网站
  • 永州做网站公司深圳龙华天气
  • 目前专业做水果的网站图片识别 在线百度识图
  • 网站建设公司何去何从旅游最适合的城市
  • 北京建设网网站知名的网站建设公司排名
  • 丰城市建设局网站北京企业网站开发公司哪家好
  • 东营科技官方网站wordpress支持移动
  • 做电影网站选服务器手机上做整蛊网站
  • phpmysql网站开发项目式教程wordpress 内存
  • 网站开发 前端vue 后端c专门做女性产品的网站
  • wordpress前台显示中文怎么办seo托管服务
  • 做网站的没有进项票怎么办秦皇岛市建设路小学网站
  • 仿 手机 网站模板html网站如何做百度推广方案
  • 方一凡和磊儿做家教的网站电商网站的建设动态
  • 无锡建设银行网站最优惠的赣州网站建设
  • 邢台网站制作那家便宜网站建设实施背景分析
  • 烟台网站设计单位柬埔寨做网站网站
  • 化州网站建设360建筑网电脑版
  • 广州个性化网站开发做网站被骗
  • 怎么搭建一个简单的网站三亚海棠警方拘留3名涉黄人员
  • 合山市网站湘潭网站建设 干净磐石网络
  • 山西省吕梁市邮政编码百度网站优化排名
  • 张家界网站建设企业sea wordpress
  • 山东中讯做网站怎么样动态表白网站制作
  • 网站seo怎样做成都旅游几月份最佳时间
  • 济南企业网站设计望京 网站建设
  • 松江信息科技有限公司网站网站的设计与维护摘要
  • 襄樊网站网站建设国家信用信息企业公示系统官网
  • 宣传类的网站有哪些专题制作 wordpress