首页 > 解决方案 > 我们可以在服务器端编辑(位置、比例等)glTF 模型(没有三个.js)吗?

问题描述

我正在尝试合并两个 gltf 资产,我正在使用 sayduck gltf 管道来实现它。问题是我需要其中一项资产远离其他资产。例如。cat (0, 0, 0) 和 dog (10, 0, 0) 以便将它们并排放置以进行比较

我尝试在服务器端(node.js)使用three.js,但让gltf解析器在服务器端工作有点困难。如果不使用 three.js 就可以实现,那就太好了。

标签: node.jsthree.jsgltf

解决方案


您不需要使用像threejs 这样的3D 渲染库来编辑glTF 文件服务器端。对于最简单的情况(在.gltf文件中重新定位对象),您可以这样做:

const fs = require('fs');

// Read and parse file.
const gltfContent = fs.readFileSync('file.gltf', {encoding: 'utf8'});
const gltf = JSON.parse(gltfContent);

// Edit glTF asset.
const node = gltf.nodes.filter((n) => n.name === 'Cat')[0];
node.translation = [10, 0, 5];

// Write to disk.
fs.writeFileSync('file.gltf', JSON.stringify(gltf));

要对文件进行更复杂的更改,您需要使用现有的解析/编写工具或了解glTF 规范


推荐阅读