SuperMap Hi-Fi 3D SDK for Unity矢量面贴地贴模型

news2024/9/29 23:31:57

作者:kele

一、背景

SuperMap Hi-Fi 3D SDK(2023 11i) for Unity推出新功能:支持矢量面同时贴地形图层和模型图层,并且能实现数据点击查询属性、更改初始填充颜色、初始边框线颜色、选中填充颜色、选中边框线颜色、控制显示高度等效果。

二、功能介绍

SuperMap Hi-Fi 3D SDK(2023 11i) for Unity支持矢量面叠加模型缓存、地形使用,并且支持设置矢量面填充颜色、线框颜色、选中颜色、可见高度等参数
在这里插入图片描述

三、实现步骤

1、制作矢量面数据

准备好矢量面数据,使用 SuperMap iDesktopX 桌面软件将数据添加到场景中,通过【风格设置】将数据前景色、线颜色都设置成白色
在这里插入图片描述
保存场景,对场景右键【生成场景瓦片】,S3M版本选择【S3M 1.0】格式,得到瓦片数据

在这里插入图片描述

2、Unity中添加矢量面瓦片数据

选择矢量面配置文件(*.scp)后,点击【添加图层】
在这里插入图片描述
之后以同样的方式,添加一份倾斜摄影瓦片数据,运行场景
在这里插入图片描述
可以看到,倾斜摄影瓦片和矢量面瓦片都添加到场景中了,但是矢量面瓦片并没有贴在模型上,也没有初始化颜色,下面咱们通过代码来控制矢量面的初始颜色、选中颜色,以及显示高度。

3、设置矢量面显示风格、贴模型对象、贴地

找到并打开 SupermapGIS 脚本,在 SceneAddLayer 方法中插入以下代码:

 	//设置矢量面数据  贴倾斜  
    var s3mLayer = info.Layer as Layer3DS3MFile;
    if (s3mLayer.DataType == S3MType.ObliquePhotogrammetry3DModel)
        s3mLayer.ClampVector = true;

   //设置矢量面数据填充颜色、边框颜色、选中风格
   if (s3mLayer != null && s3mLayer.Type == Layer3DType.S3M && s3mLayer.Name.Contains("社"))
   {
        //设置矢量面初始风格:面颜色、半透;贴地矢量面的边框颜色;执行贴地
        Style3D style = s3mLayer.Style;
        style.FillColor = new Color(02f, 0.4f, 0.1f, 0.5f); //蓝色
        style.LineColor = new Color(0.0f, 1.0f, 0.0f, 1.0f);//绿框
        style.AltitudeMode = AltitudeMode.ClampToGround;//贴地
        s3mLayer.Style = style;
        //设置选中风格
        Style3D selectstyle = s3mLayer.SelectStyle;
        selectstyle.FillColor = new Color(0.0f, 0.0f, 1.0f, 0.5f);   //蓝色
        selectstyle.AltitudeMode = AltitudeMode.ClampToGround;
        s3mLayer.SelectStyle = selectstyle;
        s3mLayer.UpdateData();
   }

在这里插入图片描述

4、根据相机高度,控制矢量面显隐

找到并打开 SupermapGIS 脚本,在 PlayingUpdate 方法中插入以下代码:

	//当相机高度小于5000米时,显示矢量面,反之隐藏
    if (came.Altitude < 5000)
    {
    	for (int i = 0; i < Realspace.SceneControl.Scene.Layers.Count; i++)
        {
        	var layer = Realspace.SceneControl.Scene.Layers[i];
            if (layer.Type == Layer3DType.S3M && layer.Name.Contains("社")) //找到社区矢量面图层
            {
            	if (layer.IsVisible != true)
                {
                	layer.IsVisible = true; //矢量面图层可见性
                }
            }
            else if (layer.Type == Layer3DType.S3M && layer.Name.Contains("Config")) //找到倾斜摄影图层
            {
            	layer.IsVisible = true; //倾斜摄影图层可见性
            }
            else if (layer.Type == Layer3DType.S3M)
            {
            	if (layer.IsVisible == true)
                {
                	layer.IsVisible = false; //隐藏其它矢量面图层
                }
            }
        }
	}

5、查询属性

打开属性查询功能,通过鼠标点击矢量面进行属性查询
在这里插入图片描述

四、最终效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1333438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子科大软件系统架构设计——软件建模详细设计

文章目录 软件建模详细设计概述软件建模详细设计目标软件建模详细设计原则开闭原则里氏 (Liskov) 替换原则依赖倒置原则接口分离原则单一职责原则最少知识原则&#xff08;迪米特法则&#xff09;高内聚原则松耦合原则可重用原则 软件建模详细设计内容 UML 软件静态结构视图建模…

CSS3:绘制多边形

clip-path&#xff1a;该属性使用裁剪方式创建元素的可显示区域&#xff0c;区域内的显示&#xff0c;区域外的不显示。 构建一个三角形 <div class"mybox"></div><style>.mybox {width: 100px;height: 100px;background-color: yellow;clip-path…

Openai的openai新版本调用方式

最近大家有没有发现Openai的openai已经更新到1.6.1了,而且API的调用方式发生了巨大的变化,下面来看看openai新的调用方式吧。 欢迎关注公众号 module ‘openai’ has no attribute ChatCompletion. 提示openai的版本过低。(pip install -U openai) 1. Chat API from openai…

Spark Shell的简单使用

