基于参数化模型的3D产品配置器开发

news2024/12/29 14:41:05

当我被要求为客户创建3D产品配置器时,我想到的第一个平台是 SketchFab。 我是在澳大利亚墨尔本的 SAE 创意媒体学院学习计算机动画时接触到它的。
在这里插入图片描述

推荐:使用 NSDT场景设计器 快速搭建 3D场景。

1、基于Sketchfab开发3D产品配置器

SketchFab 是在线共享和销售 3D 模型的最佳平台之一。 它具有逼真的渲染、场景设置、动画和声音,使模型看起来令人惊叹并真正使它们栩栩如生。 此外,还可以通过检查模型的网格、纹理映射、法线和其他变化,在技术层面检查模型。

那时,我已经使用该平台很长时间来创建建筑模型、家具和其他各种项目的静态演示。 但是,我从未使用它来创建产品配置器。

这是我发现使用 SketchFab 的 API 时,可以通过更改材料、隐藏或显示模型的一部分,甚至通过移动和旋转几何体来创建配置器。 材料(或纹理)可以像正在播放的视频文件一样复杂,甚至可以是用户可以输入的自定义文本。

其他功能遵循模型中的层次结构。 换句话说,如果一个形状是其他形状的“父”,它的“子”也会受到影响。 例如,“子”形状根据其“父”形状移动或隐藏。 这样,如果规划了 3d 模型的结构,那么在将文件上传到 SketchFab 时就已经有了一定程度的逻辑。
在这里插入图片描述

在 Cinema4D 中创建的父子几何关系示例,可用于基于 SketchFab 的配置器。

最后,你可以创建相机运动、更改照明、场景设置、滤镜、注释、动画,甚至可以创建可点击和可悬停的元素,以便在场景中进行更直观的交互。

我的第一次尝试是创建一个床头柜,其中包含飞檐样式、底座样式、抽屉样式和材料选项等选项。 只要床头柜的尺寸保持不变,我就可以简单地隐藏和显示几何图形(使用父/子技术)以根据所选选项可视化最终结果。 这是最终结果。

2、使用 SketchFab 时的注意事项

达到这种复杂程度,我很高兴使用 SketchFab。 尽管如此,我开始怀疑产品逻辑的复杂性可以达到什么程度:

  • 如果我想改变抽屉的数量怎么办?
  • 如果我想让床头柜更高或更宽怎么办?

使用 SketchFab 并没有真正的“标准”方法来执行此操作,尽管可以使用不同的技巧对其进行模拟。 例如,如果产品只有几个预定义的尺寸,则所有这些尺寸都可以存在于同一场景中并隐藏起来,以便仅显示用户选择的尺寸。

如果只有几个选项要显示,这是有效的。 但是一旦选项数量增加,数据也会增加。 因此,配置器变得很重,需要很长时间才能加载,具体取决于你的 Internet 速度。 有些手机甚至无法加载它们。 此外,管理模型层次结构和逻辑将成为负担。

另一种模拟尺寸变化的方法是重叠静态形状,通常是盒子,然后将它们彼此远离。 假设我们想要一堵墙,墙的长度在一米到两米之间。

为了实现这一点,需要将两个代表墙的一米长的盒子放置在完全相同的位置。 然后通过 API 移动其中之一,以模拟墙变长。 如果墙的长度和高度需要改变,则需要四个盒子,因为另外两个需要向上移动。
在这里插入图片描述

在 Cinema4D 中创建的参数化墙示例,可用于基于 SketchFab 的配置器。

但是,如果这堵墙可以达到八米甚至更长呢? 然后我们需要添加更多的几何体来模拟这些增量。 最重要的是,通过 API 移动不同部分的逻辑并不理想,尤其是在维护方面。 这意味着任何未来的变化,比如在墙上增加一个深度选项,都需要付出巨大的努力。

此外,使用这种方法,纹理需要有一个无缝的图案,这样当碎片移动时,它们看起来就像一个整体。

