threejs物体扫描

博客介绍了Three.js物体扫描效果的实现。基于ImprovedNoise创建地形,可模拟地形效果。还介绍了材质方面的shader及使用代码示例,实现扫描效果需对时间与距离计算,作者希望有大神优化,后续打算写后期处理扫描相关内容。

threejs物体扫描


前言

在 vue2 中实现 threejs单物体扫描


一、地形

地形是基于 ImprovedNoise 创建,可以创建具有一定规律的随机点,用来模拟地形效果很好。

//引入
import{ ImprovedNoise } from'three/examples/jsm/math/ImprovedNoise'//柏林噪声

funZ(width, height) {
      let size = width * height;
      let data = new Uint8Array(size);
      let perlin = new ImprovedNoise();
      // 控制地面显示效果  可以尝试0.01  0.1  1等不值
      // 0.1凹凸不平的地面效果  1山脉地形效果
      let quality = 1.2;
      // z值不同每次执行随机出来的地形效果不同
      let z = Math.random() * 100;
      for (let j = 0; j < 4; j++) {
        for (let i = 0; i < size; i++) {
          // x的值0 1 2 3 4 5 6...
          let x = i % width;
          // ~表示按位取反 两个~就是按位取反后再取反
          // ~~相当于Math.floor(),效率高一点
          // y重复若干个值
          let y = ~~(i / width);
          // 通过噪声生成数据
          data[i] += Math.abs(perlin.noise(x / quality, y / quality, z) * quality * 1.75);
          // console.log(y);
        }
        // 循环执行的时候,quality累乘  乘的系数是1  显示效果平面
        quality *= 5;
      }

      return data;
    }

// width,height两个变量用控制平面几何体顶点数量
      // 行列两个方向顶点数量不同  显示效果不同   分别为100和250显示不同的效果
      let width = 250, height = 250;
      // 生成地形顶点高度数据
      let dat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值