Draco javascript decodere失去了uv坐标

时间:2017-02-09 10:10:07

标签: three.js

我有一个工作的three.js应用程序适用于对象模型。我的模型非常大,需要一些时间来加载,所以我决定尝试draco来压缩它们。

我注意到draco终端工具工作正常。当我在终端中“手动”编码/解码obj模型然后在旧的项目中使用它时,它按预期工作。由于德拉科引入了一些缺点,模型尺寸比以前略小一点,但它仍然看起来很好。 然而,当我尝试压缩模型并在我的three.js应用程序中使用它时,我得到高水平的压缩但我失去了我的紫外坐标。我不确定uv松动是否是由javascript draco_decoder中的一些错误引起的,或者我在从缓冲区几何体创建网格时错过了一些步骤。

我知道压缩和解压缩模型工作正常,因为我可以在浏览器纹理中看到它并且aoMap完美地工作。当我尝试直接使用drc模型时,我也很确定uv和uv1已经消失了因为我看不到我网格的geometry.buffer_geometry.attributes中的坐标。

为了清楚起见,我将用于创建网格的函数合并到

下面

//这个为draco文件准备http请求并将其传递给解码函数

function loadCompressedModel( model , onEnd, onLoading ){
    draco_file = new XMLHttpRequest();
    draco_file.open("GET", model , true);
    draco_file.responseType = "arraybuffer";
    draco_file.send();

    interval = window.setInterval(
        onLoading,
        500
    );

    draco_file.onload = function(e) {
        window.clearInterval( interval );
        decompresDracoModel(
            draco_file.response,
            onEnd

        );
        console.log("download is complite");
    };

    return draco_file;
}

//这是从bufferGeometry创建网格,onEnd不要只触摸几何体的网格物体

function decompresDracoModel( raw_data , onEnd ){
//DracoModuel and display area are declared globaly
    var bufferGeometry = dracoLoader.decodeDracoFile( raw_data );

    var mesh;
    var group = new THREE.Group();

    bufferGeometry.computeVertexNormals();
    mesh = new THREE.Mesh( bufferGeometry, material );
    bufferGeometry.computeBoundingBox();

    group.add( mesh );

    onEnd( group );
}

0 个答案:

没有答案