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);
目录
相关文章
|
6月前
|
机器学习/深度学习 数据可视化 数据库
R语言广义线性模型索赔频率预测:过度分散、风险暴露数和树状图可视化
R语言广义线性模型索赔频率预测:过度分散、风险暴露数和树状图可视化
|
6月前
|
机器学习/深度学习 搜索推荐 数据挖掘
回归树模型分析纪录片播放量影响因素|数据分享
回归树模型分析纪录片播放量影响因素|数据分享
|
6月前
|
数据可视化 算法 数据挖掘
用有限混合模型(FMM,FINITE MIXTURE MODEL)创建衰退指标对股市SPY、ETF收益聚类双坐标图可视化
用有限混合模型(FMM,FINITE MIXTURE MODEL)创建衰退指标对股市SPY、ETF收益聚类双坐标图可视化
|
6月前
|
数据可视化
R语言时变面板平滑转换回归模型TV-PSTR分析债务水平对投资的影响
R语言时变面板平滑转换回归模型TV-PSTR分析债务水平对投资的影响
|
6月前
GEE图表——趋势线图表的加载和展示包含纵坐标间隔的设定(以某区域年均降水总量为例)
GEE图表——趋势线图表的加载和展示包含纵坐标间隔的设定(以某区域年均降水总量为例)
85 0
echarts柱状图的数据差距过大影响美观
echarts柱状图的数据差距过大影响美观
426 0
|
运维 算法
【信号变化检测】使用新颖的短时间条件局部峰值速率特征进行信号变化/事件/异常检测(Matlab代码实现)
【信号变化检测】使用新颖的短时间条件局部峰值速率特征进行信号变化/事件/异常检测(Matlab代码实现)
|
数据采集 缓存 算法
m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值
m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值
210 0
|
Python
绘制不同学习率对精度损失的影响图形出现错误
绘制不同学习率对精度损失的影响图形出现错误
105 0
|
前端开发 JavaScript
Three.js实现汽车3D展示/开关门/变色/运动/视角切换/波动热点/汽车模型
Three.js实现汽车3D展示/开关门/变色/运动/视角切换/波动热点/汽车模型
1223 0
Three.js实现汽车3D展示/开关门/变色/运动/视角切换/波动热点/汽车模型