three打造一个三维电影胶卷滚动动画效果代码
代码语言:html
所属分类:三维
代码描述:three打造一个三维电影胶卷滚动动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
body {
margin: 0;
overflow:hidden
}
</style>
</head>
<body translate="no" >
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.121.js"></script>
<script>
const infinite = false;
const waveLength = 1.1;
const slideCount = 8;
const precision = 25;
const raduis = 0.7;
const filmWidth = 0.3;
const filmColor = '#876';
const three = configureThree();
const customDepthMaterial = createDepthMaterial();
const uniforms = {
rotation: { value: 0 } };
const film = new THREE.Object3D();
three.scene.add(film);
for (let i = 0; i < slideCount * 3; i++)
addSlide(i, `//repo.bfw.wiki/bfwrepo/image/5d65ea7d8bc8b.png?x-oss-process=image/auto-orient,1/resize,m_fill,w_200,h_200,/quality,q_90`);
let rotation = 1.2;
requestAnimationFrame(function render(t) {
moveFilm(t);
three.render();
requestAnimationFrame(render);
});
// constols
let touchStartY;
let rotationAtStart;
addEventListener('touchstart', e => {
touchStartY = e.touches[0].clientY;
rotationAtStart = rotation;
});
addEventListener('touchmove', e => {
rotation = rotationAtStart + (e.touches[0].clientY - touchStartY) / 50;
});
addEventListener('wheel', e => {
rotation -= e.deltaY / 400;
});
//
function configureThree() {
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.localClippingEnabled = true;
document.body.appendChild(renderer.domElement);
const scene = new THREE.Scene();
scene.add(new THREE.AmbientLight('white', 0.3));
scene.add(createDirectionalLight());
const camera = new THREE.OrthographicCamera();
camera.position.set(0, 0, 1.5);
camera.lookAt(scene.position);
return { scene, render };
function render() {
if (renderer.width !== innerWidth ||
renderer.height !== innerHeight) {
renderer.setSize(innerWidth, innerHeight);
camera.left = -innerWidth / innerHeight;
camera.right = -camera.left;
camera.updateProjectionMatrix();
}
renderer.render(scene, camera);
}
}
function createDirectionalLight() {
const dirLight = new THREE.Di.........完整代码请登录后点击上方下载按钮下载查看
网友评论0