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