three+gsap实现三维圆点构成的地球旋转动画效果代码
代码语言:html
所属分类:三维
代码描述:three+gsap实现三维圆点构成的地球旋转动画效果代码,单击增加圆点及旋转坐标。
代码标签: three gsap 三维 圆点 地球 旋转 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
body {
padding: 0;
margin: 0;
}
.title {
position: fixed;
top: 7px;
color: #ddd;
font-family: sans-serif;
width: 100%;
text-align: center;
opacity: 0;
}
.demo {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background-color: #1C1C1E;
}
#globe-3d, #globe-2d-overlay, #globe-popup-overlay, .globe-popup {
display: block;
position: absolute;
}
#globe-2d-overlay, #globe-popup-overlay {
pointer-events: none;
}
.globe-popup-overlay {
width: 100%;
height: 100%;
opacity: 0;
}
.globe-popup {
top: 0;
left: 0;
background-color: rgba(75, 192, 200, .9);
opacity: 0;
color: #111;
font-family: sans-serif;
font-weight: bold;
padding: 5px 10px;
font-size: 15px;
border-radius: 3px;
}
</style>
</head>
<body>
<!-- partial:index.partial.html -->
<div class="title">单击地球增加点</div>
<div class="demo">
<div class="animation-wrapper">
<canvas id="globe-3d"></canvas>
<canvas id="globe-2d-overlay"></canvas>
<div id="globe-popup-overlay">
<div class="globe-popup"></div>
</div>
</div>
</div>
<script type="x-shader/x-fragment" id="fragment-shader-map">
uniform vec3 u_color_main;
varying float vOpacity;
float circle(vec2 st, float r) {
vec2 dist = st - vec2(.5);
return 1. - smoothstep(.99 * r, 1.01 * r, dot(dist, dist) * 4.);
}
void main() {
float dot = circle(gl_PointCoord.xy, .7);
if (dot < 0.5) discard;
gl_FragColor = vec4(u_color_main, dot * vOpacity);
}
</script>
<script type="x-shader/x-vertex" id="vertex-shader-map">
uniform sampler2D u_visibility;
uniform float u_size;
uniform float u_time_since_click;
uniform vec3 u_clicked;
varying float vOpacity;
void main() {
// mask with world map
float visibility = 1. - step(.4, texture2D(u_visibility, uv).x);
gl_PointSize = visibility * u_size;
// add ripple
float time = u_time_since_click;
float dist = length(position - u_clicked);
float damping = pow(1. - sin(min(time, 1.)), 5.);
float wave = (1. + sin(3. * dist + 13. * time));
float delta = -.025 * damping * wave;
// .........完整代码请登录后点击上方下载按钮下载查看
















网友评论0