three实现三维发光粒子宇宙银河系星体旋转动画效果代码

代码语言:html

所属分类:三维

代码描述:three实现三维发光粒子宇宙银河系星体旋转动画效果代码,结合lil-gui科修改参数呈现不同的效果。

代码标签: three 三维 发光 粒子 宇宙 银河 星体 旋转 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
 
<meta name="viewport" content="width=device-width,initial-scale=1">
 
<meta charset="UTF-8">

 
 
 
<style>
html
,
body
{
 
margin: 0;
 
overflow: hidden;
}


.webgl {
 
position: fixed;
 
outline: none;
 
width: 100%;
 
height: 100%;
}
</style>


</head>

<body  >

<canvas class="webgl"></canvas>
<script  type="importmap">{
       
"imports": {
               
"three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/three.module.js"
       
}
}</script>


 
     
<script type="module">
                import GUI from '//repo.bfw.wiki/bfwrepo/js/lil-gui.esm.js';
import { Clock } from "three";
import { OrbitControls } from '//repo.bfw.wiki/bfwrepo/js/module/three/examples/jsm/controls/OrbitControls.js';
import * as THREE from "three";
import { Perlin } from "//repo.bfw.wiki/bfwrepo/js/module/three-noise.js";
const gui = new GUI();
gui.close();
const scene = new THREE.Scene();
/**
 * Galaxy
 */
const parameters = {
    branchCount: 25000,
    size: 0.01,
    galaxyRadius: 20,
    branches: 40,
    noiseScale: 0.2,
    turnTheta: Math.PI * 0.75,
    randomness: 2,
    randomnessPower: 4.8,
    insideColor: '#14ffd8',
    outsideColor: '#ff00f7'
};
let geometry = null;
let material = null;
let points = null;
const generateGalaxy = () => {
    /**
     * Destroy previous galaxy
     */
    if (points !== null) {
        geometry.dispose();
        material.dispose();
        scene.remove(points);
    }
    /**
     * Geometry
     */
    geometry = new THREE.BufferGeometry();
    const positions = new Float32Array(parameters.branchCount * 3 * parameters.branches);
    const colors = new Float32Array(parameters.branchCount * 3 * parameters.branches);
    const colorInside = new THREE.Color(parameters.insideColor);
    const outsideColor = new THREE.Color(parameters.outsideColor);
    const perlin = new Perlin(Math.random());
    for (let branch = 0; branch < parameters.branches; branch++) {
        const theta = branch * ((Math.PI * 2.0) / parameters.branches);
        let point = new THREE.Vector2(Math.cos(theta) * 0.01, Math.sin(theta) * 0.01);
        for (let index = .........完整代码请登录后点击上方下载按钮下载查看

网友评论0