three+gsap三维几何体随机组合空间旋转动画效果代码
代码语言:html
所属分类:三维
代码描述:three+gsap三维几何体随机组合空间旋转动画效果代码,鼠标双击可实现更换颜色和几何体。
代码标签: three gsap 三维 几何体 随机 组合 空间 旋转 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body, html {
margin: 0;
overflow: hidden;
font-family: Arial, sans-serif;
background-color: #000;
user-select: none;
}
</style>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/gsap.3.10.4.js"></script>
</head>
<body>
<script type="importmap">
{
"imports": {
"three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/136/three.module.js",
"three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/"
}
}
</script>
<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { UnrealBloomPass } from 'three/addons/postprocessing/UnrealBloomPass.js';
import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
import { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';
import { BokehPass } from 'three/addons/postprocessing/BokehPass.js';
import { Reflector } from 'three/addons/objects/Reflector.js';
let scene, camera, renderer, controls, composer, bloomPass, shaderPass, group, spotLight, foregroundShader, bokehPass;
let objects = [];
init();
function init() {
scene = new THREE.Scene();
scene.background = new THREE.Color(0xfed7c3);
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 500);
camera.position.set(0, 3, 5);
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setPixelRatio(window.devicePixelRatio * 1.5);
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.shadowMap.enabled = true;
document.body.appendChild(renderer.domElement);
/*
const planeReflector = new THREE.PlaneGeometry(10, 10);
const planeReflectorBack = new THREE.PlaneGeometry(10, 10);
const frontReflector = new Reflector(planeReflector, {
clipBias: 0.003,
textureWidth: window.innerWidth * window.devicePixelRatio,
textureHeight: window.innerHeight * window.devicePixelRatio,
color: 0x889999,
recursion:.21
});
frontReflector.position.y = 1;
frontReflector.rotateX(-Math.PI / 2);
scene.add(frontReflector);
const backReflector = new Reflector(planeReflectorBack, {
clipBias: 0.003,
textureWidth: window.innerWidth * window.devicePixelRatio,
textureHeight: window.innerHeight * window.devicePixelRatio,
color: 0x889999
});
backReflector.position.y = 1;
backReflector.rotateX(Math.PI / 2);
//scene.add(backReflector);
*/
foregroundShader = {
uniforms: {
tDiffuse: { value: null },
u_time: { value: 0.0 },
u_resolution: { value: new THREE.Vector2(window.innerWidth, window.innerHeight) },
blendMode: { value: 1.0 }
},
vertexShader: `
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`,
fragmentShader: `
precision mediump float;
uniform sampler2D tDiffuse;
uniform float u_time;
uniform vec2 u_resolution;
uniform float blendMode;
varying vec2 vUv;
float random(vec2 st) {
return fract(sin(do.........完整代码请登录后点击上方下载按钮下载查看
网友评论0