首页 > 其他分享 >three.js 光墙效果实现

three.js 光墙效果实现

时间:2024-07-11 11:45:01浏览次数:9  
标签:光墙 geometry THREE texture three var new js data

需求:

要实现一个围栏效果的光墙

方案:

当前只介绍贴图实现方案,其他的材质,uv什么的 咱确实玩不来.

 

实现:

1.就是创建一个缓冲几何,然后通过计算哪个面贴图哪个面不贴图,(这个是我直接拷贝的别人的,只是实现了一个矩形效果)

LightWallModel(data) {
      // 光墙效果
      let texture=new THREE.TextureLoader().load(this.Model.service + "/models/up-time.png")
      texture.wrapS=THREE.RepeatWrapping
      texture.wrapT=THREE.RepeatWrapping
      let data = [
              0, 0,
              25, 0,
              25, 25,
              0, 25,
              0, 0
            ]
      var geometry = new THREE.BufferGeometry()
      var posArr = []
      var h = 5
      var uvrr = []
      for (let i = 0; i < data.length - 2; i += 2) {
        posArr.push(data[i], data[i + 1], 0, data[i + 2], data[i + 3], 0, data[i + 2], data[i + 3], h)
        posArr.push(data[i], data[i + 1], 0, data[i + 2], data[i + 3], h, data[i], data[i + 1], h)

        uvrr.push(0, 0, 1, 0, 1, 1)
        uvrr.push(0, 0, 1, 1, 0, 1)
      }


      geometry.attributes.position = new THREE.BufferAttribute(new Float32Array(posArr), 3)
      geometry.attributes.uv = new THREE.BufferAttribute(new Float32Array(uvrr), 2)




      // new THREE.TextureLoader().load("http://localhost:3000/file/getFile/map/wall.png")
      geometry.computeVertexNormals()
      var material = new THREE.MeshLambertMaterial({
        map:texture,
        color: 0x00ffff,
        side: THREE.DoubleSide,
        transparent: true,
        // opacity:0.5,
        depthTest: false
      })

      let mesh = new THREE.Mesh(geometry, material)
      mesh.rotateX(-Math.PI / 2)
      // editor.scene.scene.add(mesh)
      this.scene.add(mesh);
      texture.offset.y-=0.01
    },

 

标签:光墙,geometry,THREE,texture,three,var,new,js,data
From: https://www.cnblogs.com/yc-c/p/18295766

相关文章

  • layui js thymeleaf 公共工具类
    layuijsthymeleaf公共工具类其中功能包括:普通表格渲染树形表格渲染普通编辑(添加/删除/编辑)更多编辑(添加/编辑/更多)上传图片constcommon={getTable(table,url,cols,condition){if(!condition||condition==''){condition=......
  • (免费领取源码)计算机毕业设计项目:宠物店管理系统 19849(开题答辩+程序定制+全套文案 )上
    目 录摘要1绪论1.1背景及意义1.2研究现状1.3springboot框架介绍2 宠物店管理系统系统分析2.1可行性分析2.2系统流程分析2.2.1数据流程3.3.2业务流程2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4系统用例分析2.5本章小结......
  • (免费领源码)Java/Mysql数据库+09536 SSM爱心捐赠物资维护系统,计算机毕业设计项目推荐上
    摘要随着信息技术的快速发展,计算机应用已经进入成千上万的家庭。随着物资数量的增加,物资库存管理也存在许多问题。物资数据的处理量正在迅速增加,原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析,减少人力和物力的浪费。需要建立爱心捐赠物资维护系......
  • 本地 AI RAG 系列之 使用 OpenLlama、Postgres、Node.js 和 Next.js 进行 100% 免费矢
    简介所以你想尝试向量搜索,但你不想付钱给OpenAI,或者使用Huggingface,也不想付钱给向量数据库公司。我来帮你。让我们在自己的机器上免费开始向量搜索吧。推荐文章《知识图谱大模型系列之01利用KeyBERT、HDBSCAN和Zephyr-7B-Beta构建知识图谱,LLM增强的自然语言处......
  • 某手创作服务 __NS_sig3 sig3 | js 逆向
    拿获取作品列表为例https://cp.kuaishou.com/rest/cp/works/v2/video/pc/photo/list?__NS_sig3=xxxxxxxxxxx搜索__NS_sig3发现__NS_sig3是一个异步回调生成的值s().call("$encode",[i,{suc:function(e){t(`__NS_sig3=${e}`)},err:function(t){e(t)}}])具体逻辑就是:......
  • Docker入门(三):nodejs后端服务部署
    本文主要内容是通过dockerfile创建镜像,并通过kubernets(简称k8s)来启动集群服务。最后你会得到一个简单的nodejs提供的api服务。写在前面需要安装的有node(如何安装?),kubectl(如何安装?)一,创建nodejs应用本文主要是用于实践k8s,所以nodejs项目写的非常简单,除了package*.json之外只......
  • JavaWeb-js(4)
    js事件在前端页面中,js程序大多数是由事件来驱动的,当触发某些事件的时候,可以使用js负责响应。js事件由三部分组成:    事件源——》指的是被触发的对象;    事件类型——》如何触发的事件,如:鼠标单击、双击、键盘操作等;    事件处理程序——》触发事件以......
  • 基于Java+SSM+jsp的宠物信息交流平台系统的设计与实现(源码+数据库+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SSM框架前端框架JSP可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于Java+SSM+jsp的汉服商城网站系统的设计与实现(源码+数据库+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SSM框架前端框架JSP可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于Java+SSM+jsp的汉服商城网站系统的设计与实现(源码+数据库+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SSM框架前端框架JSP可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......