three实现可调节参数的三维城市废墟穿梭动画效果代码
代码语言:html
所属分类:三维
代码描述:three实现可调节参数的三维城市废墟穿梭动画效果代码
代码标签: three 调节 参数 三维 城市 废墟 穿梭 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body { margin: 0; overflow: hidden; } </style> </head> <body> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.0.99.0..js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script> <script > console.clear(); window.addEventListener("DOMContentLoaded",app); function app() { var scene, camera, renderer, controls, GUI, textureLoader = new THREE.TextureLoader(), asphaltTexture, bldgTexture, bldgs = [], debris = [], debrisIdealSet = [], ambientLight, hemiLight, // user adjustable brightness = 0.5, fogDistance = 720, speed = 0.5, // should stay as is bldgColor = 0x242424, lightColor = 0x444444, skyColor = 0xaaaaaa, chunkSize = 128, chunksAtATime = 6, debrisPerChunk = 32, debrisMaxChunkAscend = 2, smBldgSize = 10, lgBldgSize = 12; class Building { constructor(x,y,z,width,height,depth,rotX = 0,rotY = 0,rotZ = 0) { this.geo = new THREE.CubeGeometry(width,height,depth); this.mat = new THREE.MeshLambertMaterial({ color: bldgColor, map: bldgTexture }); this.mat.map.wrapS = THREE.RepeatWrapping; this.mat.map.wrapT = THREE.RepeatWrapping; this.mat.map.repeat.set(1,height/width > 2 ? 3 : 2); let halfHeight = height/2, isRotated = rotX != 0 || rotY != 0 || rotZ != 0; this.mesh = new THREE.Mesh(this.geo, this.mat); this.mesh.position.set(x,isRotated ? y : y + halfHeight,z); if (isRotated) { this.geo.translate(0,halfHeight,0); this.mesh.rotation.x = rotX * Math.PI/180; this.mesh.rotation.y = rotY * Math.PI/180; this.mesh.rotation.z = rotZ * Math.PI/180; } this.mesh.castShadow = true; scene.add(this.mesh); } } class Debris { constructor(x,y,z,width,height,depth,rotX = 0,rotY = 0,rotZ = 0) { this.geo = new THREE.CubeGeometry(width,height,depth); this.mat = new THREE.MeshLambertMaterial({ color: bldgColor }); this.mesh = new THREE.Mesh(this.geo, this.mat); this.mesh.position.set(x,y,z); this.mesh.rotation.set( rotX * Math.PI/180, rotY * Math.PI/180, rotZ * Math.PI/180 ); scene.add(this.mesh); } } const randomInt = (min,max) => { return Math.floor(Math.random() * (max - min)) + min; }, randomAngle = () => { return Math.floor(Math.random() * 360); } var init = () => { // load textures asphaltTexture = textureLoader.load("https://i.ibb.co/hVK82BH/asphalt-texture.jpg"); bldgTexture = textureLoader.load("https://i.ibb.co/ZGLhtGv/building-texture.jpg"); // setup scene scene = new THREE.Scene(); camera = new TH.........完整代码请登录后点击上方下载按钮下载查看
网友评论0