雾化效果

作者: 爱吃香菜的憨憨 | 来源:发表于2020-04-04 20:29 被阅读0次

雾化效果是3D的比较常见的特性,在游戏中见到的烟雾、爆炸火焰以及白云等效果都是雾化的结果,下面这篇文章主要给大家介绍了如何实现雾化效果的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。

一、css3实现平面雾浮动效果

先来看一下效果图

css3实效雾效果

实现方法
使用两张透明的雾化效果图片,添加上css3动画,就可以制作出雾浮动效果啦~
实现代码

HTML代码
<template>
    <div class="fog-css3">
        <div class="fog__container">
            <div class="fog__img fog__img--first"></div>
            <div class="fog__img fog__img--second"></div>
        </div>
    </div>
</template>
css代码
<style lang="scss" scoped>
.fog-css3 {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;

    .fog {
        position: relative;
        height: vh(100);
        width: 100%;
        background-color: #000;
    }

    .fog__container {
        position: absolute;
        height: 100%;
        width: 100%;
        overflow: hidden;
    }

    .fog__img {
        position: absolute;
        height: 100vh;
        width: 300vw;
    }

    .fog__img--first {
        background: url("../../../assets/img/fog-1.png") repeat-x;
        background-size: contain;
        background-position: center;
        -webkit-animation: marquee 60s linear infinite;
        animation: marquee 60s linear infinite;
    }

    .fog__img--second {
        background: url("../../../assets/img/fog-2.png") repeat-x;
        background-size: contain;
        background-position: center;
        -webkit-animation: marquee 40s linear infinite;
        animation: marquee 40s linear infinite;
    }

    @-webkit-keyframes marquee {
        0% {
            -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
        }

        100% {
            -webkit-transform: translate3d(-200vw, 0, 0);
            transform: translate3d(-200vw, 0, 0);
        }
    }

    @keyframes marquee {
        0% {
            -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
        }

        100% {
            -webkit-transform: translate3d(-200vw, 0, 0);
            transform: translate3d(-200vw, 0, 0);
        }
    }
}
</style>

雾化图片资源(过于透明,可能看不清楚)


fog-1.png fog-2.png

二、ThingJs实现雾化效果

先来看一下效果图

image.png

实现方法
给场景添加雾化效果,需要传入三个参数(雾颜色,近距离雾效浓度,远距离雾效浓度)

实现代码

js代码
    // thingjs添加雾化效果
    fogThingJs() {
        /**
         * @name: thingjs雾化效果
         * @param {参数1:雾的颜色,参数2:近距离的雾效浓度,参数3:远距离的雾效浓度}
         */
        app.fog = {
            color: 0xffffff, // 颜色
            near: 100, // 近距离的雾效浓度
            far: 200, // 远距离的雾效浓度
        };
    }

    // thingJs清除雾效果
    removeFog() {
          app.fog = null;
    }

三、Three.js实现雾效果

先来看一下效果图

image.png

实现方法
给场景添加雾化效果,需要传入三个参数(雾的颜色,雾化开始的距离相机的位置,全雾化距离相机的位置)

实现代码
一、线性雾:雾的密度是随着距离线性增大的

    // THREE.js雾化效果
    fogThreeOne() {
        /**
         * @name: 雾化效果
         * @param {参数1:雾的颜色,参数2:雾化开始距离相机的位置,参数3:全雾化距离相机的位置}
         */
        app.fog = new THREE.Fog(0x676767, 10, 120);
    }

二、指数雾:雾的密度是随着距离指数增大的

   // 随着距离呈指数增长的雾化效果,只需要设置雾的颜色和浓度即可
    fogThreeTwo() {
         /**
           * @name: 随着距离呈指数增长的雾化效果
           * @param {参数1:雾的颜色,参数2:雾浓度}
          */
          app.fog = new THREE.FogExp2(0xffffff, 0.05);
     }

相关文章

  • 雾化效果

    雾化效果是3D的比较常见的特性,在游戏中见到的烟雾、爆炸火焰以及白云等效果都是雾化的结果,下面这篇文章主要给大家介...

  • three.js 手动添加元素补充两个小细节

    快速通道three.js手动添加元素 雾化效果: 打开雾化效果很简单,这个比较简单,只需要在代码中添加这么一句 后...

  • 雾化疗法效果确实好

    由于慢性咽炎犯了,我被咳嗽折磨得不知道怎么办才好。吃了再多的药也不管用。 昨天,同事介绍我去进行雾化治疗。我是有病...

  • 301关于雾化

    小小雾化器,小孩泪滴连连,大人口苦厌烦。 雾化效果明显,化痰止咳作用显著,比吃药来的快还奏效。简单说来,也算是这个...

  • 雾化

    黎明前的都市,瘴气笼罩了整个街道,不远处的大楼烟囱装点上斑斓的彩光灯,现在看的时候,烟囱里冒出来的白烟,混在整个阴...

  • 雾化

    在上能量净化的课程中,迷迷糊糊中从身体里拉出来一支手,把我抱住感觉身体不断的震动,眼前一片新的世界,四周都是白色的...

  • 雾化

    娃从老家回来的第二天就开始咳嗽,晚上两点醒过来,啃啃啃的咳,翻来翻去的睡不好。咳嗽是他爸最大的禁忌。一听娃咳嗽,他...

  • 雾化

    林林感冒了,老是咳嗽,而我正处于大姨妈期间,老公昨晚主动提出他睡林林旁边,这有点暖心。昨晚林林反反复复咳...

  • 雾化

    前两天我生病了咳嗽,妈妈带我去看医生,医生说让我做雾化。每天做两次,已经做了3天了,明天还有最后一天。

  • 雾化

    今天带小懒懒继续做雾化,去之前看了一下自己的健康码,是绿码,昨天的核酸检测结果也出来了,阴性。 其实昨天去做之前是...

网友评论

    本文标题:雾化效果

    本文链接:https://www.haomeiwen.com/subject/bpmtuctx.html