threejs+webgl实现三维刺状晶体旋转起伏动画效果代码
代码语言:html
所属分类:三维
代码描述:threejs+webgl实现三维刺状晶体旋转起伏动画效果代码
代码标签: threejs webgl 三维 刺状 晶体 旋转 起伏 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> html, body { margin: 0; } .webgl { position: fixed; left: 0; top: 0; outline: none; } </style> </head> <body > <canvas class="webgl"></canvas> <script type="module"> import * as THREE from "https://cdn.skypack.dev/three@0.133.1/build/three.module"; import { OrbitControls } from "https://cdn.skypack.dev/three@0.133.1/examples/jsm/controls/OrbitControls"; import { EffectComposer } from "https://cdn.skypack.dev/three@0.133.1/examples/jsm/postprocessing/EffectComposer.js"; import { RenderPass } from "https://cdn.skypack.dev/three@0.133.1/examples/jsm/postprocessing/RenderPass.js"; import { UnrealBloomPass } from "https://cdn.skypack.dev/three@0.133.1/examples/jsm/postprocessing/UnrealBloomPass.js"; // var capturer = new CCapture({ format: "webm" }); // capturer.start(); const params = { exposure: 0.9, bloomStrength: 0.9, // bloomThreshold: 0.01, bloomRadius: 1.5 }; // Canvas const canvas = document.querySelector("canvas.webgl"); // Scene const scene = new THREE.Scene(); // Object const geometry = new THREE.SphereGeometry(50, 128, 64); const uniforms = { uAmplitude: { value: 1.0 }, uTime: { value: 0 }, uColor: { value: new THREE.Color(0xff2200) } }; const shaderMaterial = new THREE.ShaderMaterial({ uniforms, vertexShader: ` uniform float uTime; varying vec2 vUv; varying vec3 vNormal; varying float vNoise; vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } vec4 permute(vec4 x) { return mod289(((x*34.0)+10.0)*x); } vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; } vec3 fade(vec3 t) { return t*t*t*(t*(t*6.0-15.0)+10.0); } float pnoise(vec3 P, vec3 rep) { vec3 Pi0 = mod(floor(P), rep); // Integer part, modulo period vec3 Pi1 = mod(Pi0 + vec3(1.0), rep); // Integer part + 1, mod period Pi0 = mod289(Pi0); Pi1 = mod289(Pi1); vec3 Pf0 = fract(P); // Fractional part for interpolation vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0 vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x); vec4 iy = vec4(Pi0.yy, Pi1.yy); vec4 iz0 = Pi0.zzzz; vec4 iz1 = Pi1.zzzz; vec4 ixy = permute(permute(ix) + iy); vec4 ixy0 = permute(ixy + iz0); vec4 ixy1 = permute(ixy + iz1); vec4 gx0 = ixy0 * (1.0 / 7.0); vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5; gx0 = fract(gx0); vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0); vec4 sz0 = step(gz0, vec4(0.0)); .........完整代码请登录后点击上方下载按钮下载查看
网友评论0