Threejs实现波动热点效果,波动标记,波动标签显示

简介: Threejs实现波动热点效果,波动标记,波动标签显示

1,介绍


该示例使用Three.js库 r141版本。

主要实现功能:使用Three.js实现波动热点效果,两种方式。

方式一:Sprite精灵+缩放动画实现。

方式二:CSS2DRenderer,CSS 3D渲染器实现

效果图如下:




这里需要引入的js库


import * as THREE from 'three';
import {
  OrbitControls
} from './libs/jsm/OrbitControls.js';
import {
  CSS2DRenderer,
  CSS2DObject
} from './libs/jsm/CSS2DRenderer.js';
import {
  TWEEN
} from './libs/jsm/tween.module.min.js';


Sprite精灵+缩放动画实现,这里用到了Tween.js


const map = new THREE.TextureLoader().load("assets/textures/hotspot.png");
const material = new THREE.SpriteMaterial({
  map: map
});
const sprite = new THREE.Sprite(material);
sprite.scale.set(0.3, 0.3, 0.3);
sprite.position.set(1.5, 0.8, 0.2);
scene.add(sprite);
const spriteTween = new TWEEN.Tween({
  scale: 0.2
}).to({
  scale: 0.13
}, 1500).easing(TWEEN.Easing.Quadratic.Out);
spriteTween.onUpdate(function(that) {
  sprite.scale.set(that.scale, that.scale, that.scale);
});
spriteTween.yoyo(true);
spriteTween.repeat(Infinity);
spriteTween.start();


CSS2DRenderer方式实现

波动css样式代码

.status {
  width: 30px;
  height: 30px;
  position: relative;
}
.solid {
  width: 100%;
  height: 100%;
  position: absolute;
  z-index: 999;
  left: 0;
  top: 0;
  background: #fff;
  border-radius: 100%;
}
.status .animate1,
.status .animate2 {
  background: #fff;
  width: 30px;
  height: 30px;
  border-radius: 100%;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
}
@keyframes circle {
  0% {
    -webkit-transform: scale(1);
    transform: scale(1);
    opacity: 1;
  }
  100% {
    -webkit-transform: scale(1.8);
    transform: scale(1.8);
    opacity: 0.1;
  }
}
.status .animate1 {
  -webkit-animation: circle 2s 0s ease-out infinite running;
  animation: circle 2s 0s ease-out infinite running;
}
.status .animate2 {
  -webkit-animation: circle 2s 1s ease-out infinite running;
  animation: circle 2s 1s ease-out infinite running;
}


实现标签js代码


const waves = document.createElement('div');
waves.className = 'status';
const solid = document.createElement('div');
solid.className = 'solid';
const animate1 = document.createElement('div');
animate1.className = 'animate1';
const animate2 = document.createElement('div');
animate2.className = 'animate2';
waves.appendChild(solid);
waves.appendChild(animate1);
waves.appendChild(animate2);
const wavesLabel = new CSS2DObject(waves);
wavesLabel.position.set(1, 0.8, 0.2);
scene.add(wavesLabel);
目录
相关文章
|
前端开发 JavaScript
Three.js实现汽车3D展示/开关门/变色/运动/视角切换/波动热点/汽车模型
Three.js实现汽车3D展示/开关门/变色/运动/视角切换/波动热点/汽车模型
2138 0
Three.js实现汽车3D展示/开关门/变色/运动/视角切换/波动热点/汽车模型
|
存储 开发框架 JavaScript
Threejs中三维物体和HTML的爱恨情仇:CSS2DRenderer
【8月更文挑战第7天】Threejs中三维物体和HTML的爱恨情仇:CSS2DRenderer
1988 4
Threejs中三维物体和HTML的爱恨情仇:CSS2DRenderer
Threejs使用精灵Sprite作为标签,鼠标悬浮精灵上时鼠变小手
Threejs使用精灵Sprite作为标签,鼠标悬浮精灵上时鼠变小手
2288 0
Threejs使用精灵Sprite作为标签,鼠标悬浮精灵上时鼠变小手
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
1729 15
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
|
前端开发
ThreeJs通过canvas和Sprite添加标签
这篇文章介绍了在Three.js中利用Canvas和Sprite实现动态文本标签的方法,使得标签可以跟随模型并在3D空间中始终保持面向摄像机。
1016 0
ThreeJs通过canvas和Sprite添加标签
|
存储 缓存 JavaScript
用three.js搞3个炫酷粒子出场
出场就要帅气!动画要酷!点进来就看粒子玩出新花样!让你拥有炫酷的粒子出场方式,一闪一闪亮晶晶好像许多的星星!!!
|
数据可视化 物联网
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
2197 15
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
|
API
【threejs教程】场景视角切换的神器:轨道控制器
【8月更文挑战第5天】threejs教程:场景视角切换的神器,轨道控制器
1363 1
【threejs教程】场景视角切换的神器:轨道控制器
threeJs用精灵模型Sprite实现下雨效果
这篇文章介绍了使用Three.js中的Sprite(精灵)模型来实现下雨特效的方法和技术细节。
757 2
threeJs用精灵模型Sprite实现下雨效果
|
JavaScript 容器
vue echarts图表自适应屏幕变化
vue echarts图表自适应屏幕变化
1391 0

热门文章

最新文章