如何构建 3D Web 应用程序
时间:2023-07-22 06:18:02 | 来源:网站运营
时间:2023-07-22 06:18:02 来源:网站运营
如何构建 3D Web 应用程序:
为什么要将您的 3D 应用程序定位到网络?
在 2010 年代,出现了一种为 Web 而不是桌面开发应用程序的趋势。这并不奇怪,因为一方面,浏览器和开发人员工具已经逐渐变得更好,但也因为 Web 应用程序在某些方面对开发人员和用户都更加方便。
开发人员具有通用性,因为 Web 浏览器是世界上最常见的执行平台。Web 应用程序允许对代码和其他知识产权进行更严格的控制,并启用在分发二进制文件时难以执行的许可策略。一些维护挑战已成为过去(例如,每个客户的环境大致相同,每个人都使用最新版本的应用程序)。
对于用户来说,这也意味着与本地环境相关的问题不太相关,它们基本上归结为正在使用的浏览器。硬件要求变得更加宽松,而其中的应用程序和数据可以从任何地方访问。
但是,当谈到 3D 数据时,可能不清楚网络是否是此类应用程序的好平台。毕竟,根据与 3D 数据交互的程度,它们可能非常繁重。然而,现在即使 3D 建模和 CAD 建模软件也可以在网络上使用,而且可以说与 3D 应用程序一样沉重,这一事实应该会消除可行性的担忧。
图 1. 顶部:http://Clara.io,一个基于云的 3D 编辑器和渲染器。底部:Onshape,一个基于云的 CAD 系统。国产三维云CAD;crowncad
哪些应用需要 3D 数据?
有几类应用程序总是必须处理 3D 数据,例如前面提到的 3D 建模和 CAD 建模软件。除了实际建模外,3D Web 应用程序还可用于许多相关工作流程:
- 在线真实感渲染服务可以显示渲染预览,以微调相机位置和镜头选项并应用材料。
- 3D 资产目录可以提供交互式示例并播放其中包含的动画。
- 基于 Web 的 PLM 和 PDM 系统需要显示零件的 3D 模型,以便用户方便地浏览目录。他们还可以提供设计审查功能——向多个并发用户展示模型并允许他们在其上留下注释。
- 数值模拟工具显示分析的零件,并将模拟结果叠加在它们之上 - 计算出的气流、热分布、响应负载的变形。
在建模或产品设计空间之外,使用 3D 模型丰富应用程序的机会仍然很多:
- 在线商店而不是静止图像可以显示产品的交互式 3D 模型,并为客户提供配置器以使用选项自定义他们的订单。
- 定制制造车间可以允许用户上传零件模型,在引擎盖下对其进行分析以找出可能导致制造问题的问题,然后显示各种制造过程的分析报告或报价。
- 博物馆可以通过设置虚拟游览并在其收藏中插入某些项目的 3D 模型供用户玩耍来吸引游客。
如果您销售产品或服务,将 3D 数据添加到您的网站可以丰富它。它可以让您更好地展示您的产品,或增加天赋并吸引您的潜在客户。
3D 数据如何在 Web 应用程序中显示?
将 3D 模型放在网页上的想法基本上起源于互联网的创建,就在 90 年代初。当时构思的 VRML 格式试图提供可嵌入网页的交互式 3D 场景的描述。VRML 场景的显示和演变是 VRML 播放器的责任,它是一个浏览器插件,利用主机的图形功能。
当时硬件和网络带宽的客观限制与 VRML 背道而驰,它从未真正受到关注。在 90 年代和 2000 年代,这些网站也没有 3D 图形进行管理。随着网络和用户硬件能力达到可接受的水平,将 3D 数据放到网络上终于变得可行。标准化工作由 Khronos Group 推动并得到主要浏览器供应商的参与,最终形成了WebGL 规范——网络上 3D 的事实上的标准技术。
粗略地说,WebGL 是 OpenGL 到浏览器的一个端口。更具体地说,它是一组 JavaScript API,可以将 3D 场景渲染到 HTML 画布上。这些 API 直接内置于浏览器的 JavaScript 引擎中,不需要插件。这是一件好事,因为过去的侵入性浏览器插件都有安全漏洞的记录。此外,对插件的依赖,一种未包含在盒子里的技术,会限制你的 3D 网络应用程序的覆盖范围。相反,当您针对足够现代的浏览器编写 Web 应用程序时,WebGL 已经存在 - 在所有浏览器中,这意味着开发人员可以接触到更广泛的受众,而用户只需打开网站即可轻松运行。
WebGL 提供了向 GPU 提供网格、应用纹理和使用着色器控制渲染过程的能力。这是一种相当低级的方法,源于 WebGL 与 OpenGL 的相似性。特别是,这意味着经验丰富的图形程序员可以轻松地转移他们的专业知识并在另一个平台上提高工作效率。另一方面,如果要从头开始实现复杂场景的渲染,并允许用户与它们进行交互,则需要付出巨大的努力。幸运的是,有一些更高级的工具可以简化 WebGL 用于渲染和场景交互的使用。
概括
在这篇文章中,我们探讨了人们可能考虑制作 3D Web 应用程序的原因,设想了可能从包含交互式 3D 数据中受益的应用程序类型,还考虑了当今 Web 上支持 3D 图形的基本技术。