vans怎么有小尺寸的json 3d模型

Posted

技术标签:

【中文标题】vans怎么有小尺寸的json 3d模型【英文标题】:how does vans have a small-sized json 3d model 【发布时间】:2021-06-21 18:35:17 【问题描述】:

我正在尝试使用 Threejs 和 React 以及 react-three-fiber 创建一个 3d 网站,我可以在其中定制衬衫,然后在他们的定制页面中偶然发现了 vans 网站。我注意到他们没有使用 gltf 而是只使用 json 并且它显示的 3d 质量非常小。我想知道他们是如何实现这样质量的文件大小的。因为与我的相比,我有一个或多或少 5mb 的 gltf,但是当我使用 threejs 中的 .toJSON 将它转换为 json 时,它变成了 100mb。

我查看了请求,这是大小:

这是它响应的 json 数据:

这是 3d 表示:

目前我正在使用 gltf 加载 3d,但我正在尝试复制 vans 的方式,只是从服务器请求一个 json 数据,但我可以实现的 json 数据太大了。 他们是怎么做到的?

显然只有几何对我来说很重要。 如果有人知道他们在这方面做了什么……我非常感谢。谢谢。

【问题讨论】:

【参考方案1】:

这个模型有一个或多个纹理,我认为几乎可以肯定纹理是您在从 glTF 转换为 three.js 自定义 JSON 格式时看到的大部分大小差异。在浏览器中将纹理写入数据 URI(用于 JSON 序列化)有时会创建非常未优化的图像版本。

我的建议是坚持使用 glTF 文件(一种更有效的格式和three.js itself recommends it),并使用glTF optimization tools 进一步缩小尺寸或压缩纹理。

【讨论】:

感谢您回答我的问题,非常感谢。嗯,只是一个额外的问题。有没有办法将几何图形与纹理或材料分开。就像只在导出中包含几何图形。因为显然我的应用程序中只需要几何图形。再次感谢 这应该是可能的,是的——例如scene.children[0].geometry.toJSON() 是一种选择。或者您可以在 Blender 中打开 glTF 模型并分离材质和纹理,然后再次导出。 实际上,我在从搅拌机导出时使用的是用 draco 压缩的 .glb 文件。除几何部分外,我已取消选中导出时的所有其他选项。检查了 UV 法线、顶点颜色并将材质设置为导出..我得到的结果大小约为 11mb,这是相当不错的,但如果有任何其他方式我仍然可以在请求期间减小其文件大小,比如货车中的文件大小......我正在使用搅拌机 2.92..谢谢您的帮助。我真的很感激。 还有其他可用的工具(请参阅上面的链接),但对话时间可能比 cmets 允许的要长。如果您可以在 three.js 论坛上分享模型,您可能会获得更具体的建议。 :) 太好了。太感谢了。您一定会很快在 three.js 论坛上收到我的消息。感谢您的支持 :)

以上是关于vans怎么有小尺寸的json 3d模型的主要内容,如果未能解决你的问题,请参考以下文章

Solidworks中的3D模型,如何标注两个面之间的距离。

统一3D中fbx模型的尺寸变化[重复]

Unity3d UGUI基于屏幕尺寸的自适应

为啥在3D里导入模型,3DMAX就卡死机了

threeJS 导入模型(不确定尺寸)后如何确定相机位置及物体缩放比例

可以装在手机里的3D姿态估计,模型尺寸仅同类1/7,平均关节位置误差却只有5厘米 | CPVR 2021...