Three.js Forge Viewer Autodesk v7在使用THREE.ShaderMaterial时会出现回收THREE.BufferGeoemtry的问题
编辑:我使用的Forge Viewer有定制版本的Three.js release r71(源代码),这就是我使用过时代码的原因。Three.js的当前版本是r121 我创建了三个.Group(),其中包含各种THREE.Pointcloud(几何体、材质)。其中一个点由三个.BufferGeometry()和三个.ShaderMaterial()组成 当我向缓冲区几何体添加颜色属性时,似乎只有红色(1,0,0)、白色(1,1,1)或黄色(1,1,0)起作用。这就是我将颜色设置为(1,0,0)的时候。这是当我将颜色设置为蓝色(0,0,1)时 我的问题是,我如何解决这个问题?问题是否在着色器中?问题在于如何构建缓冲区几何体?是虫子吗?谢谢 我的着色器:Three.js Forge Viewer Autodesk v7在使用THREE.ShaderMaterial时会出现回收THREE.BufferGeoemtry的问题,three.js,autodesk-forge,autodesk-viewer,autodesk-bim360,Three.js,Autodesk Forge,Autodesk Viewer,Autodesk Bim360,编辑:我使用的Forge Viewer有定制版本的Three.js release r71(源代码),这就是我使用过时代码的原因。Three.js的当前版本是r121 我创建了三个.Group(),其中包含各种THREE.Pointcloud(几何体、材质)。其中一个点由三个.BufferGeometry()和三个.ShaderMaterial()组成 当我向缓冲区几何体添加颜色属性时,似乎只有红色(1,0,0)、白色(1,1,1)或黄色(1,1,0)起作用。这就是我将颜色设置为(1,0,0)的
var vShader = `uniform float size;
varying vec3 vColor;
void main() {
vColor = color;
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
gl_PointSize = size * ( size / (length(mvPosition.xyz) + 0.00001) );
gl_Position = projectionMatrix * mvPosition;
}`
var fShader = `varying vec3 vColor;
uniform sampler2D sprite;
void main() {
gl_FragColor = vec4(vColor, 1.0 ) * texture2D( sprite, gl_PointCoord );
if (gl_FragColor.x < 0.2) discard;
}`
如何添加颜色:
const colors = new Float32Array( [ 1.0, 0.0, 0.0 ] );
geometryForBuffers.addAttribute('color', new THREE.BufferAttribute( colors, 3 ));
看起来您可能已经在使用部分示例代码,但如果没有,请参阅(实时演示)。此示例代码已经使用了
color
geometry属性来指定各个点的颜色。看起来您可能已经在使用该示例代码的部分内容,但如果没有,请参阅(实时演示)。此示例代码已使用color
geometry属性指定各个点的颜色
const colors = new Float32Array( [ 1.0, 0.0, 0.0 ] );
geometryForBuffers.addAttribute('color', new THREE.BufferAttribute( colors, 3 ));