我将这种重叠方法发挥到了极致,并创建了一个完整的棚屋配置器。 它允许用户改变整个建筑的长度。 我甚至能够改变每扇门和窗户的尺寸。 这是此配置器的实际操作的快速视频。

不幸的是,正如我之前提到的,我遇到了很多限制。 一方面,不可能将建筑物延伸到任何精确的长度。 另一方面,模型加载速度非常慢,因为每面墙上的每个可用选项都必须同时存在,并根据用户的选择隐藏或显示。

总之,尽管 SketchFab 中的渲染看起来很棒,但我需要一个不同的解决方案,以便 Night Table 和任何其他复杂的配置器具有真正的产品逻辑。

3、 寻找新的解决方案:Grasshopper + ShapeDiver

幸运的是,在我的祖国哥伦比亚的安第斯大学学习建筑学时,我了解了 McNeel 开发的一款名为 Rhinoceros 3D 的软件及其插件之一:Grasshopper。

Grasshopper 是一个可视化编程界面,允许使用精确的逻辑创建任何类型或复杂性的参数模型。 这似乎正是我所需要的…
在这里插入图片描述

我之前展示的相同参数墙,现在使用 Grasshopper 创建。

例如,要创建一个简单的墙,如上面使用 Cinema 4D 的示例,可以使用墙的长度、高度和厚度的特定参数创建一个盒子。 另一个盒子也可以控制墙壁的纹理贴图。 这些盒子可以有任何尺寸,更新它们只是移动一些滑块的问题。

现在我只需要弄清楚如何将 Grasshopper 和参数化 3D 的力量带到线上,就像 SketchFab 带来可视化来自离线软件的 3D 模型的力量一样。

事实证明,2015 年,一家名为 ShapeDiver 的公司成立,其愿景是使在线参数化模型成为现实。 借助他们的技术,我能够上传 Grasshopper 模型并在线共享它们。

此外,我意识到他们还提供了一个 API,它提供了与 SketchFab 类似的选项。 可以创建可点击和拖动的元素,简单的动画,并且可以完全控制模型的参数和场景中的对象。

在这里插入图片描述

此外,还有一些功能只能通过 ShapeDiver 的 API 获得,例如添加或创建简单的动画,这些功能可以在 SketchFab 版面板中进行控制。 然而在 ShapeDiver,开发人员不断发布功能,为没有 Web 开发知识的设计师提供更多选择。

例如,在最新版本之一中,ShapeDiver 在查看器中包含一个新选项卡,设计人员可以在其中设置场景照明以增强他们的模型。
在这里插入图片描述

SketchFab 提供后处理滤镜,有助于增强模型,但是这些滤镜在处理动画或游戏设计时更为相关。

SketchFab 的一大优势是与不同 3D 软件和文件类型的兼容性。 目前,ShapeDiver 仅与 .gh 或 .ghx 文件兼容,这些文件是在 Rhinoceros 3D 和 Grasshopper 中创建的。

做出这种选择的原因是 Grasshopper 是目前最完整、最实惠且易于使用的参数化软件之一,在全球拥有庞大的用户社区。 尽管如此,ShapeDiver 的后端构建有一个灵活的结构,能够根据未来的市场需求处理其他参数化软件。 如果你想了解有关 ShapeDiver 架构的更多信息,请查看 ShapeDiver 的 CTO 撰写的这篇文章。

最后要考虑的一件事是 ShapeDiver 的技术依赖于远程服务器来计算对任何模型所做的更改。 因此,解决方案不会“实时”显示,而是在选项更改后几秒甚至几毫秒内更新模型。

例如,如果货架的长度发生变化,货架不会立即变长或变短,而是等待 ShapeDiver 的服务器发送新的更新几何。 这也是 ShapeDiver 在产品逻辑和性能方面更强大的原因,因为它允许一个模型具有潜在的数十亿种变化,而无需在浏览器中同时加载所有变化。

4、为什么我选择 ShapeDiver

