2 votes

Impossible de lire la propriété 'isInterleavedBufferAttribute' d'undefined.

J'essaie d'utiliser three.js. "version": "0.113.2" .

J'ai le message Cannot read property 'isInterleavedBufferAttribute' of undefined .

Mes trois.js ont le code suivant comme le dit le message.

Cependant, je ne l'ai pas fait moi-même, mais certaines choses de mon code conduisent à cela.

Quelqu'un peut me dire comment résoudre ce problème.

function get( attribute ) {

    if ( attribute.isInterleavedBufferAttribute ) { attribute = attribute.data; }

    return buffers.get( attribute );

}

function remove( attribute ) {

    if ( attribute.isInterleavedBufferAttribute ) { attribute = attribute.data; }

    var data = buffers.get( attribute );

    if ( data ) {

        gl.deleteBuffer( data.buffer );

        buffers.delete( attribute );

    }

}

function update( attribute, bufferType ) {

    if ( attribute.isInterleavedBufferAttribute ) { attribute = attribute.data; }

    var data = buffers.get( attribute );

    if ( data === undefined ) {

        buffers.set( attribute, createBuffer( attribute, bufferType ) );

    } else if ( data.version < attribute.version ) {

        updateBuffer( data.buffer, attribute, bufferType );

        data.version = attribute.version;

    }

}

}

Une partie de mon code qui essaie d'ajouter pointcloud sur la scène. Si vous commentez la dernière ligne scene.add( points ) ,le message d'erreur s'arrête.

        var vertices = [];
        var colors = [];
        var pcUrl = " <?php echo $pcUrl ?> ";
        var req = new XMLHttpRequest(); 
        req.open("get", pcUrl, true); 
        req.send(null); 
        req.onload = function(){
        convertCSVtoArray(req.responseText); 
        }

        function convertCSVtoArray(str){ 
            line = str.split("\n"); /

            for (var  i  =0; i< line.length-1 ; ++i){
                row = line[i].split(',');

                var x = row[0];
                var y = row[1];
                var z = row[2];

                vertices.push( x, y, z );
            }
        }
        var geometry = new THREE.BufferGeometry();
        geometry.setAttribute( vertices );

        var material = new THREE.PointsMaterial( { color: 0xff4444 } );
        var points = new THREE.Points( geometry, material );
        scene.add( points );

2voto

Mugen87 Points 6794

geometry.setAttribute( vertices ) ;

Il devrait l'être :

geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X