Blender与Threejs 场景/模型 导入导出Transform 您所在的位置:网站首页 blender添加灯光 Blender与Threejs 场景/模型 导入导出Transform

Blender与Threejs 场景/模型 导入导出Transform

2022-11-29 04:29| 来源: 网络整理| 查看: 265

背景

以前在项目中,使用Threejs作为前端编辑器,然后使用Blender作为渲染服务器时,发现导入的gltf数值有变化,因为当时只需要渲染结果,因此把场景直接渲染了事,没有做更多的接触。最近又遇到同样的问题,因此把这个问题彻底梳理并记录于此。

问题所在及解决threejs坐标系,x - 右,y - 上, z - 外blender坐标系,x - 右,y - 里,z - 上

虽然两者都是右手坐标系,但是他们的坐标轴本身是不一样的,具体关系为 Threejs -> Blender,是绕X轴 顺时针 90°。这时候在两者之间的差异有三种情况

如果是通过数值计算,而不是场景/模型的导入导出方式,则需要需要手动 进行 绕X轴翻转,然后才能使用翻转后的数据进行其他计算。如果是通过 gltf 为载体,进行导入导出,那么 threejs/blender 都能显示正确的效果,但是他们的transform数据是发生了变化的,也就是 blender/threejs 自动帮我们进行了转换。如果是通过 obj 为载体,进行导入导出,则在blender中需要进行设置,也就是指定 哪个轴是 指向屏幕里的轴,哪个轴是指向上问题验证

1、使用手工处理数据

直接对数据进行手动翻转threejs 坐标值blender 中的 坐标值,与手工转换的结果相同

2、通过gltf/glb 为载体中转

在threejs中如上图场景,实际的gltf文件为

threejs导出的gltf文件,与threejs坐标系一致blender导出的gltf,使用的translation,但是数据值已经帮我们做了变换

相机、灯光等元素也执行了相同变换

3、blender通过obj进行导入导出,需要进行指定

blender导出时设置,选择后会自动帮我们进行数值转换,在obj文件中体现blender导出的obj文件,已经进行了转换blender导入时同理结论

通过上述验证,我们可以根据情况灵活的使用,一般 就是手动转换数据比较灵活,可以在两边做一些额外的操作和处理。然后就是可以使用 glb 格式进行中转,因为他可以承载整个场景,对于相机的导入导出很有帮助。注意相机导出时需要进行勾选。但是灯光的强度目前还没有找到很好的映射关系。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有