使用原生的threejs ,实现热力图,热力图模型和其他模型不在一个图层

发布于 2024-07-08 16:55:43

看见官网的热力图,我就下载了源码,自己实现了一次,但是做出来的和官网的颜色差不多,但是总感觉不在一个图层上,不知道是不是哪个参数调整的有问题,我仔细的对着了官网和我自己的模型参数,感觉差不多,这是官网的地址, 这是我实现的代码和配置的参数,不知道是不是ShaderMaterial  配置的有问题,但是这块和官网的是一样的1720428845793.jpg

查看更多

关注者
0
被浏览
366
4 个回答
地虎降天龙
地虎降天龙 图形社区官方人员 2024-07-08
也许宇宙中最反直觉的真理是,你给别人的越多,你得到的也越多。

不知道 你出来的是啥效果哈

yj614
yj614 2024-07-09
这家伙很懒,什么也没写!

使用ShaderMaterial的时候, tepthTest = true 的同时,还需要在着色器中包含两行代码才可以让 depthTest = true生效。
顶点着色器添加这两行代码。
image.png
片元着色器添加这两行代码
image.png

init
init 2024-07-09
这家伙很懒,什么也没写!

我对着色器不太懂,我把代码贴出来,可以帮忙看一下咋加吗

const creatShaderMaterial = (texture) => {
  return new THREE.ShaderMaterial ({
    vertexShader: `
      varying vec2 vUv;
      void main() {
        gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
        vUv = uv;
      }
    `,
    fragmentShader: `
    uniform sampler2D heightMap;
        uniform float uOpacity;
        varying vec2 vUv;
        void main() {
            gl_FragColor = vec4(texture2D(heightMap, vUv.xy).rgb, uOpacity);
    }
    `,
    uniforms: {
      uOpacity: { value: 0.9 },
      heightMap: { value: texture },
    },

    polygonOffsetUnits: 1,
    polygonOffsetFactor: 1,
    polygonOffset: true,
    
    depthWrite: true,
    depthTest: true,
    transparent: true,
    side: THREE.DoubleSide,

  });
};
白日梦想家
白日梦想家 2024-07-09
这家伙很懒,什么也没写!

透明和透明叠一起会有问题

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览