Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js Forge Viewer Autodesk v7在使用THREE.ShaderMaterial时会出现回收THREE.BufferGeoemtry的问题_Three.js_Autodesk Forge_Autodesk Viewer_Autodesk Bim360 - Fatal编程技术网

Three.js Forge Viewer Autodesk v7在使用THREE.ShaderMaterial时会出现回收THREE.BufferGeoemtry的问题

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)的

编辑:我使用的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)时

我的问题是,我如何解决这个问题?问题是否在着色器中?问题在于如何构建缓冲区几何体?是虫子吗?谢谢

我的着色器:

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 ));