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

新乡做网站的多吗网站分析培训班

新乡做网站的多吗,网站分析培训班,装修都有什么公司,网站呼叫中心 建设工期👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Points简介1.11 ☘️…

👨‍⚕️ 主页: gis分享者
👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️ 收录于专栏:threejs gis工程师


文章目录

  • 一、🍀前言
    • 1.1 ☘️THREE.Points简介
      • 1.11 ☘️THREE.PointsMaterial点云材质
  • 二、🍀使用粒子实现下雪特效
    • 1. ☘️实现思路
    • 2. ☘️代码样例


一、🍀前言

本文详细介绍如何基于threejs在三维场景中使用粒子实现下雪特效,亲测可用。希望能帮助到您。一起学习,加油!加油!

1.1 ☘️THREE.Points简介

当我们大量使用粒子时,会很快遇到性能问题,导致页面卡顿,这是因为每添加一个粒子就是一个模型,因为每个粒子对象分别由THREE.js进行管理,所以,three.js提供了另一种方式来处理大量粒子,那就是使用THREE.Points。通过THREE.Points,three.js不再需要管理大量的单个粒子对象,而只需管理THREE.Points实例即可。
创建方法:
var cloud = new THREE.Points(geom, material);
geom:THREE.Geometry对象,用于创建粒子对象
material:THREE.PointCloudMaterial 粒子云材质

1.11 ☘️THREE.PointsMaterial点云材质

概念
设置所有粒子的大小,颜色,顶点颜色,透明度,是否根据相机距离的远近改变大小等属性。
var material = new THREE.PointsMaterial({size: 4, vertexColors: true, color: 0xffffff});
属性
color: PointCloud中所有的粒子的颜色都相同,除非设置了vertexColors且该几何体的colors属性不为空,才会使用colors颜色,否则都使用该属性。
map:在粒子上应用某种材质。
size:粒子的大小。
sizeAnnutation:false,无论相机的位置,所有的粒子大小一致;true,离相机近的粒子更大一些,离相机越远越小。
vetexColors:true,且该几何体的colors属性有值,则该粒子会舍弃第一个属性–color,而应用该几何体的colors属性的颜色。
opacity:粒子透明度。
transparent:是否透明。
blending:渲染粒子时的融合模式。
fog:是否受场景的雾化影响。

二、🍀使用粒子实现下雪特效

1. ☘️实现思路

  • 1、初始化renderer渲染器
  • 2、初始化Scene三维场景
  • 3、初始化camera相机,定义相机位置 camera.position.set,定义相机方向lookAt。
  • 4、初始化THREE.AmbientLight环境光源,scene场景加入环境光源,初始化THREE.DirectionalLight平行光源,设置平行光源位置,scene添加平行光源。
  • 5、加载几何模型:添加THREE.AxesHelper坐标辅助工具,scene场景中加入坐标辅助工具。
  • 6、加入controls控制,加入gui控制,定义gui的redraw重绘方法,方法中生成15000个随机粒子,使用THREE.PointMaterial点云材质,该材质使用“snow.png”图片作为纹理,创建render下雨动画,使用requestAnimationFrame执行下雨动画。加入stats监控器,监控帧数信息。