正如我上面所解释的,如果你有大量的产品选项,在 SketchFab 中,所有这些选项都必须同时存在于场景中。 有时需要计算数百个网格,因此使查看器非常慢。

相反,ShapeDiver 只是将请求的几何图形发送给查看器。 每次更改参数时,都会创建一组新的几何图形,从而消除任何不必要的几何图形。 此外,ShapeDiver 有一个智能缓存系统,可以存储(记住)所有以前计算过的选项,因此使用的配置器越多,速度就越快。 这意味着当世界各地的人打开配置器并请求之前已经预先计算的某些更改时,服务器将在几毫秒内将答案发送回用户的浏览器。

除了性能之外,借助 ShapeDiver,你还可以创建“智能”3D 模型。 由于 ShapeDiver 基于实际的 CAD 软件而不是 3D 设计软件,因此模型中充满了可以提取的信息,用于计算、总结甚至生产!

例如,在用户确定结果后,可以自动提取精确数据并将其用于价格计算、运输估算、带有生产细节的图像甚至可用于 3D 打印的文件(.stl 文件)、激光切割 (.dxf 和 .dwg 文件)或 CNC 切割 (.gcode)。

例如,如果你有一个表格配置器,你可以获得一个具有不同视图和尺寸的摘要图像,甚至是一个 .dwg 文件,其中包含嵌套部件以及正确的图层和曲线颜色,可以用于生产。
在这里插入图片描述

除了提取数据,ShapeDiver 还允许用户直接在在线配置器中导入数据和文件。 ShapeDiver 支持导入文本文件、图像、.dwg 文件和.obj 文件。

通过文本文件,公司可以导入包含其全部产品信息和定价逻辑的整个数据库。 例如,使用 ShapeDiver 的图像处理工具,图像可以从简单的东西变成带有自定义文本的动态组合。
在这里插入图片描述

将 2D 绘图转换为完整的 3D 模型等复杂操作也可以毫无问题地执行。

在这里插入图片描述

此外,CAD 软件允许你进行复杂的计算,例如检查对象之间的碰撞、计算对象是否适合空间、检查对象是否在给定空间内、不同类型对象之间的交集等。这意味着 使用 Grasshopper 的强大功能,可以轻松完成各种复杂的数学和几何计算。 如果你了解 C# 或 Python 等编程语言,ShapeDiver 也能够处理它们。

最后,正如我之前提到的,产品逻辑的复杂性没有限制。 你可以为简单的产品构建完整的应用程序,也可以为复杂的建筑或任何其他产品构建完整的应用程序。

这怎么可能? 管理无限产品逻辑的主要方法之一是使用 JSON 对象,我在过去已经介绍过,ShapeDiver 提供了处理、读取和构造此类对象的工具。

例如,假设你正在为可以有任意数量的门或窗的房屋构建配置器,并且你希望用户能够选择每个门窗的位置、尺寸和设计。 在这种情况下,JSON 数据结构将是同时管理所有这些参数的理想解决方案。

5、应该为产品配置器选择哪个平台?

如果你是从事动画和游戏设计的数字艺术家,SketchFab 无疑是你的解决方案。 如果你的产品参数很少或只有基于材料的参数,并且模型需要尽可能真实,那么 SketchFab 可能也适合你。 例如,3D 广告是 SketchFab 技术的一个很好的用例。

但是,如果你的模型具有需要灵活、可扩展、易于管理和面向未来的产品逻辑,ShapeDiver 是最好的选择。

6、结束语

总之,SketchFab 提供了最好的渲染和场景工具,以最真实和身临其境的方式在线共享 3D 模型。 但是,它并不是真正以创建配置器为最终目标而构建的。 得益于 SketchFab 的 API,可以为模型提供一些参数化功能以及探索它们的交互方式。 不幸的是,这些参数非常严格。 这些限制最终会使任何应用程序的开发复杂化,以防它需要扩展到许多选项或扩展到生产或技术工具中。

