现在很多三维项目中,不仅仅要用到三维地形,正射影像和矢量数据,还会融合到各种三维模型,包括传统的3DMax手工建模,BIM,倾斜摄影自动建模,激光点云模型,三维地质体模型等等。

三维平台首先要做的是把这些多源数据承载进来,并且要能够流畅,稳定地运行使用。

接下来就是各种展示,应用,分析。

三维剖切,就是一种较好的展示复杂结构模型的方法,比如应用于BIM,室内精细建模,三维地质体模型等。

SkylineGlobe提供的核心示例代码如下:

//-------------------
function showCrossSection(gBoxObj) {
try {
var SGWorld = CreateSGObj();
var vertices = [];
var sectionSize = gBoxObj.Width * 5;
gLastPos = gBoxObj.Position.Copy();
var pos = gBoxObj.Position;
var planeTolarance = 100 / 100;
if (gBoxObj.Position.Pitch == 90) {
var yaw = gBoxObj.Position.Yaw - 180;
pos = pos.Move(planeTolarance, yaw - 180, 0); // make sure the cut area doesn't include the box
pos = pos.Move(gBoxObj.Width / 2, 0, -90);
pos = pos.Move(gBoxObj.Width / 2, yaw + 90, 0);
vertices[0] = pos;
pos = pos.Move(sectionSize, yaw - 180, 0);
vertices[1] = pos;
pos = pos.Move(gBoxObj.Width, yaw - 90, 0);
vertices[2] = pos;
pos = pos.Move(sectionSize, yaw, 0);
vertices[3] = pos;
vertices[4] = vertices[0].Move(gBoxObj.Width, 0, 90);
vertices[5] = vertices[1].Move(gBoxObj.Width, 0, 90);
vertices[6] = vertices[2].Move(gBoxObj.Width, 0, 90);
vertices[7] = vertices[3].Move(gBoxObj.Width, 0, 90);
}
else {
pos = pos.Move(planeTolarance, 0, 90); // make sure the cut area doesn't include the box
pos = pos.Move(gBoxObj.Width / 2, gBoxObj.Position.Yaw, 0);
pos = pos.Move(gBoxObj.Width / 2, gBoxObj.Position.Yaw + 90, 0);
vertices[0] = pos;
pos = pos.Move(gBoxObj.Width, gBoxObj.Position.Yaw - 180, 0);
vertices[1] = pos;
pos = pos.Move(gBoxObj.Width, gBoxObj.Position.Yaw - 90, 0);
vertices[2] = pos;
pos = pos.Move(gBoxObj.Width, gBoxObj.Position.Yaw, 0);
vertices[3] = pos;
vertices[4] = vertices[0].Move(sectionSize, 0, 90);
vertices[5] = vertices[1].Move(sectionSize, 0, 90);
vertices[6] = vertices[2].Move(sectionSize, 0, 90);
vertices[7] = vertices[3].Move(sectionSize, 0, 90);
} gGeometry = SGWorld.Creator.GeometryCreator.CreateLineStringGeometry(vertices);
SGWorld.Analysis.ShowCrossSectionBox(gGeometry, false, 0xffffffff);
}
catch (err) {}
} function HideCrossSectionBox()
{
if (syBoxobj != null) {
var sg = CreateSGObj();
sg.Analysis.HideCrossSectionBox();
sg.Creator.DeleteObject(syBoxobj.ID);
syBoxobj = null;
}
}

完整的功能实现代码在C:\Program Files\Skyline\TerraExplorer Pro\Tools\CrossSection这个目录里。

SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现对三维模型和地形的剖切展示的更多相关文章

  1. SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现土方量计算

    土方量计算,或者叫填挖方计算,体积计算,Skyline在很早的版本中就提供了这个的功能. 目前的软件版本,不仅仅可以对地形修改对象进行土方量计算,还可以在FLY工程中导入DEM数字高程模型数据,计算不 ...

  2. SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何正确使用三维地图控件和工程树控件

    Skyline TerraExplorer Pro目前正式发布的7.0.1&7.0.2版本,还只是64位的版本, 在Web开发的时候,如何在页面中正确嵌入三维地图控件,让一些小伙伴凌乱了. 下 ...

  3. .Net框架2.0和4.0版本对比

    .Net版本 2.0 SP2 4.0 操作系统 Windows 2000 SP4以上 Windows XP SP3以上 安装包大小 NetFx20SP2_x86.exe 23.8 MBNetFx20S ...

  4. Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

  5. 让人眼花缭乱的 RSS 版本0.90、0.91、0.92、0.93、0.94、1.0 和 2.0

    1.0的规范 http://web.resource.org/rss/1.0/spec 2.0的规范 http://cyber.law.harvard.edu/rss/rss.html 一个介绍什么是 ...

  6. selenium2.0的初步封装(java版本)

    我们都知道, 在本地创建java项目后,引入selenium-java-2.35.0.jar   selenium-support-2.35.0.jar junit-4.8.1.jar等等jar包之后 ...

  7. Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制器 完全破解+使用教程

    原文:Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制器 完全破解+使用教程 Red Gate系列之二 SQL Source Co ...

  8. LanSoEditor_advance1.8.0 视频编辑的高级版本

    ------------------------------------------2017年1月11日11:18:33------------------------------------- 我们 ...

  9. 所使用的“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”版本高于所引用的程序集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的版本

    错误信息:所使用的"EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&qu ...

随机推荐

  1. 【Node.js】一、搭建基于Express框架运行环境+更换HTML视图引擎

      1)安装express generator生成器 这个express generator生成器类似于vue-cli脚手架工具,用来创建一个后端项目,首先我们要对生成器进行全局安装,在cmd中输入下 ...

  2. 第29章 保护API - Identity Server 4 中文文档(v1.0.0)

    IdentityServer 默认以JWT(JSON Web令牌)格式发出访问令牌. 今天的每个相关平台都支持验证JWT令牌,这里可以找到一个很好的JWT库列表.热门库例如: ASP.NET Core ...

  3. IDEA写scala简单操作

    今天尝试了一下在IntelliJ IDEA里面写Scala代码,并且做到和Java代码相互调用,折腾了一下把过程记录下来. 首先需要给IntelliJ IDEA安装一下Scala的插件,在IDEA的启 ...

  4. [PHP] strpos stripos strrpos strripos的区别

    stripos — 查找字符串首次出现的位置(不区分大小写),应使用 === 运算符来测试此函数的返回值 strpos 左边开始字符出现的第一个位置,区分大小写stripos 和上面一样,不区分大小写 ...

  5. java_List集合及其实现类

    第一章:List集合_List接口介绍 1).特点       1).有序的: 2).可以存储重复元素: 3).可以通过索引访问: List<String> list = new Arra ...

  6. Acer宏碁笔记本触摸板失效解决方法

    打开windows设置,找到鼠标设置 之后,选择触摸板设置,将其开启 PS: 由于我是安装完驱动之后,才发现有这个触摸板设置的 如果找不到这个触摸板设置的哈,应该就是驱动安装完之后就有了 驱动的话去官 ...

  7. FastDfs集群docker化部署

    初识分布式文件系统FastDFS- 1.分布式与集群的区别 区别:集群是个物理形态,分布式是个工作方式.只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道:一个程序或系统,只要运行 ...

  8. IIS中虚拟目录不继承主站点web.config设置的办法(转载)

    ASP.NET提供了强大的Web.config来配置网站,一般来说一个网站只有一个根目录下的Web.config文件,有时候我们希望子目录有着不同的权限或者参数设置,则可以在相应子目录增加一个Web. ...

  9. 【.Net Core】获取绝对路径、相对路径

    一.绝对路径 1.获取应用程序运行当前目录Directory.GetCurrentDirectory(). System.IO命名空间中存在Directory类,提供了获取应用程序运行当前目录的静态方 ...

  10. 22 , CSS 构造颜色、背景与图像

    1. 设定颜色 2. 背景使用 3. 图像使用 1.设定颜色 红色的几种合法定义; #f00; #ff0000; Red; Rgb(255,0,0); Rgb(100%,0%,0%); 2.十六进制三 ...