两步创建3D数据中心

2024-02-10 05:48
文章标签 创建 3d 两步 数据中心

本文主要是介绍两步创建3D数据中心,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TWaver 3D发布也有很长一段时间了,相关的应用和项目也做了不少,特别是3D机房,可是有些用户反馈说3D机房开发起来有些费劲,耗时,3D并不像2D,虽然有时更加的直观,但是需要考虑的问题还挺多的,模型、材质、效率,交互,以及视角等等。

比如:一个机柜有可能有许许多多个3D对象组成,因此要对其进行操作,例如:打开机柜门,添加或删除设备,查看某个设备时让其他的设备都虚化掉等类似功能,对于很多人来说实现起来十分复杂。今天我们给大家介绍一些新的功能,我们对相关功能进行了进一步的封装,并且提供了一些内置模型,而这块的功能我们还在进一步的改进中,在这里先给大家展示展示,如果各位有什么好的想法和建议,欢迎提出来。

 

先来张整体的图,全部都是通过一个json导入的:

 

json的格式如下:
var json = {"categories" : [{"id" : "building",},{"id" : "room",},{"id" : "rack",}],"dataTypes":[{"id" : "floor_type_01","model":"area","modelParameters": {"height":5,"data":[-1559,-555,1559,-555,1559,555,-1559,555,-1559,-555],type:"area"},"childrenSize":{"x":42,"z" : 4,"xPadding":[100,0],"zPadding": [100,0]}},{"id" : "floor_type_02","model":"area","modelParameters": {"height":5,"data":[-1550,-555,1559,-555,1559,555,-1550,555,-1550,-555],type:"area"},"childrenSize":{"x":42,"z" : 4,"xPadding":[100,0],"zPadding": [100,0]}},"datas":[{"id" : "b01","dataTypeId" : "bt01","position" : [-3000,0,0],},{"id":"floor","parentId":"b01","dataTypeId" : "floor_type_01","position" : [1600,0,900],}]
}
 
当然也可以在代码中直接往DataManager中添加,在添加之前先来简单的说明一下数据结构。

数据

 

目前我们这里有3种数据类型,分别是it.Category(类别,如:机柜,机房,设备…)、it.DataType(类型,如:A型号机柜,B型号机柜、A设备…,其引用的Category)、以及it.Data(资产数据,如:机柜001,机柜002是DataType的实例):

 

var dataManager = new it.DataManager();
var category = new it.Category({id : "rack",description : "机柜类别"
});
dataManager.addCategory(category);var dataType = new it.DataType("rack_type_01");
dataType.setStopAlarmPropagationable(true);
dataType.setModel('rack');
dataType.setCategoryId(category.getId()); // 给该dataType设置类别
dataType.setModelParameters({"width":56,"height":47,"depth":110,type:"rack"});
dataType.setSize(new it.Size({x : 1,z : 1}));
dataType.setChildrenSize(new it.Size({y:47,yPadding : [5.545,5.545],zPadding:[0,-1.5],xPadding : [5,5]}));
dataManager.addDataType(dataType);var data = new it.Data(id);
data.setLocation({x : z,y:"neg_neg",z : x});
data.setParentId(null);
data.setDataTypeId(dataType.getId());
data.u({"userId": "用户ID","制造商":'A厂'});
dataManager.addData(data);

 

添加好后,DataManager会管理这些数据,还可以使用快速查询的功能进行搜索,更重要的是它可以帮助创建3D对象哦,不管你的机柜多么复杂,它都可以帮你搞定。想想自己来处理3D模型和业务数据的绑定时,如果3D模型比较复杂的话,那该怎么绑定,以及查找时该怎么处理等也要费些功夫。

 


显示

 

将添加的data显示出来,new一个it.SceneManager即可:

 

var sceneManager = new it.SceneManager(dataManager);
sceneManager.loadScene();
document.body.appendChild(sceneManager.getSceneView());

 

 

默认功能

其实通过这两步就可以搞定一个简单的3D机房了,并且默认实现很多功能(当然这些默认的功能你也可以完全去掉,“默认”可是60年代发明的最最重要的一项技术,应该拿大奖的,呵呵,不知到称作“技术”是不是合适,可是现在没有它很多东西都没法运行),如下是双击某个机柜和某个设备后虚化其他所有的3D对象。

 





 

扩展

还有一些扩展功能,以下简单的列出几个:

 

ToolTip:
添加几行代码,告诉程序你要让哪些data有tooltip,以及该显示出哪些信息,添加规则代码如下:

var tooltipRule = new it.TooltipRule({categoryId : "rack",propertiesDesc : "机柜编号:id@@机柜名称:description",extInfo : {"test" : "test"}
});
var tooltipRule2 = new it.TooltipRule({dataTypeId : "room_type_01",propertiesDesc : "楼层编号:id@@楼层名称:description",extInfo : {"test" : "test2"}});sceneManager.viewManager3d.tooltipManager.addTooltipRule(tooltipRule);sceneManager.viewManager3d.tooltipManager.addTooltipRule(tooltipRule2);

 



属性框:

需要显示哪些内容也可以根据自己的需要来配置,代码和上面的思想差不多。





资产搜索:

资产搜索和空间搜索都用到了上文提到的快速查询,图上的输入框什么的都可以自己去实现。


 

空间搜索:





 

最后再来展示一下Billboard:


 

有些功能我们还会继续完善,今后再给大家展示,同时也欢迎大家提提意见!我们的邮箱:tw-service@servasoft.com

 

这篇关于两步创建3D数据中心的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/696272

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

轻量级在线服装3D定制引擎Myway简介

我写的面向web元宇宙轻量级系列引擎中的另外一个,在线3D定制引擎Myway 3D。 用于在线商品定制,比如个性化服装的定制、日常用品(如杯子)、家装(被套)等物品的在线定制。 特性列表: 可更换衣服款式,按需定制更换模型可实时更改材质颜色可实时添加文本,并可实时修改大小、颜色和角度,支持自定义字体可实时添加艺术图标,并可实时修改大小、颜色和角度,支持翻转、各种对齐可更改衣服图案,按需求定制

小型数据中心是什么?如何建设?

在数字化时代,小型数据中心正成为许多企业和组织加强数据管理和服务扩展的理想选择。与传统大型数据中心相比,小型数据中心以其灵活性、高效性和相对较低的运营成本吸引着越来越多的关注。然而,要成功建设一个小型数据中心,并确保其安全、可靠和高效运行,需要综合考虑多个关键因素和最佳实践。本文将深入探讨小型数据中心的定义、关键要点以及建设过程中的注意事项,帮助您全面理解和规划这一重要的IT基础设施。 小型数据

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

【Qt6.3 基础教程 17】 Qt布局管理详解:创建直观和响应式UI界面

文章目录 前言布局管理的基础为什么需要布局管理器? 盒布局:水平和垂直排列小部件示例:创建水平盒布局 栅格布局:在网格中对齐小部件示例:创建栅格布局 表单布局:为表单创建标签和字段示例:创建表单布局 调整空间和伸缩性示例:增加弹性空间 总结 前言 当您开始使用Qt设计用户界面(UI)时,理解布局管理是至关重要的。布局管理不仅关系到UI的外观,更直接影响用户交互的体验。本篇博

POLYGON Horror Carnival - Low Poly 3D Art by Synty

465 个独特的预设模型 一个正在运行的摩天轮和旋转木马 包括10个示例脚本,让嘉年华栩栩如生 ◼ 描述◼ 欢迎来到恐怖嘉年华。这个地方曾经有诱人的音乐,现在却有着令人不安的旋律,暗示着其中令人不安的惊喜。 这场险恶的盛会的真正核心在于演示场景。它使用3D低多边形资源构建,具有来自不祥的狂欢帐篷、摊位、摩天轮、旋转木马等游戏开发资源。它是疯狂人物与毫无戒心的寻求刺激者玩捉迷藏游戏的完美狩猎场。

3_创建Tab控件

1,新建MFC 对话框项目,为对话框添加Tab控件,选中Tab控件,新建控件变量m_tab_ctrl 2,为Tab控件添加tab项 m_tab_ctrl.InsertItem(0, L”000”),参数1,哪个位置;参数2,item的名称 3,为Tab控件添加监听事件, void C测试Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESUL

自动驾驶---Perception之Lidar点云3D检测

1 背景         Lidar点云技术的出现是基于摄影测量技术的发展、计算机及高新技术的推动以及全球定位系统和惯性导航系统的发展,使得通过激光束获取高精度的三维数据成为可能。随着技术的不断进步和应用领域的拓展,Lidar点云技术将在测绘、遥感、环境监测、机器人等领域发挥越来越重要的作用。         目前全球范围内纯视觉方案的车企主要包括特斯拉和集越,在达到同等性能的前提下,纯视觉方

3D模型相关生成

3D模型相关生成 1. DreamFusion Model DreamFusion Model 是一种将文本描述转化为三维模型的技术。你可以想象它是一个“魔法翻译器”,你告诉它一个场景或物体的描述,比如“一个飞翔的龙”,它就能生成一个相应的 3D 模型。 原理: 文本到图像生成:DreamFusion 首先将文本描述转化为一系列可能的 2D 图像。这部分利用了预训练的扩散模型(如 DALL