另一方面,ShapeDiver 是作为创建产品配置器的平台从头开始构建的。 结果可以直接在 ShapeDiver 应用程序中使用,或嵌入到具有 API 扩展可能性的任何网站中。

ShapeDiver 提供了规划任何产品逻辑、导入和导出数据、进行数学和几何计算等的自由。 使用这些工具,可以创建从简单的营销配置器到复杂的技术配置器的所有内容。 如果你想了解更多关于不同类型的产品配置器的信息,ShapeDiver 的产品负责人撰写了这篇关于它的精彩指南。 此外,如果你想了解我们的一些客户如何使用 ShapeDiver 构建令人惊叹的在线体验,请务必查看我们的成功案例部分。

此外,如果你需要创建模型能够进行几何和数学计算的用户界面,以便用户在使用配置器时获得反馈,唯一的方法是使用 ShapeDiver。

自动化是将 SketchFab 与 ShapeDiver 区分开来的另一大因素,因为 ShapeDiver 具有导入和导出不同类型文件的能力,使得使用外部数据库或导出生产数据成为可能。


原文链接:ShapeDriver — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

码住!为什么一定要做tiktok小店?赶快来开启爆单模式!

随着短视频和社交电商的结合,商家的变现渠道变得更加宽广。各大平台也开启了直播带货的赛道,在跨境行业中,tiktok小店也是商家们关注的渠道。很多商家也开始做tiktok小店,那我们可以先了解一下这小店的优势。tiktok小店拥有优质的…

并发线程、锁、ThreadLocal

并发编程并发编程Java内存模型(JMM)并发编程核心问题—可见性、原子性、有序性volatile关键字原子性原子类CAS(Compare-And-Swap 比较并交换)ABA问题Java中的锁乐观锁和悲观锁可重入锁读写锁分段锁自旋锁共享锁/独占锁公平锁/非公平锁偏向锁/轻量级锁/重…

02- pandas 数据库 (机器学习)

