当前位置: 首页 > news >正文

dede电影网站模版网络热词2023

dede电影网站模版,网络热词2023,专做负面的网站,百度的搜索引擎优化前言 shaders实现星系 课程回顾 使用顶点着色器为每个粒子设置动画 a属性 #xff0c; u制服 #xff0c;v变化 像素比#xff1a;window.devicePixelRatio 自动从渲染器检索像素比 renderer.getPixelRatio() 如何尺寸衰减#xff0c; 放大缩小视角时#xff0c;粒子都是同… 前言 shaders实现星系     课程回顾         使用顶点着色器为每个粒子设置动画         a属性 u制服 v变化         像素比window.devicePixelRatio         自动从渲染器检索像素比             renderer.getPixelRatio()         如何尺寸衰减 放大缩小视角时粒子都是同样大小的问题         gl_Position (1.0 / - viewPosition);    下面是实现的数学解释 一、代码 这个我听的迷迷糊糊的直接看代码中的注释吧 1.script.js import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import * as dat from lil-gui import galaxyVertexShader from ./shaders/galaxy/vertex.glsl import galaxyFragmentShader from ./shaders/galaxy/fragment.glsl/*** Base*/ // Debug const gui new dat.GUI()// Canvas const canvas document.querySelector(canvas.webgl)// Scene const scene new THREE.Scene()/*** Galaxy*/ const parameters {} parameters.count 200000 parameters.size 0.005 parameters.radius 6 parameters.branches 3 parameters.spin 1 parameters.randomness 0.2 parameters.randomnessPower 3 parameters.insideColor #ff6030 parameters.outsideColor #1b3984let geometry null let material null let points nullconst generateGalaxy () {if(points ! null) // 制空{geometry.dispose()material.dispose()scene.remove(points)}/*** Geometry*/geometry new THREE.BufferGeometry()// 这里为什么*3 因为要向各个方向发展为什么*1只是在一个方向上拉伸const positions new Float32Array(parameters.count * 3)const randomness new Float32Array(parameters.count * 3)const colors new Float32Array(parameters.count * 3)const scales new Float32Array(parameters.count * 1)const insideColor new THREE.Color(parameters.insideColor)const outsideColor new THREE.Color(parameters.outsideColor)for(let i 0; i parameters.count; i){const i3 i * 3// Positionconst radius Math.random() * parameters.radiusconst branchAngle (i % parameters.branches) / parameters.branches * Math.PI * 2/*长时间就会发现星系在变薄像一条丝带 应该避免下面代码 创建一个新的Float32Array并且在旋转后使用该属性 不应该在旋转之前添加应用随机性randomZXY*/const randomZ Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() 0.5 ? 1 : - 1) * parameters.randomness * radiusconst randomX Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() 0.5 ? 1 : - 1) * parameters.randomness * radiusconst randomY Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() 0.5 ? 1 : - 1) * parameters.randomness * radius// 旋转 将数据填充到位置上positions[i3 ] Math.cos(branchAngle) * radiuspositions[i3 1] 0.0positions[i3 2] Math.sin(branchAngle) * radiusrandomness[i3 ] randomXrandomness[i3 1] randomYrandomness[i3 2] randomZ// Colorconst mixedColor insideColor.clone()mixedColor.lerp(outsideColor, radius / parameters.radius)colors[i3 ] mixedColor.rcolors[i3 1] mixedColor.gcolors[i3 2] mixedColor.b// Scalescales[i] Math.random()}geometry.setAttribute(position, new THREE.BufferAttribute(positions, 3))geometry.setAttribute(aRandomness, new THREE.BufferAttribute(randomness, 3))geometry.setAttribute(color, new THREE.BufferAttribute(colors, 3))geometry.setAttribute(aScale, new THREE.BufferAttribute(scales, 1))/*** Material*/material new THREE.ShaderMaterial({depthWrite: false,blending: THREE.AdditiveBlending,vertexColors: true,uniforms:{uTime: { value: 0 },uSize: { value: 30 * renderer.getPixelRatio() } // 星系顶点尺寸*像素比}, vertexShader: galaxyVertexShader,fragmentShader: galaxyFragmentShader})/*** Points*/points new THREE.Points(geometry, material)scene.add(points) }gui.add(parameters, count).min(100).max(1000000).step(100).onFinishChange(generateGalaxy).name(数量) gui.add(parameters, radius).min(0.01).max(20).step(0.01).onFinishChange(generateGalaxy).name(半径) gui.add(parameters, branches).min(2).max(20).step(1).onFinishChange(generateGalaxy).name(条数) gui.add(parameters, randomness).min(0).max(2).step(0.001).onFinishChange(generateGalaxy).name(随机) gui.add(parameters, randomnessPower).min(1).max(10).step(0.001).onFinishChange(generateGalaxy).name(随机功率) gui.addColor(parameters, insideColor).onFinishChange(generateGalaxy).name(内部颜色) gui.addColor(parameters, outsideColor).onFinishChange(generateGalaxy).name(外部颜色)/*** Sizes*/ const sizes {width: window.innerWidth,height: window.innerHeight }window.addEventListener(resize, () {// Update sizessizes.width window.innerWidthsizes.height window.innerHeight// Update cameracamera.aspect sizes.width / sizes.heightcamera.updateProjectionMatrix()// Update rendererrenderer.setSize(sizes.width, sizes.height)renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)) })/*** Camera*/ // Base camera const camera new THREE.PerspectiveCamera(75, sizes.width / sizes.height, 0.1, 100) camera.position.x 3 camera.position.y 3 camera.position.z 3 scene.add(camera)// Controls const controls new OrbitControls(camera, canvas) controls.enableDamping true/*** Renderer*/ const renderer new THREE.WebGLRenderer({canvas: canvas }) renderer.setSize(sizes.width, sizes.height) renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2))/*** Generate the first galaxy*/ generateGalaxy()/*** Animate*/ const clock new THREE.Clock()const tick () {const elapsedTime clock.getElapsedTime()// Update materialmaterial.uniforms.uTime.value elapsedTime// Update controlscontrols.update()// Renderrenderer.render(scene, camera)// Call tick again on the next framewindow.requestAnimationFrame(tick) }tick() 2. 顶点着色器 uniform float uTime; uniform float uSize;attribute vec3 aRandomness; attribute float aScale;varying vec3 vColor;/* atan(x) 弧度 反正切函数 */void main() {/*** Position*/vec4 modelPosition modelMatrix * vec4(position, 1.0);// Rotatefloat angle atan(modelPosition.x, modelPosition.z); // 获取角度 偏移的float distanceToCenter length(modelPosition.xz); // 到中心的距离float angleOffset (1.0 / distanceToCenter) * uTime ; // 根据时间应该旋转多少度angle angleOffset; // 更新角度 并且 角度加上角度偏移modelPosition.x cos(angle) * distanceToCenter; // 更新到模型上同时乘以到中心的距离modelPosition.z sin(angle) * distanceToCenter;// Randomness 随机modelPosition.xyz aRandomness;vec4 viewPosition viewMatrix * modelPosition;vec4 projectedPosition projectionMatrix * viewPosition;gl_Position projectedPosition;/*** Size*/gl_PointSize uSize * aScale;gl_PointSize * (1.0 / - viewPosition.z);/*** Color*/vColor color; } 3.片段着色器 varying vec3 vColor;void main() {// // Disc// float strength distance(gl_PointCoord, vec2(0.5));// strength step(0.5, strength);// strength 1.0 - strength;// // Diffuse point// float strength distance(gl_PointCoord, vec2(0.5));// strength * 2.0;// strength 1.0 - strength;// Light pointfloat strength distance(gl_PointCoord, vec2(0.5));strength 1.0 - strength;strength pow(strength, 10.0);// Final colorvec3 color mix(vec3(0.0), vColor, strength);gl_FragColor vec4(color, 1.0); } 二、效果 shaders - 星系 总结 今天学的迷迷糊糊的整体代码知道看得懂思路如何偏移以及一些数学计算很蒙
http://www.dnsts.com.cn/news/93861.html

