gltf-pipeline processノード環境のGltfメソッド

ご存知のとおり、GLTF 形式には glb 形式の他に、GLTF+BIN+Texture という保存方法もあります。ノードを使用して gltf-popeline を呼び出し、(GLTF+BIN+Texture) を圧縮する場合、注意すべき点がいくつかあります。

1. ノードによって提供される fs モジュール、fs.writeFile を使用してファイルを書き込まないでください。

var gltfPipeline = require('gltf-pipeline');
const fs = require('fs');
var processGltf = gltfPipeline.processGltf;
var gltf = fs.readFileSync('./44/untitled.gltf');
var options = {
    dracoOptions: {
        compressionLevel: 10
    }
}
console.log(gltf)
processGltf(gltf, options).then(function(results) {
    console.log(results)
    fs.writeFileSync('model1.gltf', results.gltf);
});

上記のコードは、model1.gltf ファイルを正常に生成できますが、生成されたファイルと圧縮前のファイルの内容は変わっていないことがわかります。つまり、draco 圧縮は有効になりません。そのため、読み書きには作者推奨の fs-extra プラグインの読み書き方法を使用する必要があります。コードは以下のように表示されます:

var gltfPipeline = require('gltf-pipeline');
var fsExtra = require('fs-extra');
var processGltf = gltfPipeline.processGltf;
var gltf = fsExtra.readJsonSync('./44/untitled.gltf');
var options = {
    dracoOptions: {
        compressionLevel: 10
    }
}
processGltf(gltf, options).then(function (results) {
    fsExtra.writeJsonSync('./123.gltf', results.gltf);
}).catch(function (err) {
    console.log(err)
});

2. resourceDirectoryパラメータを追加する必要があります。

GLTF+BIN+Texture の GLTF 形式の場合、圧縮時にパラメータ resourceDirectory を追加する必要があります。つまり、GLTF ファイルが保存されているフォルダーを指定します。追加しない場合、glTF モデルは別のファイルを参照するよう要求されますが、resourceDirectory は指定されていません。正しいコードは次のとおりです。

var gltfPipeline = require('gltf-pipeline');
var fsExtra = require('fs-extra');
var processGltf = gltfPipeline.processGltf;
var gltf = fsExtra.readJsonSync('untitled.gltf');
var options = {
    resourceDirectory: './',
    dracoOptions: {
        compressionLevel: 10
    }
}
processGltf(gltf, options).then(function (results) {
    fsExtra.writeJsonSync('untitled1.gltf', results.gltf);
}).catch(function (err) {
    console.log(err)
});

ファイルが生成された後、GLTF 形式を開くと、BIN への元の参照によってコードの先頭にデータ文字列がプログラムされていることがわかります: application/octet-stream; テクスチャの導入も変更されており、つまり、圧縮された GLTF ファイルの効果は GLB の効果と同じです。gltf-popeline は、すべての元のテクスチャと bin ファイルを .gltf ファイルに統合します。

おすすめ

転載: blog.csdn.net/QiZi_Zpl/article/details/106923168