pandas 数据库重点: pandas 的主要数据结构: Series (一维数据)与 DataFrame (二维数据)。 pd.DataFrame(data np.random.randint(0,151,size (5,3)), # 生成pandas数据 index [Danial,Brandon,softpo,Ella,Cindy], # 行索引 …

J6412四网口迷你主机折腾虚拟机教程

今天给大家做一个四网口迷你主机折腾虚拟机的安装教程,主机采用的是maxtang大唐NUC J6412 intel i226V四网口的迷你主机,这款主机它是不能直接装上NAS的,必须使用虚拟机系统,近期研究了下然后做了一个教程分享给大家。 首先需要做…

Antd-table全选踩坑记录

目录 一、需求 二、问题 ​编辑三、解决 四、全选选中所有数据而不是当前页 一、需求 最近遇到一个小小的需求,在我们这个项目中,有一个表格需要添加全选删除功能。这还不简单吗,于是我找到andt的官网,咔咔咔一顿cv&#xff0…

「自控元件及线路」14 电子电力技术与功率放大器概述

本节介绍电子电力技术的基本概念 本节介绍PD、SCR、GTR、MOSFET、IGBT等电子电力器件 本节介绍功率放大器的基本概念和线性功率放大器 文章目录电力电子技术概述电能变换电子电力器件功率二极管PD晶闸管SCR功率晶体管GTR功率场效应晶体管PowerMOSFET绝缘栅双极晶体管IGBT功率放…

代码随想录.力扣.二叉树.105/106. 从中序与前序/后序序列构造二叉树

题目: 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,2…

Notion 笔记Mac及windows客户端汉化

1、 注册/登录账号: https://www.notion.so/zh-cn 2、下载电脑软件应用: https://www.notion.so/desktop 下载完成后,安装到电脑中,界面如下: 3、下载汉化js插件 地址:https://github.com/Reamd7/n…

String、StringBuffer、StringBuilder有什么区别?

第5讲 | String、StringBuffer、StringBuilder有什么区别? 今天我会聊聊日常使用的字符串,别看它似乎很简单,但其实字符串几乎在所有编程语言里都是个特殊的存在,因为不管是数量还是体积,字符串都是大多数应用中的重要…

【PR】源窗口

【PR】源窗口源窗口粗剪源窗口按钮功能标记按钮出入点相关插入与覆盖插入覆盖导出帧使用软件:Premiere2020 源窗口粗剪 我们手上可能有一些很长的视频,但是我就想要其中的几段,这个时候粗剪就很方便,把想要的视频段落剪出来先凑一…

私募证券基金动态-23年1月报

成交量:1月日均7,901.31亿元2023年1月A股两市日均成交7,901.31亿元,环比上升0.33%、同比下降25.18%。1月恰逢春节仅16个交易日,节后2个交易日交易量明显回暖。管理人:新提交备案51家,备案通过21家1月新提交备案申请的5…

分析了 200 个 DeFi 项目,我发现了这些规律

作者:Ren & Heinrich翻译:dongdong在这篇文章中,我分享了我通过分析当前排名前 200 的 DeFi 加密项目的见解。这不是一项学术研究。尽管如此,这些发现对加密货币投资者来说具有附加值。我使用 https://defillama.com/ 的公共数…

财报解读:业务复苏迹象明显,中国中免能否重写增长神话?

2月3日,中国中免披露2022年度业绩快报,2022年总营收为544.63亿元,同比下降19.52%;实现归属于上市公司股东的净利润50.25亿元,同比下降47.95%。来源:中国中免2022年度业绩快报业绩近乎腰斩,但从长…

库存管理系统软件哪个好用 盘点前十名!

库存管理怎么做?库存管理系统有什么用处?市面上那么多库存管理系统,我们又如何挑选呢? 本文将为您介绍库存管理系统挑选的方法以及库存管理系统的选型。 库存管理系统前十名为:1、简道云库存管理软件;2、…

网络通讯的理解

tcp/ip 协议族ip在真实环境中,会把主机号再分成一个子网号和一个主机号。这样的主机号才是最终容纳的主机数量。所以需要使用子网掩码(32位)来分子网号和主机号。其中值为1的比特是网络号和子网号,值为0的是比特是主机号。可以在w…

真的麻了,别再为难软件测试员了......

前言 有不少技术友在测试群里讨论,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些测试工程师了。 这不,为了帮大家节约时…

Nacos【一】Nacos集群部署配置

系列文章目录 暂无 文章目录系列文章目录前言一、Nacos集群架构1.ip直连2. SLB3. 域名-SLB二、集群部署准备2.1 机器准备2.2 Nginx安装配置1.安装2.负载均衡配置2.3 nacos安装配置1.nacos节点2. MySQL准备1.Docker安装MySQL2. nacos对应数据库初始化三、 集群启动1.失败原因汇…

Python深度学习实战PyQt5信号与槽的连接

本文讲解信号与槽的连接机制,详细示范各种类型的信号/槽连接的实现方法,这是图形用户界面的核心内容。还将介绍面向对象的程序设计,这是图形用户界面的基本思想目录1. 信号与槽(Signals and slots)信号与槽机制是 PyQt…

源码分析Spring解决循环依赖的过程

循环依赖是之前很爱问的一个面试题,最近不咋问了,但是梳理Spring解决循环依赖的源码,会让我们对Spring创建bean的流程有一个清晰的认识,有必要搞一搞。开始搞之前,先参考了这个老哥写的文章,对Spring处理循…

4. Spring 之 AOP

文章目录1. AOP 简介2. AOP 入门案例3. AOP 工作流程(略)4. AOP 切入点表达式4.1 语法格式4.2 通配符4.3 书写技巧5. AOP 通知类型5.1 前置通知、后置通知5.2 环绕通知(重点)5.3 返回后通知(了解)5.4 抛出异常后通知(了解)6. 案例:业务层接口…