three+TweenMax实现三维城市夜晚粒子穿行文字背景动画交互效果代码
代码语言:html
所属分类:三维
代码描述:three+TweenMax实现三维城市夜晚粒子穿行文字背景动画交互效果代码,
代码标签: three TweenMax 三维 城市 夜晚 粒子 穿行 文字 背景 动画 交互
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/bootstrap.4.3.1.min.css"> <style> body { color: white; margin: 0; text-align: center; background-color: black; cursor: crosshair; } canvas { display: block; width: 100%; height: 100%; } p { color: rgba(255,255,255, 0.5) } .header { top: 42%; } .header-content { padding: 50px; background-color: rgba(0,0,0,0.3); border-radius: 10px; } .footer { bottom:3%; } .description { color: gray; padding-top: 50px; } a, a:hover, a:visited { color: white; text-decoration: none; } .disable-selection { -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer */ -khtml-user-select: none; /* KHTML browsers (e.g. Konqueror) */ -webkit-user-select: none; /* Chrome, Safari, and Opera */ -webkit-touch-callout: none; /* Disable Android and iOS callouts*/ } h1::after { content: ' Three JS'; font-size: 12px; position:absolute; top: 3px; padding-left: 5px; font-weight: 400; } h2::after { content: '2'; font-size: 12px; position:absolute; top: 14px; padding-left: 5px; } .btn { border-radius: 100px; padding: 10px 25px; } </style> </head> <body> <!-- partial:index.partial.html --> <div class="container-fluid fixed-top header disable-selection"> <div class="row"> <div class="col"></div> <div class="col-md-6"> <div class="row"> <div class="col"> <h1><strong>Lab City 3D</strong></h1> <p class="small">– Back to the red –</p> <!--.btn.btn-danger(href='#',role='button', onclick='cameraSet()') + ADD LINE--> </div> </div> </div> <div class="col"></div> </div> </div> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.r118.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/TweenMax.min.js"></script> <script > // Three JS Template //----------------------------------------------------------------- BASIC parameters var renderer = new THREE.WebGLRenderer({antialias:true}); renderer.setSize( window.innerWidth, window.innerHeight ); if (window.innerWidth > 800) { renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; renderer.shadowMap.needsUpdate = true; //renderer.toneMapping = THREE.ReinhardToneMapping; //console.log(window.innerWidth); }; //--- document.body.appendChild( renderer.domElement ); window.addEventListener('resize', onWindowResize, false); function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize( window.innerWidth, window.innerHeight ); }; var camera = new THREE.PerspectiveCamera( 20, window.innerWidth / window.innerHeight, 1, 500 ); camera.position.set(0, 2, 14); var scene = new THREE.Scene(); var city = new THREE.Object3D(); var smoke = new THREE.Object3D(); var town = new THREE.Object3D(); var createCarPos = true; var uSpeed = 0.001; //----------------------------------------------------------------- FOG background var setcolor = 0xF02050; //var setcolor = 0xF2F111; //var setcolor = 0xFF6347; scene.background = new THREE.Color(setcolor); scene.fog = new THREE.Fog(setcolor, 10, 16); //scene.fog = new THREE.FogExp2(setcolor, 0.05); //----------------------------------------------------------------- RANDOM Function function mathRandom(num = 8) { var numValue = - Math.random() * num + Math.random() * num; return numValue; }; //----------------------------------------------------------------- CHANGE bluilding colors var setTintNum = true; function setTintColor() { if (setTintNum) { setTintNum = false; var setColor = 0x000000; } else { setTintNum = true; var setColor = 0x000000; }; //setColor = 0x222222; return setColor; }; //----------------------------------------------------------------- CREATE City function init() { var segments = 2; for (var i = 1; i<100; i++) { var geometry = new THREE.CubeGeometry(1,0,0,segments,segments,segments); var material = new THREE.MeshStandardMaterial({ color:setTintColor(), wireframe:false, //opacity:0.9, //transparent:true, //roughness: 0.3, //metalness: 1, shading: THREE.SmoothShading, //shading:THREE.FlatShading, side:THREE.DoubleSide}); var wmaterial = new THREE.MeshLambertMaterial({ color:0xFFFFFF, wireframe:true, transparent:true, opacity: 0.03, side:THREE.DoubleSide/*, shading:THREE.FlatShading*/}); var cube = new THREE.Mesh(geometry, material); var wire = new THREE.Mesh(geometry, wmaterial); var floor = new THREE.Mesh(geometry, material); var wfloor = new THREE.Mesh(geometry, wmaterial); cube.add(wfloor); cube.castShadow = true; cube.receiveShadow = true; cube.rotationValue = 0.1+Math.abs(mathRandom(8)); //floor.scale.x = floor.scale.z = 1+mathRandom(0.33); floor.scale.y = 0.05;//+mathRandom(0.5); cube.scale.y = 0.1+Math.abs(mathRandom(8)); //TweenMax.to(cube.scale, 1, {y:cube.rotationValue, repeat:-1, yoyo:true, delay:i*0.005, ease:Power1.easeInOut}); /*cube.setScale = 0.1+Math.abs(mathRandom()); TweenMax.to(cube.scale, 4, {y:cube.setScale, ease:Elastic.easeInOut, delay:0.2*i, yoyo:true, repeat:-1}); TweenMax.to(cube.position, 4, {y:cube.setScale / 2, ease:Elastic.easeInOut, delay:0.2*i, yoyo:true, repeat:-1});*/ var cubeWidth = 0.9; cube.s.........完整代码请登录后点击上方下载按钮下载查看
网友评论0