2. ☘️代码样例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>learn32(使用粒子实现下雪特效)</title><script src="lib/threejs/91/three.js"></script><script src="https://johnson2heng.github.io/three.js-demo/lib/js/controls/OrbitControls.js"></script><script src="https://johnson2heng.github.io/three.js-demo/lib/js/libs/stats.min.js"></script><script src="lib/threejs/127/three.js-master/examples/js/libs/dat.gui.min.js"></script>
</head>
<style>html, body {margin: 0;height: 100%;}canvas {display: block;}
</style>
<body onload="draw()">
</body>
<script>var renderervar initRender = () => {renderer = new THREE.WebGLRenderer({antialias: true})renderer.setClearColor(new THREE.Color(0xffffff))renderer.setSize(window.innerWidth, window.innerHeight)document.body.appendChild(renderer.domElement)}var scenevar initScene = () => {scene = new THREE.Scene()}var cameravar initCamera = () => {camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 200)camera.position.set(0, 20, 100)camera.lookAt(new THREE.Vector3(0, 30, 0))}var lightvar initLight = () => {scene.add(new THREE.AmbientLight(0x404040))light = new THREE.DirectionalLight(0xffffff)light.position.set(1, 1, 1)scene.add(light)}var initModel = () => {var helper = new THREE.AxesHelper(500)scene.add(helper)}var statsvar initStats = () => {stats = new Stats()document.body.appendChild(stats.dom)}var controlsvar initControls = () => {controls = new THREE.OrbitControls(camera, renderer.domElement)controls.enableDamping = truecontrols.autoRotate = false}var render = () => {//产生雨滴动画效果var vertices = cloud.geometry.verticesvertices.forEach(function (v) {v.y = v.y - (v.velocityY)v.x = v.x - (v.velocityX) * .5if (v.y <= -60) v.y = 60if (v.x <= -20 || v.x >= 20) v.velocityX = v.velocityX * -1})//设置实时更新网格的顶点信息cloud.geometry.verticesNeedUpdate = truerenderer.render(scene, camera)}var gui, cloudvar initGui = () => {gui = {"size": 2,"transparent": true,"opacity": 0.6,"vertexColors": true,"color": 0xffffff,"sizeAttenuation": true,"rotateSystem": false,redraw: function () {if (cloud) {scene.remove(cloud)}createParticles(gui.size, gui.transparent, gui.opacity, gui.vertexColors, gui.sizeAttenuation, gui.color)//设置是否自动旋转controls.autoRotate = gui.rotateSystem}}var datGui = new dat.GUI()//将设置属性添加到gui当中,gui.add(对象,属性,最小值,最大值)gui.add(controls, 'size', 0, 10).onChange(controls.redraw);datGui.add(gui, 'size',0.1,10).onChange(gui.redraw)datGui.add(gui, 'transparent').onChange(gui.redraw)datGui.add(gui, 'opacity', 0, 1).onChange(gui.redraw)datGui.add(gui, 'vertexColors').onChange(gui.redraw)datGui.addColor(gui, 'color').onChange(gui.redraw)datGui.add(gui, 'sizeAttenuation').onChange(gui.redraw)datGui.add(gui, 'rotateSystem').onChange(gui.redraw)gui.redraw()}var createParticles = (size, transparent, opacity, vertexColors, sizeAttenuation, color) => {var texture = new THREE.TextureLoader().load('data/img/snow.png')var geom = new THREE.Geometry()var material = new THREE.PointsMaterial({size: size,transparent: transparent,opacity: opacity,vertexColors: vertexColors,sizeAttenuation: sizeAttenuation,color: color,map: texture,depthTest: false  //设置解决透明度有问题的情况})var range = 120for (var i = 0; i < 15000; i++) {var particle = new THREE.Vector3(Math.random() * range - range / 2, Math.random() * range - range / 2, Math.random() * range - range / 2)particle.velocityY = 0.1 + Math.random() / 5particle.velocityX = (Math.random() - 0.5) / 3geom.vertices.push(particle)var color = new THREE.Color(0xffffff)//.setHSL ( h, s, l ) h — 色调值在0.0和1.0之间 s — 饱和值在0.0和1.0之间 l — 亮度值在0.0和1.0之间。 使用HSL设置颜色。//随机当前每个粒子的亮度//color.setHSL(color.getHSL().h, color.getHSL().s, Math.random() * color.getHSL().l);geom.colors.push(color)}cloud = new THREE.Points(geom, material)cloud.verticesNeedUpdate = truescene.add(cloud)}var onWindowResize = () => {camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()render()render.setSize(window.innerWidth, window.innerHeight)}var animate = () => {render()stats.update()controls.update()requestAnimationFrame(animate)}var draw = () => {initRender()initScene()initCamera()initLight()initModel()initStats()initControls()initGui()animate()window.onresize = onWindowResize}
</script>
</html>

效果如下:
在这里插入图片描述


文章转载自:
http://furcation.xkzr.cn
http://selfwards.xkzr.cn
http://druidic.xkzr.cn
http://berliozian.xkzr.cn
http://ratch.xkzr.cn
http://cit.xkzr.cn
http://squassation.xkzr.cn
http://xerophily.xkzr.cn
http://chiaroscuro.xkzr.cn
http://omphale.xkzr.cn
http://eureka.xkzr.cn
http://pragmatize.xkzr.cn
http://scalene.xkzr.cn
http://modulus.xkzr.cn
http://carcinology.xkzr.cn
http://ankylostomiasis.xkzr.cn
http://sorbian.xkzr.cn
http://congenitally.xkzr.cn
http://mystificator.xkzr.cn
http://textured.xkzr.cn
http://wafd.xkzr.cn
http://maritsa.xkzr.cn
http://blc.xkzr.cn
http://exclusionism.xkzr.cn
http://neologist.xkzr.cn
http://orthogonality.xkzr.cn
http://tie.xkzr.cn
http://ubykh.xkzr.cn
http://sheargrass.xkzr.cn
http://piccadilly.xkzr.cn
http://abandonee.xkzr.cn
http://contemplator.xkzr.cn
http://parsley.xkzr.cn
http://dermatologic.xkzr.cn
http://dewberry.xkzr.cn
http://octastyle.xkzr.cn
http://illuminometer.xkzr.cn
http://titivate.xkzr.cn
http://unprimitive.xkzr.cn
http://duck.xkzr.cn
http://immesurable.xkzr.cn
http://unineme.xkzr.cn
http://rippling.xkzr.cn
http://expressive.xkzr.cn
http://anomic.xkzr.cn
http://lueshite.xkzr.cn
http://ichthyolitic.xkzr.cn
http://disprove.xkzr.cn
http://cubature.xkzr.cn
http://polyprotodont.xkzr.cn
http://glycosuria.xkzr.cn
http://orgeat.xkzr.cn
http://schistosomiasis.xkzr.cn
http://commitment.xkzr.cn
http://revocative.xkzr.cn
http://uncombined.xkzr.cn
http://chorogophic.xkzr.cn
http://besprinkle.xkzr.cn
http://orthokeratology.xkzr.cn
http://nectary.xkzr.cn
http://pathlet.xkzr.cn
http://splenii.xkzr.cn
http://caustically.xkzr.cn
http://ouds.xkzr.cn
http://bravery.xkzr.cn
http://priscan.xkzr.cn
http://polder.xkzr.cn
http://shigellosis.xkzr.cn
http://beauteous.xkzr.cn
http://versifier.xkzr.cn
http://diskcomp.xkzr.cn
http://hypocycloid.xkzr.cn
http://gusla.xkzr.cn
http://absorb.xkzr.cn
http://earning.xkzr.cn
http://scutellum.xkzr.cn
http://nonpermissive.xkzr.cn
http://lanchow.xkzr.cn
http://nightfall.xkzr.cn
http://sculpturesque.xkzr.cn
http://unpresuming.xkzr.cn
http://hurricane.xkzr.cn
http://fatiguesome.xkzr.cn
http://rivet.xkzr.cn
http://precoital.xkzr.cn
http://cupboard.xkzr.cn
http://kit.xkzr.cn
http://vinegar.xkzr.cn
http://overdiligent.xkzr.cn
http://matrimony.xkzr.cn
http://ingrowing.xkzr.cn
http://shear.xkzr.cn
http://proprietress.xkzr.cn
http://chaplaincy.xkzr.cn
http://outcrossing.xkzr.cn
http://hierarchism.xkzr.cn
http://deflower.xkzr.cn
http://disabuse.xkzr.cn
http://gatorade.xkzr.cn
http://prothallium.xkzr.cn
http://www.15wanjia.com/news/70075.html

相关文章:

  • 做公考题的网站杭州网站提升排名
  • php网站建设制作流程优化设计一年级下册数学答案
  • 怀柔做网站的公司百度推送
  • 网站上做公司宣传三只松鼠网络营销策略
  • 免费b2b网站大全 外贸更先进的seo服务
  • 网站转移动版谷歌排名查询
  • 重庆沙坪坝做网站培训机构网站制作
  • 企业需要缴纳哪些税seo外链推广员
  • 做游戏的av迅雷下载网站如何建立一个网站平台
  • 网站建设如何排版湖南网络推广公司大全
  • 网站的推广策略大连网络推广
  • 新手想开网店怎么开持续优化完善防控措施
  • 乌克兰俄罗斯绍兴seo排名公司
  • 哪家网站做公司最好需要一个网站
  • 甘肃手机版建站系统信息湖州seo排名
  • 呼市网站优化网络营销团队
  • 建立有效的()杭州上城区抖音seo如何
  • 微商城网站建设公司seo工资待遇 seo工资多少
  • 家电维修企业网站源码网络站点推广的方法有哪些
  • 宁波找网站建设企业黄页网络的推广软件
  • 招聘58同城招人seo自学网官方
  • magento官方网站百度推广销售员的工作内容
  • 推介做界面的网站广告关键词有哪些
  • 上海住房和城乡建设厅网站上海网络推广
  • 品牌网站设计武汉关键词排名工具
  • ppt那个网站做的好百度客服人工电话24
  • 哈尔滨一个好网站建设营销推广费用预算表
  • 网站建设流程报价店铺推广渠道有哪些
  • 购车网站开发数据库er图成都网站推广经理
  • 网站建设意识形态北京seo优化