在Three.js中使用FBO粒子和第一人称摄影机

在Three.js中使用FBO粒子和第一人称摄影机,three.js,webgl,Three.js,Webgl,我正试图做一个包含FBO粒子的第一人称实验(类似于杜布先生的实验) 我在数据纹理中创建粒子的位置,然后在顶点着色器中查找纹理以获得该粒子的位置 uniform sampler2D map; varying vec2 vUv; varying vec3 vPosition; void main(void) { vec2 uv = position.xy; vec4 data = texture2D(map, uv); vPosition = data.xyz; g

我正试图做一个包含FBO粒子的第一人称实验(类似于杜布先生的实验)

我在数据纹理中创建粒子的位置,然后在顶点着色器中查找纹理以获得该粒子的位置

  uniform sampler2D map;
  varying vec2 vUv;
  varying vec3 vPosition;
  void main(void) {
  vec2 uv = position.xy;
  vec4 data = texture2D(map, uv);

  vPosition = data.xyz;
  gl_PointSize = 1.0;
  gl_Position = projectionMatrix * modelViewMatrix * vec4(vPosition, 1.0);
这是伟大的工作,最初我看到一个粒子场,如图所示。。。

问题是,当我稍微行走并旋转时,所有粒子突然消失。我四处搜索了一系列解决方案,找到了建议将material.depthrite设置为false的解决方案。我这样做了,但没有任何效果-以下是我的ShaderMaterial定义:

 var particleMaterial = new THREE.ShaderMaterial({
uniforms: uniforms,
vertexShader: shaders.vertexShaders.floor,
fragmentShader: shaders.fragmentShaders.floor,
blending: THREE.AdditiveBlending,
depthWrite: false,
})

我现在不知所措,任何帮助都将不胜感激


谢谢!Eric

我一直在走啊走,甚至做了一些扫射,我无法让粒子出现。不过,这里有一个想法,如果系统如此分散,它可能会在渲染到上面的着色器之前被消除。现在这是一个猜测,但如果没有正确设置边界框,可能会发生这种情况,如果只是动态创建边界框,则完全可能发生这种情况。(边界应该是您房间的大小)。在某一点上,three.js可能认为所有的文件都被限制在一个你看不到的卷中。。。天花板上发出可怕的噪音!这是一个非常好的观点!我转移到项目的另一部分,但不久将再次尝试!谢谢