2021-08-25 3D模型压缩

总结两种方式将3d模型进行压缩,一种借助nodejs

fbx2gltf

  1. npm i fbx2gltf;
  2. CMD到xx\node_modules\fbx2gltf\bin\Windows_NT文件夹下,可以看到FBX2glTF.exe该执行文件;
  3. 将你要转化的文件最好放在同层目录下,也可放在别的目录,输入命令:FBX2glTF.exe -i xx\node_modules\fbx2gltf\bin\Windows_NT\aa.FBX -o xx\node_modules\fbx2gltf\bin\Windows_NT\aa即可;

obj2gltf

  1. npm i obj2gltf;
  2. 到xx\node_modules的同级目录下,创建文件run.js,文件内容如下
    const obj2gltf = require('obj2gltf');
    const fs = require('fs');
    obj2gltf('aa.obj').then(function (gltf) {
       const data = Buffer.from(JSON.stringify(gltf));
       fs.writeFileSync('aa.gltf', data);
    });
    

3.CMD到该目录下,命令行执行 node run.js即可

gltf-pipeline

  1. npm i gltf-pipeline;
  2. 该压缩方式可将文件转为以下几种格式(glTF to glb,glb to glTF,glTF to Draco glTF)
  3. 同样,到xx\node_modules的同级目录下,
    a. 创建文件glTFtoglb.js,文件内容如下
    const gltfPipeline = require("gltf-pipeline");
    const fsExtra = require("fs-extra");
    const gltfToGlb = gltfPipeline.gltfToGlb;
    const gltf = fsExtra.readJsonSync("aa.gltf");
    gltfToGlb(gltf).then(function (results) {
      fsExtra.writeFileSync("aa.glb", results.glb);
    });
    
    b.创建文件glbtoglTF.js,文件内容如下
    const gltfPipeline = require("gltf-pipeline");
    const fsExtra = require("fs-extra");
    const glbToGltf = gltfPipeline.glbToGltf;
    const glb = fsExtra.readFileSync("aa.glb");
    glbToGltf(glb).then(function (results) {
      fsExtra.writeJsonSync("aa.gltf", results.gltf);
    });
    
    c.创建文件glTFtoDracoglTF.js,文件内容如下
    const gltfPipeline = require("gltf-pipeline");
    const fsExtra = require("fs-extra");
    const processGltf = gltfPipeline.processGltf;
    const gltf = fsExtra.readJsonSync("aa.gltf");
    const options = {
      dracoOptions: {
        compressionLevel: 10,
      },
    };
    processGltf(gltf, options).then(function (results) {
      fsExtra.writeJsonSync("aa.gltf", results.gltf);
    });
    

4.同样CMD到该目录下,命令行执行 node xx.js即可

另一种借助3D建模工具

Blender

1.将要压缩的文件aa.fbx导入blender中
2.导出时,选择导出glb格式的文件
3.选择compress压缩,设置为6即可,这将会一个不错的办法。。

研究好久,有啥不足或有更好的办法,可以随时交流啊。。

Blender是一种3D建模软件,写得非常精炼。而且使用很方便,效果惊人,某些方面甚至不亚于3DS!Blender是一款免费软件。 Blender详细说明: 有了Blender后,喜欢3D绘图的玩家们不用花大钱,也可以制作出自己喜爱的3d模型了。它不仅支持各种多边形画图,也能做出动画!倘若你觉得免费版的不够使用,还能注册C-key,购买更强大的版本。Blender虽然是免费版本,不过它的功能可是又强又复杂。Blender支持3D modeling(模型)有polygon meshesurves、NURBS 、tex以及metaballs;支持的动画有keyframes、motion curves、morphing、inverse kinematics。它也提供了画图particle system(粒子系统)、deformation lattices(变形栅格)与skeletons(骨架),以及3D可以任意角度观看的视野(3D view with animated rotoscoping)。其他值得注意的特点尚有field rendering(区域的描绘)、several lighting modes(光源的形式)、animation curves(运动曲线)等等。当然Blender也可以存取Targa, Jpeg, Iris, SGI movie, Amiga IFF等格式的文件。 Blender是一套三维绘图及渲染软件。它具有跨平台的特性,支持FreeBSD,IRIX,GNU/Linux,Microsoft Windows,Mac OS X,Solaris,及SkyOS。 有了Blender后,喜欢3D绘图的玩家们不用花大钱,也可以制作出自己喜爱的3D模型了。它不仅支持各种多边形画图,也能做出动画!倘若你觉得free版的不够使用,还能注册C-key,购买更强大的版本。Blender虽然是免费版本,不过它的功能可是又强又复杂。 Blender(3D建模)怎么用: 这个软件不但免费开源,而且它能够画漫画,之前的所有介绍都不会讲到这一点。 blender是从2.67.1这个版本才开始让cy支持toon材质的。 这是非常大的进步。从这个时刻开始,意味着显卡可以画漫画啦。 当你下载之后,打开,运行,丢入cy的toon材质之后,按下F12可以看到结果。 紧接着关于线材方面,也已经得到了解决。也有一个专门的材质解决了这个问题。 Blender(3D建模)截图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值