大连企业网站开发app网站做二手交易

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

大连企业网站开发,app网站做二手交易,网站 微信认证,校园网站建设计划#x1f468;⚕️ 主页#xff1a; gis分享者 #x1f468;⚕️ 感谢各位大佬 点赞#x1f44d; 收藏⭐ 留言#x1f4dd; 加关注✅! #x1f468;⚕️ 收录于专栏#xff1a;threejs gis工程师 文章目录 一、#x1f340;前言1.1 ☘️THREE.LineDashedMaterial虚…⚕️ 主页 gis分享者 ⚕️ 感谢各位大佬 点赞 收藏⭐ 留言 加关注✅! ⚕️ 收录于专栏threejs gis工程师 文章目录 一、前言1.1 ☘️THREE.LineDashedMaterial虚线材质概念和属性 二、THREE.LineDashedMaterial虚线材质基于gosper高斯帕曲线生成雪花动画效果1. ☘️实现思路2. ☘️代码样例 一、前言 本文详细介绍如何基于threejs在三维场景中实现THREE.LineBasicMaterial虚线材质基于gosper高斯帕曲线生成雪花动画亲测可用。希望能帮助到您。一起学习加油加油 1.1 ☘️THREE.LineDashedMaterial虚线材质概念和属性 THREE.LineDashedMaterial 的材质类型用于创建虚线线条效果。THREE.LineDashedMaterial 是 Three.js 为了简化创建虚线线条而提供的一个方便的材质类型它允许用户通过简单的属性配置来实现虚线效果而不需要手动编写着色器。 常用属性 THREE.LineDashedMaterial 继承自 THREE.Material并具有以下一些特定的属性可以用来控制材质的虚线效果 color线条的颜色默认为白色0xffffff。可以是一个整数表示十六进制颜色值。 linewidth线条宽度默认为 1。注意实际的线条宽度可能会受到浏览器和硬件的支持限制。 scale虚线的比例默认为 1。可以用来缩放虚线的大小。 dashSize虚线段的长度默认为 3。这是虚线中实线部分的长度。 gapSize虚线间隙的长度默认为 1。这是虚线中空白部分的长度。 vertexColors是否启用顶点颜色默认为 THREE.NoColors。可以设置为 THREE.VertexBasicColors、THREE.VertexColors 或 THREE.FaceColors。 transparent是否开启透明模式默认为 false。如果设置为 true则需要设置 opacity 或者使用 alphaMap。 opacity材质的全局透明度默认为 1不透明。 side指定材质在哪一面渲染可以是 THREE.FrontSide正面、THREE.BackSide背面或 THREE.DoubleSide双面。 depthTest是否进行深度测试默认为 true。 depthWrite是否写入深度缓冲区默认为 true。 blending混合模式默认为 THREE.NormalBlending。可以设置为 THREE.AdditiveBlending、THREE.SubtractiveBlending 等。 wireframe是否启用线框模式默认为 false。 visible是否渲染该材质默认为 true。 二、THREE.LineDashedMaterial虚线材质基于gosper高斯帕曲线生成雪花动画效果

  1. ☘️实现思路 1、初始化renderer渲染器2、初始化Scene三维场景3、初始化camera相机定义相机位置 camera.position.set设置相机方向camera.lookAt4、初始化THREE.AmbientLight环境光源scene场景加入环境光源初始化THREE.SpotLight聚焦光源设置聚焦光源位置设置聚焦光源投影scene添加聚焦光源。5、加载几何模型创建THREE.Line线几何体使用gosper高斯帕曲线生成的雪花数据THREE.Line线几何体使用THREE.LineDashedMaterial 虚线材质Scene场景加入生成的THREE.Line线几何体。6、创建旋转动画执行旋转动画加入stats监控器监控帧数信息。
  2. ☘️代码样例 !DOCTYPE html html langen headmeta charsetUTF-8titlelearn21(THREE.LineBasicMaterial线性几何体)/titlescript srclib/threejs/91/three.js/script!–script srchttps://johnson2heng.github.io/three.js-demo/lib/three.js/script–script srclib/threejs/127/three.js-master/examples/js/controls/OrbitControls.js/scriptscript srclib/threejs/127/three.js-master/examples/js/libs/stats.min.js/scriptscript srclib/threejs/127/three.js-master/examples/js/libs/dat.gui.min.js/script /head stylebody {margin: 0;}canvas {width: 100%;height: 100%;display: block;} /style body onloaddraw() /body script// color 该属性设置材质的颜色如果设置了vertexColors这是属性将被忽略// linewidth 设置线的宽度默认值为1.0// linecap 这个属性定义了线框模式下顶点间线段的端点如何显示。可选的值包括butt平、round圆和square方。默认值为round。在实际使用中这个属性的修改结果很难看出来。WebGLRenderer对象不支持该属性// linejoin 这个属性定义了线段的连接点如何显示。可选的值有round圆、bevel斜角和miter尖角。默认值为round。如果你在一个使用低透明度和很大wireframeLinewidth值的例子里靠近观察就可以看到这个属性的效果。WebGLRenderer对象不支持该属性// vertexColors 将这个属性设置成THREE.VertexColors值就可以给每个顶点指定一种颜色// fog 该属性指定当前材质是否受全局雾化效果设置的影响var renderervar initRender () {renderer new THREE.WebGLRenderer({antialias: true})renderer.shadowMap.enabled truerenderer.shadowMap.type THREE.PCFSoftShadowMaprenderer.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, 0.1, 1000)camera.position.set(0, 50, 100)camera.lookAt(new THREE.Vector3(0, 0, 0))}var ambientLight, spotLightvar initLight () {ambientLight new THREE.AmbientLight(0x0c0c0c)scene.add(ambientLight)spotLight new THREE.SpotLight(0xffffff)spotLight.position.set(-40, 60, -10)spotLight.castShadow truescene.add(spotLight)}var linevar initModel () {var points gosper(3, 60)var geometry new THREE.Geometry()var colors []for (var i 0,len points.length; i len; i) {var e points[i]geometry.vertices.push(new THREE.Vector3(e.x, e.y, e.z))colors[i] new THREE.Color(0xffffff)colors[i].setHSL(e.x / 100 0.5, ( e.y * 20 ) / 300, 0.8)}geometry.colors colors// var material new THREE.LineBasicMaterial({// opacity: 1.0, //设置透明度// linewidth: 1, //设置线的宽度// vertexColors: THREE.VertexColors //设置这个可以给每个顶点指定一种颜色// })// geometry.computeLineDistances()var material new THREE.LineDashedMaterial({vertexColors: true,color: 0xffffff,dashSize: 2,gapSize: 2,scale: 5})line new THREE.Line(geometry, material)line.computeLineDistances()line.position.set(0, 0, -60)scene.add(line)}var statsvar initStats () {stats new Stats()document.body.appendChild(stats.dom)}var step 0var render () {line.rotation.z step 0.01;line.rotation.y step 0.01;renderer.render(scene, camera)}var onWindowResize () {camera.aspect window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()render()renderer.setSize(window.innerWidth, window.innerHeight)}var animate () {render()stats.update()requestAnimationFrame(animate)}var draw () {initRender()initScene()initCamera()initLight()initModel()initStats()animate()window.onresize onWindowResize}//高斯帕曲线生成函数gosper(密度, 大小)也被称为flowsnake一首音误的雪花是一种空间填充曲线。它是一个与龙曲线和希尔伯特曲线相似的分形物体。function gosper(a, b) {var turtle [0, 0, 0];var points [];var count 0;rg(a, b, turtle);return points;function rt(x) {turtle[2] x;}function lt(x) {turtle[2] - x;}function fd(dist) { // ctx.beginPath();points.push({x: turtle[0], y: turtle[1], z: Math.sin(count) * 5}); // ctx.moveTo(turtle[0], turtle[1]);var dir turtle[2] * (Math.PI / 180);turtle[0] Math.cos(dir) * dist;turtle[1] Math.sin(dir) * dist;points.push({x: turtle[0], y: turtle[1], z: Math.sin(count) * 5}); // ctx.lineTo(turtle[0], turtle[1]); // ctx.stroke();}function rg(st, ln, turtle) {st–;ln ln / 2.6457;if (st 0) { // ctx.strokeStyle #111;rg(st, ln, turtle);rt(60);gl(st, ln, turtle);rt(120);gl(st, ln, turtle);lt(60);rg(st, ln, turtle);lt(120);rg(st, ln, turtle);rg(st, ln, turtle);lt(60);gl(st, ln, turtle);rt(60);}if (st 0) {fd(ln);rt(60);fd(ln);rt(120);fd(ln);lt(60);fd(ln);lt(120);fd(ln);fd(ln);lt(60);fd(ln);rt(60)}}function gl(st, ln, turtle) {st–;ln ln / 2.6457;if (st 0) { // ctx.strokeStyle #555;lt(60);rg(st, ln, turtle);rt(60);gl(st, ln, turtle);gl(st, ln, turtle);rt(120);gl(st, ln, turtle);rt(60);rg(st, ln, turtle);lt(120);rg(st, ln, turtle);lt(60);gl(st, ln, turtle);}if (st 0) {lt(60);fd(ln);rt(60);fd(ln);fd(ln);rt(120);fd(ln);rt(60);fd(ln);lt(120);fd(ln);lt(60);fd(ln);}}} /script /html效果如下