three+webgl实现三维液态融合变形动画效果代码
代码语言:html
所属分类:三维
代码描述:three+webgl实现三维液态融合变形动画效果代码
代码标签: three webgl 三维 液态 融合 变形 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: #020308;
overflow: hidden;
font-family: 'Inter', sans-serif;
position: relative;
}
canvas {
display: block;
width: 100%;
height: 100vh;
}
.transform-button {
position: absolute;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
padding: 12px 24px;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 50px;
color: rgba(255, 255, 255, 0.9);
font-family: 'Inter', sans-serif;
font-weight: 600;
font-size: 16px;
cursor: pointer;
transition: all 0.3s ease;
z-index: 100;
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.transform-button:hover {
background: rgba(255, 255, 255, 0.15);
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.2);
border: 1px solid rgba(255, 255, 255, 0.3);
transform: translateX(-50%) translateY(-2px);
}
.transform-button:active {
transform: translateX(-50%) translateY(0);
}
@media (max-width: 768px) {
.transform-button {
padding: 10px 20px;
font-size: 14px;
bottom: 20px;
}
}
</style>
</head>
<body translate="no">
<button id="transformButton" class="transform-button">Transform Shapes</button>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.160.js"></script>
<script type="module">
const scene = new THREE.Scene();
const camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
let cubeTransformValue = 0.0;
let targetCubeTransformValue = 0.0;
let isTransforming = false;
const material = new THREE.ShaderMaterial({
uniforms: {
time: { value: 0.0 },
resolution: { value: new THREE.Vector2(window.innerWidth, window.innerHeight) },
mouse: { value: new THREE.Vector2(0.5, 0.5) },
cubeTransform: { value: 0.0 } },
vertexShader: `
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = vec4(position, 1.0);
}
`,
fragmentShader: `
uniform float time;
uniform vec2 resolution;
uniform vec2 mouse;
uniform float cubeTransform;
varying vec2 vUv;
#define MAX_STEPS 100
#defin.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0