相关文章:

  • 网站推广是什么意思网站导航建设注意事项
  • 开网络公司做网站挣钱吗php企业中英文网站源码
  • 网站副标题班级网站建设方案书
  • 正规的网站制作在哪里南通网站排名优化
  • 招标网站有哪些做游戏模板下载网站有哪些
  • 做网站_接活无货源网店哪个平台好
  • 临沂做商城网站的公司怎么样查中企动力做的网站
  • 京东网站项目建设规划书贵阳学校网站建设
  • 上海网站制作公司有哪些郑州公司网站建设哪家好
  • 有哪些网站做的很有特色wordpress做大站好吗
  • 网站怎么做缓存在线推广企业网站的方法有哪些
  • 免费网站注册免费网站申请创立一个网站需要什么
  • 网站空间计算想自己建个网站
  • 网站优化长沙中国建设银行招聘信息网站
  • 网站内容建设 内容审核流程北京seo顾问
  • 如何建立一个免费的网站江苏苏中建设集团股份有限公司网站
  • 电子商务网站建设 教学大纲有域名怎样做网站
  • 建筑设计门户网站吉林省建设信息网工程招投标
  • 做网站用广告赚钱过时了建筑工程网络图片
  • 如何建设彩票私人网站怎么样增加网站权重
  • 全国职工素质建设工程专题网站数据分析师报名官网
  • 做婚恋网站投入多少钱安阳网络教研平台首页
  • 智能建站价格有哪些做平面设计好素材网站
  • 给个网站免费的网页制作怎么输入文字
  • 如何写手机适配网站手机网站永久免费制作
  • 网站注销做网站的要素
  • 做的网站提示不安全问题搜狐快站怎么做网站
  • 如何在电脑上做物流网站南京模板建站定制网站
  • changer网站建设商标购买网站
  • 自己怎么做优惠券网站浪花直播