简介 Spark shell是一个特别适合快速开发Spark原型程序的工具&#xff0c;可以帮助我们熟悉Scala语言。即使你对Scala不熟悉&#xff0c;仍然可以使用这个工具。Spark shell使得用户可以和Spark集群交互&#xff0c;提交查询&#xff0c;这便于调试&#xff0c;也便于初学者使用…

【Java中创建对象的方式有哪些?】

✅Java中创建对象的方式有哪些&#xff1f; ✅使用New关键字✅使用反射机制✅使用clone方法✅使用反序列化✅使用方法句柄✅ 使用Unsafe分配内存 ✅使用New关键字 这是我们最常见的也是最简单的创建对象的方式&#xff0c;通过这种方式我们还可以调用任意的构造函数 (无参的和有…

Spring Boot学习随笔- 第一个Thymeleaf应用(基础语法th:,request、session作用域取值)

学习视频&#xff1a;【编程不良人】2021年SpringBoot最新最全教程 第十五章、Thymeleaf Thymeleaf是一种现代化的服务器端Java模板引擎&#xff0c;专门用于Web和独立环境。Thymeleaf在有网络和无网络的环境下皆可运行&#xff0c;即可以让美工在浏览器查看页面的静态效果&am…

数组元素反序

和前面的字符串逆向输出有异曲同工之妙 第一位和最后一位交换位置&#xff0c;然后用比大小循环 那么接下来修改一下这个程序&#xff0c;我们接下来解释一下p的概念 画图解释&#xff1a; 在最前面的 定义的时候&#xff0c;我们将p&#xff08;0&#xff09;定义在了1上&…

Ps:直方图 - 统计数据

使用扩展视图或全部通道视图时&#xff0c;直方图 Histogram的下方会显示一组实时统计数据。 提示&#xff1a; 要在直方图面板控制菜单中勾选&#xff08;默认&#xff09;“显示统计数据” Show Statistics。 源 Source --整个图像 Entire Image 默认选项。显示整个图像&am…

Spring 依赖注入概述、使用以及原理解析

前言 源码在我github的guide-spring仓库中&#xff0c;可以克隆下来 直接执行。 我们本文主要来介绍依赖注入的使用示例及其原理 依赖注入 什么是依赖注入 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种设计模式&#xff0c;它用于实现对…

【MySQL学习笔记008】多表查询

1、多表关系 概述&#xff1a;项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系&#xff0c;基本上可分为三种&a…

在linux操作系统Centos上安装服务器相关软件

如果您的服务器没有图形界面(GUI),您可以通过命令行(终端)来安装和配置Tomcat、JDK和MySQL等软件。以下是在没有图形界面GHome的 Linux 系统上安装这些软件的基本步骤: 对于CentOS Stream 9,您可以按照以下步骤在命令行上安装Tomcat、JDK 和 MySQL 数据库: 1. 安装JD…

设计模式--迭代器模式

实验18&#xff1a;迭代器模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解迭代器模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用迭代器模式解决实际问题。 [实验任务]&#xff1a;JAVA和C常见数据结构迭代…

基于遗传算法特征选择及单层感知机模型的IMDB电影评论文本分类案例

基于遗传算法特征选择及单层感知机模型的IMDB电影评论文本分类案例 1.数据载入及处理2.感知机模型建立3.模型训练4.遗传算法进行特征选择注意 5.联系我们 1.数据载入及处理 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import Dat…

线程的同步与互斥

抢票的例子 竞争过程 进程A被切走 进程B被切走 结论&#xff1a; 互斥 int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr); mutex: 指向要初始化的互斥锁的指针。attr: 用于设置互斥锁属性的指针&#xff0c;通常可以传入 NULL 以使用默认属性…

【贪心】最小生成树Kruskal算法Python实现

文章目录 [toc]问题描述最小生成树的性质证明 Kruskal算法时间复杂性Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;贪心算法 问题描述 设 G ( V , E ) G (V , E) G(V,E)是无向连通带权图&#xff0c; E E E中每条边 ( v , w ) (v , w) (v,w)的权为 c [ v ] …

【图神经网络 · 科研笔记5】异构信息网络,利用注意力选择元路径;利用进化邻域和社群实现自监督动态图嵌入,交叉监督对比学习;近期科研思维导图小汇总;

记录部分科研文献阅读相关内容【划重点】,主题“图神经网络”,仅学习使用。 🎯作者主页: 追光者♂🔥 🌸个人简介: 📝[1] CSDN 博客专家📝 🏆[2] 人工智能领域优质创作者🏆 🌟[3] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌿[4] 2022年度…

maven下载jar包失败

配置国内镜像 设置国内的仓库,比如: <!--阿里仓库--><mirror><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public/</url><mirrorOf>central</mirrorOf></mirror>…

CnosDB如何确保多步操作的最终一致性?

背景 在时序数据库中&#xff0c;资源的操作是一个复杂且关键的任务。这些操作通常涉及到多个步骤&#xff0c;每个步骤都可能会失败&#xff0c;导致资源处于不一致的状态。例如&#xff0c;一个用户可能想要在CnosDB集群中删除一个租户&#xff0c;这个操作可能需要删除租户…

Alnet网络分析与demo实例

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 Fun_机器学习,pytorch图像分类,工具箱-CSDN博客 数据集下载 http://download.tensorflow.org/example_images/flower_photos.tgz 包含 5 中类型的花&#xff0c;每种…

嵌入式开发——PWM高级定时器

学习目标 加强掌握PWM开发流程理解定时器与通道的关系掌握多通道配置策略掌握互补PWM配置策略掌握定时器查询方式掌握代码抽取优化策略掌握PWM调试方式学习内容 需求 点亮8个灯,采用pwm的方式。 定时器 通道 <