日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

雪夜(Snowy Night)

發布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 雪夜(Snowy Night) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

雪夜(Snowy Night)

  • 示例
  • HTML
  • JS

更多有趣示例 盡在 知屋安磚社區

示例

HTML

<!doctype html> <html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>threejs</title><style>body { margin: 0;overflow: hidden;background: #000046; /* fallback for old browsers */background: -webkit-linear-gradient(to top, #1CB5E0, #000046); /* Chrome 10-25, Safari 5.1-6 */background: linear-gradient(to top, #1CB5E0, #000046); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */}</style> </head><body id="body"><div id="WebGL-output"></div><script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/103/three.min.js"></script><script src="https://unpkg.com/three@0.104.0/examples/js/controls/OrbitControls.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/simplex-noise/2.4.0/simplex-noise.min.js"></script> </body> </html>

JS

let scene, camera, renderer, orbitControls, particles,planeMesh;const noise = new SimplexNoise(); const particleNum = 10000; const maxRange = 1000; const minRange = maxRange / 2; const textureSize = 64.0;const drawRadialGradation = (ctx, canvasRadius, canvasW, canvasH) => {ctx.save();const gradient = ctx.createRadialGradient(canvasRadius,canvasRadius,0,canvasRadius,canvasRadius,canvasRadius);gradient.addColorStop(0, 'rgba(255,255,255,1.0)');gradient.addColorStop(0.5, 'rgba(255,255,255,0.5)');gradient.addColorStop(1, 'rgba(255,255,255,0)');ctx.fillStyle = gradient;ctx.fillRect(0,0,canvasW,canvasH);ctx.restore(); }const getTexture = () => {const canvas = document.createElement('canvas');const ctx = canvas.getContext('2d');const diameter = textureSize;canvas.width = diameter;canvas.height = diameter;const canvasRadius = diameter / 2;/* gradation circle------------------------ */drawRadialGradation(ctx, canvasRadius, canvas.width, canvas.height);/* snow crystal------------------------ */// drawSnowCrystal(ctx, canvasRadius);const texture = new THREE.Texture(canvas);//texture.minFilter = THREE.NearestFilter;texture.type = THREE.FloatType;texture.needsUpdate = true;return texture; }const makeRoughGround = (mesh) => {const time = Date.now();mesh.geometry.vertices.forEach(function(vertex, i) {const noise1 = noise.noise2D(vertex.x * 0.01 + time * 0.0003,vertex.y * 0.01 + time * 0.0003,vertex.z * 0.01 + time * 0.0003,) * 5;const noise2 = noise.noise2D(vertex.x * 0.02 + time * 0.00012,vertex.y * 0.02 + time * 0.00015,vertex.z * 0.02 + time * 0.00015,) * 4;const noise3 = noise.noise2D(vertex.x * 0.009 + time * 0.00015,vertex.y * 0.012 + time * 0.00009,vertex.z * 0.015 + time * 0.00015,) * 4;const distance = (noise1 + noise2 + noise3);vertex.z = distance;})mesh.geometry.verticesNeedUpdate = true;mesh.geometry.normalsNeedUpdate = true;mesh.geometry.computeVertexNormals();mesh.geometry.computeFaceNormals(); }const render = (timeStamp) => {orbitControls.update();makeRoughGround(planeMesh);const posArr = particles.geometry.vertices;const velArr = particles.geometry.velocities;posArr.forEach((vertex, i) => {const velocity = velArr[i];const x = i * 3;const y = i * 3 + 1;const z = i * 3 + 2;const velX = Math.sin(timeStamp * 0.001 * velocity.x) * 0.1;const velZ = Math.cos(timeStamp * 0.0015 * velocity.z) * 0.1;vertex.x += velX;vertex.y += velocity.y;vertex.z += velZ;if (vertex.y < -minRange ) {vertex.y = minRange;}})particles.geometry.verticesNeedUpdate = true;renderer.render(scene, camera);requestAnimationFrame(render); }const onResize = () => {const width = window.innerWidth;const height = window.innerHeight;renderer.setPixelRatio(window.devicePixelRatio);renderer.setSize(width, height);camera.aspect = width / height;camera.updateProjectionMatrix(); }const init = () => {/* scene-------------------------------------------------------------*/scene = new THREE.Scene();scene.fog = new THREE.Fog(0x000036, 0, minRange * 3);/* camera-------------------------------------------------------------*/camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 2000);camera.position.set(0, -100, 400);camera.lookAt(scene.position);/* renderer-------------------------------------------------------------*/renderer = new THREE.WebGLRenderer({ antialias: true,alpha: true});renderer.setPixelRatio(window.devicePixelRatio);renderer.setClearColor(new THREE.Color(0x000036));renderer.setSize(window.innerWidth, window.innerHeight);renderer.shadowMap.enabled = true;//renderer.setClearAlpha(0);/* OrbitControls-------------------------------------------------------------*/orbitControls = new THREE.OrbitControls(camera, renderer.domElement);orbitControls.autoRotate = false;orbitControls.enableDamping = true;orbitControls.dampingFactor = 0.2;/* AmbientLight-------------------------------------------------------------*/const ambientLight = new THREE.AmbientLight(0x191970);scene.add(ambientLight);/* SpotLight-------------------------------------------------------------*/const spotLight = new THREE.SpotLight(0xffffff);spotLight.distance = 2000;spotLight.position.set(-200, 700, 0);spotLight.castShadow = true;scene.add(spotLight);/* Plane--------------------------------------*/const planeGeometry = new THREE.PlaneGeometry(500, 500, 100, 100);const planeMaterial = new THREE.MeshLambertMaterial({color: 0xffffff,side: THREE.DoubleSide});planeMesh = new THREE.Mesh(planeGeometry, planeMaterial);planeMesh.receiveShadow = true;planeMesh.rotation.x = -0.5 * Math.PI;planeMesh.position.x = 0;planeMesh.position.y = -100;planeMesh.position.z = 0;scene.add(planeMesh);/* Snow Particles-------------------------------------------------------------*/const pointGeometry = new THREE.Geometry();for (let i = 0; i < particleNum; i++) {const x = Math.floor(Math.random() * maxRange - minRange);const y = Math.floor(Math.random() * maxRange - minRange);const z = Math.floor(Math.random() * maxRange - minRange);const particle = new THREE.Vector3(x, y, z);pointGeometry.vertices.push(particle);// const color = new THREE.Color(0xffffff);// pointGeometry.colors.push(color);}const pointMaterial = new THREE.PointsMaterial({size: 8,color: 0xffffff,vertexColors: false,map: getTexture(),// blending: THREE.AdditiveBlending,transparent: true,// opacity: 0.8,fog: true,depthWrite: false});const velocities = [];for (let i = 0; i < particleNum; i++) {const x = Math.floor(Math.random() * 6 - 3) * 0.1;const y = Math.floor(Math.random() * 10 + 3) * - 0.05;const z = Math.floor(Math.random() * 6 - 3) * 0.1;const particle = new THREE.Vector3(x, y, z);velocities.push(particle);}particles = new THREE.Points(pointGeometry, pointMaterial);particles.geometry.velocities = velocities;scene.add(particles);/* resize-------------------------------------------------------------*/window.addEventListener('resize', onResize);/* rendering start-------------------------------------------------------------*/document.getElementById('WebGL-output').appendChild(renderer.domElement);requestAnimationFrame(render); }document.addEventListener('DOMContentLoaded', () => {init(); });

總結

以上是生活随笔為你收集整理的雪夜(Snowy Night)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人人爽人人爽人人片 | 夜夜嗨av禁果av粉嫩av懂色av | 婷婷导航| 亚洲免费一区视频 | 久久久视频在线观看 | 日韩 国产 在线 | 日本毛片在线看 | 国产精品.www| 国产精品成人99一区无码 | 久久精品日韩无码 | 国产夫妻在线观看 | 久草精品在线观看 | 日韩成人一区 | 操操久久 | 男男play呻吟动漫网站 | 中文字幕一区二区三区门四区五区 | 一级黄色裸体片 | 日本成人在线视频网站 | 亚洲成人va| 2019中文字幕在线免费观看 | 国产av 一区二区三区 | 国产黄在线观看 | 1000部啪啪未满十八勿入 | 四虎影视永久免费 | 91在线视频在线观看 | 视频在线观看一区二区三区 | аⅴ资源天堂资源库在线 | 91蜜桃臀久久一区二区 | 日韩欧美第一页 | 久久精品视频中文字幕 | jizz国产在线观看 | 香蕉视频链接 | 黑人玩弄人妻一区二区三区免费看 | 热久久最新网址 | 欧美成人91| 欧美重口另类 | 黄金网站在线观看 | 一区二区三区欧美日韩 | 少妇特黄一区二区三区 | 黄色动漫软件 | av网站在线看 | 免费在线国产精品 | 亚洲国产日韩在线观看 | 欧美视频自拍偷拍 | av天堂一区 | av一道本| 欧美久久久久久久久久久久久久 | 成人一级片在线观看 | 成人小视频免费看 | 九九午夜视频 | 一区二区三区精品在线 | 在线观看免费高清视频 | 日韩不卡中文字幕 | 成人精品一区二区三区中文字幕 | 亚洲大逼 | 国产无遮挡又黄又爽在线观看 | 亚洲国产福利 | 香蕉视频911 | 1024中文字幕 | av中字在线| 黄色天天影视 | 久久久久99精品成人片我成大片 | av漫画在线观看 | 国产一区成人 | 久久精品2019中文字幕 | 久久久久五月天 | 一区二区三区www污污污网站 | 久久精品视频免费 | 97久久国产精品 | 熟女俱乐部一区二区视频在线 | 日韩欧美在线观看一区 | 欧美一区二区三区的 | 精品一区二区三区电影 | aaa黄色 | 日产精品久久久久久久 | 国产一级片播放 | 日韩123区 | 最新视频在线观看 | 深夜福利在线免费观看 | 午夜黄色大片 | 成人精品视频一区二区 | 国产欧美一区二区精品忘忧草 | 黄色成年视频 | 在线亚洲欧美 | 国产视频一二区 | 欧美成人高清在线 | 97人妻一区二区精品视频 | 黄网站免费观看 | 视频在线91 | 男人天堂2019 | 女性女同性aⅴ免费观女性恋 | 玩偶游戏在线观看免费 | 一区二区三区四区在线观看视频 | 麻豆极品| 国产av日韩一区二区三区精品 | 欧美黑人疯狂性受xxxxx喷水 | 99免费在线视频 | 日韩手机在线视频 | 有机z中国电影免费观看 |