threejs实现三维恐龙滑板动画效果代码
代码语言:html
所属分类:三维
代码描述:threejs实现三维恐龙滑板动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body { margin: 0; } .world { position: absolute; overflow: hidden; width: 100%; height: 100%; background-color: #65BDCC; } .toggle-music { position: absolute; top: 1rem; left: 1rem; width: 3rem; height: 3rem; background: url('//repo.bfw.wiki/bfwrepo/icon/60d1c2f3e1d1e.png') center center / 70% no-repeat; cursor: pointer; } .music-off { background: url('//repo.bfw.wiki/bfwrepo/icon/60d1c2e3eff9a.gif') center center / 60% no-repeat; } </style> </head> <body > <div class="world"></div><a class="toggle-music"></a> <audio class="world-music" src="//repo.bfw.wiki/bfwrepo/sound/61397f63d3f7c.mp3"></audio> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.84.js"></script> <script> 'use strict'; let scene, camera, renderer, raycaster, mouseDown, world, night = false; let ground, city, dino; let width, height; let speed = 0.05; function init() { width = window.innerWidth, height = window.innerHeight; scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 50); camera.position.set(-2, 2, 12); camera.lookAt(scene.position); renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true }); renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(width, height); renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; addLights(); drawGround(); drawCity(); drawDino(); world = document.querySelector('.world'); world.appendChild(renderer.domElement); document.addEventListener('mousedown', onMouseDown); document.addEventListener('mouseup', onMouseUp); document.addEventListener('touchstart', onTouchStart); document.addEventListener('touchend', onTouchEnd); window.addEventListener('resize', onResize); } function addLights() { const light = new THREE.HemisphereLight(); scene.add(light); const directLight1 = new THREE.DirectionalLight(0xffffff, 0.3); directLight1.castShadow = true; directLight1.position.set(20, 10, 18); scene.add(directLight1); const directLight2 = new THREE.DirectionalLight(0xffffff, 0.8); directLight2.castShadow = true; directLight2.position.set(-14, 6, 14); scene.add(directLight2); } function drawGround() { ground = new THREE.Mesh(new THREE.PlaneGeometry(90, 30), new THREE.MeshStandardMaterial({ color: 0x375076, roughness: 1 })); ground.rotation.x = -Math.PI / 2; ground.position.y = -0.6; ground.receiveShadow = true; scene.add(ground); } function drawCity() { city = new City(); scene.add(city.group); } function drawDino() { dino = new Dino(); scene.add(dino.group); } function onResize() { width = window.innerWidth; height = window.innerHeight; camera.aspect = width / height; camera.updateProjectionMatrix(); renderer.setSize(width, height); } function onMouseDown(event) { mouseDown = true; } function onTouchStart(event) { if (event.target.classList[0] === 'toggle-music') return; event.preventDefault(); mouseDown = true; if (speed !== 0.1) speed = 0.1; } function onMouseUp() { mouseDown = false; } function onTouc.........完整代码请登录后点击上方下载按钮下载查看
网友评论0