three打造日出草坪小草摆动三维效果
代码语言:html
所属分类:三维
代码描述:three打造日出草坪小草摆动三维效果,可以360拖动
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body { background-color: #fff; margin: 0; overflow: hidden; } .label { position: absolute; top: 0; left: 0; padding: 5px 15px; color: #fff; font-size: 13px; background-color: rgba(0, 0, 0, .15); } .instructions { position: absolute; bottom: 0%; left: 0; padding: 5px 15px; color: #fff; font-size: 13px; background-color: rgba(0, 0, 0, .15); } canvas { display: block; } </style> </head> <body translate="no"> <canvas id="canvas"></canvas> <div class="label"> Logo </div> <div class="instructions"> WASD/ARROW KEYS TO MOVE, MOUSE TO LOOK </div> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.109.js"></script> <script src="//repo.bfw.wiki/bfwrepo/js/OrbitControls.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/Stats-16.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script> <script> var canvas = document.getElementById("canvas"); const mobile = (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i) ); //Variables for blade mesh var joints = 4; var bladeWidth = 0.12; var bladeHeight = 1; //Patch side length var width = 120; //Number of vertices on ground plane side var resolution = 32; //Distance between two ground plane vertices var delta = width/resolution; //Radius of the sphere onto which the ground plane is bended var radius = 120; //User movement speed var speed = 1.5; //The global coordinates //The geometry never leaves a box of width*width around (0, 0) //But we track where in space the camera would be globally var pos = new THREE.Vector2(0, 0); //Number of blades var instances = 40000; if (mobile) { instances = 7000; width = 50; } //Sun //Height over horizon in range [0, PI/2.0] var elevation = 0.3; //Rotation around Y axis in range [0, 2*PI] var azimuth = 2.0; //Lighting variables for grass var ambientStrength = 0.6; var translucencyStrength = 1.4; var specularStrength = 0.5; var diffuseStrength = 2.2; var shininess = 256; var sunColour = new THREE.Vector3(1.0, 1.0, 1.0); var specularColour = new THREE.Vector3(1.0, 1.0, 1.0); //Camera rotate var rotate = false; //Initialise three.js. There are two scenes which are drawn after one another with clear() called manually at the start of each frame //Grass scene var scene = new THREE.Scene(); //Sky scene var backgroundScene = new THREE.Scene(); var renderer = new THREE.WebGLRenderer({ antialias: true, canvas: canvas }); renderer.outputEncoding = THREE.sRGBEncoding; renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(window.innerWidth, window.innerHeight); //Camera const FOV = 45; var camera = new THREE.PerspectiveCamera(FOV, window.innerWidth / window.innerHeight, 1, 20000); camera.position.set(-70, 0, -50); camera.lookAt(new THREE.Vector3(0, 0, 0)); scene.add(camera); backgroundScene.add(camera); //Light for ground plane var ambientLight = new THREE.AmbientLight(0xffffff, 0.5); scene.add(ambientLight); //OrbitControls.js for camera manipulation controls = new THREE.OrbitControls(camera, renderer.domElement); controls.autoRotate = rotate; controls.autoRotateSpeed = 1.0; controls.maxDistance = 65.0; if (mobile) { controls.maxDistance = 25.0; } controls.minDistance = 5.0; //Disable keys to stop arrow keys from moving the camera controls.enableKeys = false; controls.update(); const stats = new Stats(); stats.showPanel(0); stats.domElement.style.position = 'absolute'; stats.domElement.style.right = '0px'; stats.domElement.style.bottom = '0px'; document.body.appendChild(stats.domElement); //************* GUI *************** var gui = new dat.GUI(); gui.add(this, 'radius').min(85).max(1000).step(5); gui.add(this, 'speed').min(0.5).max(10).step(0.01); gui.add(this, 'elevation').min(0.0).max(Math.PI/2.0).step(0.01).listen().onChange(function(value) { updateSunPosition(); }); gui.add(this, '.........完整代码请登录后点击上方下载按钮下载查看
网友评论0