侧边栏壁纸
博主头像
大数互联博主等级

HI,你好

  • 累计撰写 58 篇文章
  • 累计创建 55 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

threejs模型粒子化

大数互联
2024-11-26 / 0 评论 / 0 点赞 / 13 阅读 / 185 字

将模型粒子化可用于一些特殊的效果,例如打散后再自动恢复模型形状等。

此功能在threejs中实现比较容易,导入模型后,threejs会自动将模型每个顶点映射为一个点。以下是代码

const modelMaterial = new THREE.ShaderMaterial({
    vertexShader: vertexShader,
    fragmentShader: fragmentSahder,
    transparent: true, 
    side: THREE.DoubleSide, 
    depthWrite: false,
    uniforms: { 
        uTime: {value: 0.0},
        uResolution: { value: new THREE.Vector2(sizes.width, sizes.height )}
    }
}) 
// 将平面模型粒子化,也可以导入其它模型。
const particlesGeometry = new THREE.PlaneGeometry(10, 10, 32, 32)
const particles = new THREE.Points(particlesGeometry, modelMaterial)
scene.add(particles)

以下是可选在颜色着色器中代码

   // 点大小,uResolution是传入的屏长宽比
    gl_PointSize = 0.15 * uResolution.y;
    gl_PointSize *= (1.0 / - viewPosition.z);

效果如下
image

0

评论区