使用assimpjs转换三维模型

assimpjs是开源类库assimp的emscripten接口,能够实现读取40+以上类型的三维模型格式,导出成json或者gltf格式的三维模型。
能够实现在浏览器中开发实现,也能够以nodejs的模式进行开发,数据处理时,使用nodejs能够很方便实现。
下边以代码的形式,简单说一下如何进行模型转换,其中的注意事项。

使用npm安装依赖包:
npm install assimpjs
      //nodejs初始化
      const assimpjs = require ('assimpjs')()let fs = require ('fs'); 


assimpjs.then ((ajs) => {
    // 创建模型转换列表
    let fileList = new ajs.FileList (); 
    // 添加模型文件,以obj为例,同时需要添加mtl索引文件
    fileList.AddFile (
        'cube_with_materials.obj',
        fs.readFileSync ('testfiles/cube_with_materials.obj')
    );

    fileList.AddFile (
        'cube_with_materials.mtl',
        fs.readFileSync ('testfiles/cube_with_materials.mtl')
    );

    // 将模型转成assimp json格式
    let result = ajs.ConvertFileList (fileList, 'assjson');
    // 检查转换是否成功
    if (!result.IsSuccess () || result.FileCount () == 0) {
        console.log (result.GetErrorCode ());
        return;
    }
    // 获得文件的转换结构,转换成字符串
    let resultFile = result.GetFile (0);
    let jsonContent = new TextDecoder ().decode (resultFile.GetContent ());
    // 转换成json格式
    let resultJson = JSON.parse (jsonContent);
});

转换成gltf文件

和转换成assimp json格式有些区别,
   //gltf参数为gltf2表示为版本2格式
    let result = ajs.ConvertFileList (fileList, 'gltf2');
     ....

    // gltf的结构文件,索引是0
    let resultFile = result.GetFile (0);  
    let jsonContent = new TextDecoder ().decode (resultFile.GetContent ());
   //gltf的资源文件需要单独进行保存,索引为1
    let binFile = result.GetFile (1);
    fs.writeFileSync('result.bin', binFile.GetContent ());
    // gltf对应的文件也为json格式
    let resultJson = JSON.parse (jsonContent); 

引用内容:
https://github.com/kovacsv/assimpjs
https://github.com/assimp/assimp

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值