电力布局三维编辑器功能设计

这篇具有很好参考价值的文章主要介绍了电力布局三维编辑器功能设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

楔子

最近和一家公司在谈一个项目合作,他们公司主要是做电力相关的。 项目背景大概是这样的:
国家电网对电网资产需要做到数字化管理,对现有变压器台区内的电表箱电能表做可视化数字孪生管理。
由于涉及到的台区非常多,所以客户希望开发的不是单个项目,而是可以实现项目的3D编辑器,使得电网的台区经理使用编辑器编辑出所负责的变压器台区的设备关系场景及数据状态展示。

三维可视化方面,三维组态,我们经验还是挺多的,比如数据中心、医院、学校等三维可视化项目,还包括智慧园区、智慧城市、智慧小镇的方向的等三维可视化。
下面先上几张三维可视化的图瞅瞅:
电力布局三维编辑器功能设计电力布局三维编辑器功能设计
电力布局三维编辑器功能设计
客户需要的是一个布局工具,而不是直接的三维场景,这比直接搭建一个三维的场景要难许多。
但是所谓万事开头难,难在不开头。 天下事有难易乎,干就是了。由于之前做过油田的三维布局,虽然内容上不太一样,但是技术上是类似的,还是相对来说容易很多。
在商务人员和客户确立合同,正式立项后, 我们的设计小姐姐,开发小哥哥,建模小弟弟,都各司其职,下边就讲一下项目的大概内容。

创建模型库

模型库主要包括了园区模型(通用),楼宇模型(通用),台区模型,电表箱,电能表等等。
电力布局三维编辑器功能设计电力布局三维编辑器功能设计
首先是开发同事搭建一个模型库的功能,主要包括了对于模型的管理。 模型库功能主要包括,模型的上传,预览和分类和列表功能。同时让建模小伙把相关模型使用3D建模工具 3d max或者c4d 进行模型的建模。建模后,导出后缀为obj/gltf/fbx格式文件,建模后的所有模型文件,最终会上传到模型库,模型库的管理目录如下图所示:
电力布局三维编辑器功能设计

三维编辑功能

三维编辑能力是电力布局三维编辑器的核心功能。

生成模型

三维编辑能力之一是把模型列表的功能拖拽到三维画布上,生成三维模型。主要的技术实现包括了 DragAndDrop和模型加载:
其中drag and drop 大致如下:

function dragstart_handler(ev) {
  ev.dataTransfer.setData("model","./xxx.gltf");
}

function dragover_handler(ev) {
  ev.preventDefault();
  ev.dataTransfer.dropEffect = "move";
}
function drop_handler(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("model");
  let model = ModelLoader.load(data);
  ...
}

而模型加载主要使用了GLTFLoader,大致如下

