three实现六种三维粒子点线小球旋转动画效果代码
代码语言:html
所属分类:三维
代码描述:three实现六种三维粒子点线小球旋转动画效果代码
代码标签: three 六种 三维 粒子 点线 小球 旋转 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@import url("https://fonts.googleapis.com/css2?family=Asap&display=swap");
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
background: black;
overscroll-behavior-x: none;
overscroll-behavior-y: none;
}
body {
font-family: "Asap", sans-serif;
position: relative;
width: 100vw;
min-height: 100vh;
text-align: center;
overflow-x: hidden;
color: white;
}
canvas {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
position: fixed;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
z-index: 0;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/es-module-shims.1.6.2.js"></script>
<script type="importmap">
{
"imports": {
"three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/154/three.module.js",
"three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/154/jsm/"
}
}
</script>
<script type="module">
/*
particle spheres
https://codepen.io/wakana-k/pen/mdQLMqx
@wakana-k
*/
import * as THREE from "three";
import { TrackballControls } from "three/addons/controls/TrackballControls.js";
import * as BufferGeometryUtils from "three/addons/utils/BufferGeometryUtils.js";
let camera, scene, renderer, geometry, material, controls;
let particles1, particles2, particles3, particles4, particles5, particles6;
const d = 0.003; // for animation
init();
function init() {
camera = new THREE.PerspectiveCamera(
45,
window.innerWidth / window.innerHeight,
2,
20000);
camera.position.z = 1600;
scene = new THREE.Scene();
//scene.fog = new THREE.FogExp2(0x000000, 0.0005);
///////////////////////////////////////
// common setting
material = new THREE.PointsMaterial({
color: "pink",
size: 13,
sizeAttenuation: true });
const radius = 250;
const particle_num = 5000;
let thickness;
let vertex;
let colors = [];
let color = new THREE.Color();
let random_ratio;
///////////////////////////////////
// particle 1 - pink
let vertices = [];
vertex = new THREE.Vector3();
geometry = new THREE.BufferGeometry();
for (let i = 0; i < particle_num; i++) {
const theta = Math.acos(THREE.MathUtils.randFloatSpread(2));
const phi = THREE.MathUtils.randFloatSpread(360);
vertex.x = radius * Math.sin(theta) * Math.cos(phi);
vertex.y = radius * Math.sin(theta) * Math.sin(phi);
vertex.z = radius * Math.cos(theta);
vertices.push(vertex.x, vertex.y, vertex.z);
}
geometry.setAttribute(
"position",
new THREE.Float32BufferAttribute(vertices, 3));
particles1 = new THREE.Points(geometry, material);
particles1.position.set(-radius * 2.2, radius * 1.1, 0);
scene.add(particles1);
///////////////////////////////////
// particle 2 - blue
geome.........完整代码请登录后点击上方下载按钮下载查看
网友评论0