【BIM】BIMFACE中创建雾化效果
背景
在BIM运维场景初始化的时候,一般都是首先将整个运维对象呈现在用户面前,例如一座大厦、一座桥梁、一个园区等等,以便于用户进行总览,总体把握运维对象,如果这个宏大的场景边界过于清晰,与背景融合也不是很好,看起来就会比较生硬,而通过对场景进行雾化,则可以使整个场景看起来更加地柔和,更加地真实。例如在threejs官网上的这个案例,就比较真实地将模型与背景做了融合,主要就是通过雾化来实现的。
实践
雾化主要通过两种类型实现,一种是线性雾,另一种是指数雾,分别对应Fog类和FogExp2类。Fog这个类中的参数定义了线性雾。也就是说,雾的密度是随着距离线性增大的,本案例中采用的是就是线性雾。线性雾的构造函数,Fog( color : Integer, near : Float, far : Float )。构造函数中传入颜色参数color来设置颜色属性,颜色可以是一个十六进制的整型数,或者是CSS风格的字符串。near参数指开始应用雾的最小距离,距离小于活动摄像机near个单位的物体,将不会被雾所影响,默认值为1。相似地,far参数指结束计算、应用雾的最大距离,距离大于活动摄像机far个单位的物体将不会被雾所影响,其默认值是1000。在具体场景中需要具体设置相关参数。而FogExp2这个类中的参数相对较少,只有一个color颜色和density密度,颜色和线性雾的使用方式是一样的,而密度参数是指定义雾的密度将会增长多快。
但是bimface中并不支持场景的雾化功能(据说正在开发,截止发稿时间尚未实现雾化功能),该如何使用呢?其实bimface也是以threejs为基石的,虽然没有在开发指南中说明场景Scene类如何使用,但是我通过研究源代码发现,通过Viewer3D对象是可以获取到场景Scene的,如果拿到了Scene对象,那问题就迎刃而解了。实际上配置雾化很简单,因为Fog是Scene的一个属性,创建Fog直接赋值给Scene的雾属性即可,主要还是自己根据实际的应用场景调整参数。
/**
* @author:xuhbd
* @function:为场景添加雾化效果,如果需要自行调整参数,需调用init方法
*/
var FogObject = {
viewer: null,
near: 0,
far: 0,
color: null,
init: function init(color, near, far) {
this.color = 0xcce0ff;
this.near = near || 180;
this.far = far || 250;
},
enbaleRenderFog: function () {
this.init();
return new THREE.Fog(this.color, this.near, this.far);
}
}
export { FogObject }
//雾化效果
getScene(viewer).fog = FogObject.enbaleRenderFog();
效果

地址:https://www.cnblogs.com/xhb-bky-blog/p/12769254.html
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
【BIM】BIMFACE中创建雾化效果的更多相关文章
- 【BIM】BIMFACE中创建疏散效果
背景 在BIM运维中,消防疏散是不可或缺的一环,当发生火警的时候,触发烟感器发生报警,同时启动消防疏散,指导现场工作人员进行疏散,及时准确地显示出疏散路线对争取疏散时间尤为重要.我将介绍如何在bimf ...
- 【BIM】BIMFACE中创建矢量文本[下篇]
背景 在上一篇文章中,我们通过THREEJS创建了矢量文本,并添加到了BIMFACE场景中,但是仅仅加入到场景中并不是我们的目的,我们的目的是把这种矢量文本加到指定的构件或者空间上,以此标识该构件或空 ...
- 【BIM】BIMFACE中创建矢量文本
背景 在三维模型产品的设计中,针对空间的管理存在这样一个普遍的需求,那就是在三维模型中,将模型所代表的空间通过附加文本的方式来展示其所代表的实际位置或功能,之前尝试过若干方式,比如直接在建模的时候,将 ...
- 【BIM】BIMFACE中实现电梯实时动效
背景 在运维场景中,电梯作为运维环节重要的一部分是不可获缺的,如果能够在三维场景中,将逼真的电梯效果,包括外观.运行状态等表现出来,无疑是产品的一大亮点.本文将从无到有介绍如何在bimface中实现逼 ...
- In-Memory:在内存中创建临时表和表变量
在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...
- 【初学者指南】在ASP.NET MVC 5中创建GridView
介绍 在这篇文章中,我们将会学习如何在 ASP.NET MVC 中创建一个 gridview,就像 ASP.NET Web 表单中的 gridview 一样.服务器端和客户端有许多可用的第三方库,这些 ...
- SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems) 实现代码(SQL Codes) 方法一:拼接SQL: 方法二: ...
- SAP CRM 在Web UI中创建搜索帮助
多数情况下,在Web UI为一个特定的字段提供搜索帮助需要在事务SE11中创建搜索帮助. (注:也可以通过在SE24中创建一个类并实现实现IF_BSP_WD_CUSTOM_F4_CALLBACK接口来 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
随机推荐
- mysql导出
--all-databases , -A 导出全部数据库. mysqldump -uroot -p --all-databases --all-tablespaces , -Y 导出全部表空间. my ...
- 深入了解CI/CD:工具、方法、环境、基础架构的全面指南
本文来自Rancher Labs 持续集成和持续交付(CI/CD)是DevOps背后的助推力之一.如果你的企业正在考虑使用DevOps,那么CI/CD绝对是需要考虑的其中一部分.但是CI/CD到底意味 ...
- Git中rebase失败了如何进行恢复
rebase失败后的恢复 记一次翻车现场 记一次翻车的现场,很早之前提的PR后面由于需求的变便去忙别的事情了,等到要做这个需求的我时候,发现已经 落后版本了,并且有很多文件的冲突,然后就用rebase ...
- coding 注意事项(总结中)
Uber Go 语言代码风格指南可以参考下:https://www.cnblogs.com/ricklz/p/11670932.html 最近写代码,老是被吐槽,代码写的不好,细节处理的不好. 那么下 ...
- 常见的 PHP 面试题和答案分享
如何直接将输出显示给浏览器? 将输出直接显示给浏览器,我们必须使用特殊标记 <?=and?>. PHP 是否支持多重继承? PHP 只支持单继承.PHP 的类使用关键字 extends 继 ...
- Html5移动端弹幕动画实现示例代码
已知20条内容要有弹幕效果,分成三层,速度随机. 先来看看效果: 所以这里不考虑填写生成的.只是一个展现的效果. 如果要看填写生成的,请不要浪费Time 思路 把单个内容编辑好,计算自身宽度,确定初始 ...
- 当文件目录变得杂乱不堪怎么办,python帮你轻松搞定
这几天和几个小伙伴,在一起合做一个ppt. 做ppt之前有原版的ppt,和一个word大纲,在制作过程中,又不断添加图片.视频等素材,最终,整个目录变得杂乱不堪(见下图-处理之前) 那我想,可不可以做 ...
- 架构师修炼之设计模式 - 策略模式(Strategy) 【Python与C#实现】
程序员,我为你祝福 愿你有一个灿烂的前程 愿你有情人终成眷属 愿你在尘世获得幸福 我只想成为架构师,走遍江湖! 目录 模式定义 模式分类 模式结构 实例(C#与Python版) 优点 缺点 使用场景 ...
- vue2.x学习笔记(十七)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12616847.html. 动态组件&异步组件 在前面学习组件基础的时候学习过动态组件,官方文档给出过一个例 ...
- 详解 TreeMap
(有关Map集合的基本性质,请观看本人博文-- <详解 Map集合>) TreeMap: 特点: TreeMap 键不允许插入null 键的底层数据结构是红黑树,可保证键的排序和唯一性 线 ...