loader.load(modelPath, function (gltf) {
  // todo 
  // add gltf to scene
}

场景编辑

模型拖入场景中后,还可以在场景中二次编辑模型的位置,大小和其他属性。 可以通过属性框设置属性,也可以通过gizmo工具进行平移,旋转和缩放模型。如下图所示:
电力布局三维编辑器功能设计电力布局三维编辑器功能设计电力布局三维编辑器功能设计电力布局三维编辑器功能设计

当然还有更多的底层能力,包括undo,redo,批量生产,批量布局,打组,解散打组,拖拽复制能力,批量移动,旋转和缩放等等能力,都是用于易用性的开发,此处不在详细说明。后面将会有文章专门说明编辑器的底层能力。

动态楼层

客户需要能够动态生产楼层,楼层模型拉入场景时,手动输入 地上层数,地下层数,单元数,然后按照输入的层数自动生成相应楼宇模型。楼层支持动态修改楼层数和单元数量。这样可以达到的目的就是通用型,不用针对每个台区进行楼层的建模,减少后期的工作量。
电力布局三维编辑器功能设计电力布局三维编辑器功能设计电力布局三维编辑器功能设计

通过对于楼层+ 楼顶进行分开建模,然后把楼层进行组合的能力,来实现上述功能。

连线功能

在台区和电表之间要能够添加连线,表示联通关系,效果如下所示:
电力布局三维编辑器功能设计
输入台区模型编号和电表模型编号。 然后按照横平竖直的方法连接连线。其中由于webgl的line宽度只能为1,影响效果,所以我们的连线使用了自己封装的Line,类似threejs的MeshLine,通过Mesh来模拟Line,可以指定line的宽度。代码如下所示:

 const material = new dt.MeshLineMaterial({
    useMap: true,
    map: texture,
    color: new dt.Color("red"),
    transparent: true,
    clipRatio: .1,
    opacity: 1,
    depthTest: false,
    // depthWrite: false,
    resolution: new dt.Vec2(graph.width, graph.height),
    sizeAttenuation: false,
    lineWidth: 100,
    repeat: new dt.Vec2(20, 3),
    offset: new dt.Vec2(0, 0),
    gradientStop: [0, 0.2, random(0.55, 0.65), 1],
    gradientColor: ["blue", "green", "orange", "red"],
    blending: dt.AddtiveBlending,
  });
  var g = new dt.MeshLine();
  g.setGeometry(geo);
  var mesh = new dt.Mesh(g.geometry, material);

特效

通过平台的脚步能力,可以实现二次开发的能力,二次开发实现的特效如下:

  • 线条的流动效果

    通过uv流动动画+特定的贴图,可以实现线条的流动效果,比如demo效果如下:
    电力布局三维编辑器功能设计
    有关uv流动动画的原理,可以参考笔者之前的文章《
    》。

  • 台区、电能表模型轮廓发光的呼吸灯闪烁效果

    通过引擎的OutlineRenderer,可以实现模型的轮廓效果,并且通过OutlineRenderer的参数的不断修改,便可以实现呼吸灯的闪烁的效果,代码如下所示:

graph.outlineMethod = "glow";
if (graph._outlineRenderer) {
  let pass = graph._outlineRenderer.outlinePass;
  pass.visibleEdgeColor = new Color(controls.visibleEdgeColor);
  pass.hiddenEdgeColor = new Color(controls.visibleEdgeColor);
  pass.edgeGlow = controls.edgeGlow;
  pass.edgeThickness = controls.edgeThickness;
  pass.edgeStrength = controls.edgeStrength;
  pass.downSampleRatio = parseInt(controls.downSampleRatio);
}

最终的效果如下图所示:
电力布局三维编辑器功能设计

总结

本文主要阐述了电力行业三维布局的主要功能特点。

最后,关注公号“ITMan彪叔” 可以添加作者微信进行交流,及时收到更多有价值的文章。文章来源地址https://www.toymoban.com/news/detail-421429.html

到了这里,关于电力布局三维编辑器功能设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web架构师编辑器内容-编辑器组件图层面板功能开发-锁定隐藏、键盘事件功能的开发

    我们这一部分主要是对最右侧图层面板功能进行剖析,完成对应的功能的开发: 每个图层都对应编辑器上面的元素,有多少个元素就对应多少个图层,主要的功能如下: 锁定功能:点击锁定,在编辑器中没法编辑对应的组件属性,再次点击是取消锁定,恢复到可编辑的模式

    2024年01月18日
    浏览(31)
  • 企升编辑器核心功能介绍

    核心功能介绍(企升编辑器)“排版助手”核心功能介绍(企升编辑器) 下载安装说明: 如何安装企升编辑器?“排版助手”如何安装企升编辑器? 一、支持目录生成选择标题级别 PB2023的目录操作有以下特点。一是清晰地区分出“默认目录内容”和“可选目录内容”,界面

    2024年02月11日
    浏览(26)
  • 免费全功能视频编辑器分享

    最基本的视频剪辑功能,文字、音频、画中画、变速、滤镜、贴纸、AI字幕,各种字体、特效都可以免费使用 还有许多实用功能,AI作图,可以通过输入咒语,来生成一些图片,作为视频配图使用 背景移除,可以一键移除背景,保留主体 。内置了提词器功能。安卓电脑都可以

    2024年01月22日
    浏览(45)
  • Unity编辑扩展:功能篇之Json数据编辑器

    前言 编辑器扩展算是比较纯粹的功能开发,基本没有什么理论知识,都是一些 Unity 相关接口的使用与数据类型的设计操作等。在本篇文章主要的文字描述基本都是在做代码解释,为了使内容接受度更高,我会尽量描述到代码结构中的每个细节。如果有对此不太了解又很感兴

    2024年02月06日
    浏览(82)
  • Unity 编辑器功能之查找预制体

      static readonly string[] PREFAB_PATHS = new string[]     {              \\\"Assets/GameRes/UIPanel\\\",     }; //预制体存放路径  思路  通过文件夹得到所有的预制体,生成预制体,然后遍历所有预制体以及子物体是否存在 主键T如果存在进行 callback操作,操作完之后根据savePrefab 进行保存,然

    2024年02月03日
    浏览(31)
  • 织梦dedecms默认编辑器实现上传视频功能

    织梦默认的编辑器采用的是ckeditor厂商提供的,只可以上传Flash,今天我们进行二次改进,使之可以上传视频文件如MP4文件进行播放,方法比较简单,无需去更换编辑器,下面就言归正传。 第一步:后台系统–添加MP4扩展名 登录后台–系统基本参数–附件设置–允许的多媒体

    2024年02月03日
    浏览(32)
  • 十分钟掌握 Vim 编辑器核心功能

    👉相信不论是前端还是后台多多少少都需要上到服务器上做一些操作,改改配置文件等,大多数 Linux 服务器默认都安装了 Vim 文本编辑器,因此如果还不会 Vim 的话,可能会被同事“耻笑”。 👉如果本文对你有所帮助,请点个👍 吧。 Vim是什么? Vim 是从 vi 发展出来的一个

    2024年02月16日
    浏览(38)
  • Windows11恢复组策略编辑器功能的方法

    日常工作学习中,对 Windows 计算机上的问题进行故障排除时,有些高级用户经常使用组策略编辑器轻松修复它。通过其分层结构,您可以快速调整应用于用户或计算机的设置。如果搜索结果中缺少组策略编辑器,则可能必须使用注册表编辑器作为疑难解答工具,这是一种更复

    2024年02月06日
    浏览(36)
  • 若依框架图片上传、富文本框编辑器功能

    现在的需求是:实现一个项目展示模块,后端管理页面除了需要基础信息外,要加上一个 图片上传和富文本框编辑器功能 。 点击”图片存储地址”:可上传电脑任何位置的图片,并可对图片进行放大,缩小,和旋转。 存入数据库的图片以url地址存放 url直接百度可看到图片

    2024年04月13日
    浏览(46)
  • Vim是一款功能强大的文本编辑器

    简介: Vim是一款功能强大的文本编辑器,广泛用于Linux系统。以下是Vim编辑器的基本使用方法: 打开文件: 使用vim命令加上要编辑的文件名,例如:vim filename。 进入编辑模式: 在Vim中,有多种模式,初始状态是命令模式,需要按下i键或a键进入编辑模式。 编辑文本: 在编

    2024年04月23日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包