Web3D 从入门到跑路 · 3D 初体验

3D初体验

本文整理自老冯于 凹凸 2022 年技术分享,带领大家从案例、应用、技术生态出发,让大家了解一下 3D 在 Web 端的现状。

Hey 3D what's up,最近在Web圈混得怎样

在“元宇宙”概念越来越火热的背景下,我们准备了一系列的 3D 元宇宙公开课及教学文章,教大家如何从 0 到 1 快速搭建一个3D项目,从中可以学习到 WebGL 底层原理、图形学、热门引擎的使用方法等。在入门前,我们先从案例、应用、技术生态出发,让大家了解一下 3D 在 Web 端的现状。


一、案例展示

1.1 组成部分

先从一个基础的 DEMO 出发,一个基础的 3D 一般会有以下模块组成:

(1)渲染

打开一个 3D 页面,首先会下载模型文件,然后渲染到页面中

(2)动画

逐帧渲染动画

(3)事件绑定

通过 js 的事件绑定,触发对应的渲染。比如点击地面人物移动

(4)场景切换

众所周知,游戏里有很多场景,比如游戏加载、游戏开始、游戏结束,就是三个不同的场景。如图就是从主玩法到编辑场景


1.2 完整案例

(1)PC 端

下面来看一些有趣的例子,先从 PC 端开始 这是一名开发者博客,他从开始场景切换成主场景,然后渲染一些树、车 3D 模型,用键盘控制模型的方向,碰撞后将模型旋转,并同时播放对应的音频等。 点击体验一下 👉 https://bruno-simon.com/

这是 playcanvas 官网上的宝马 demo,它渲染了动画,点击下面的图片,可以更换这个模型的纹理。 点击体验一下 👉 https://playcanv.as/p/RqJJ9oU9

(2)H5 端

再看看移动端的案例 上面的赛车游戏,也是从开始场景切到主玩法,之后通过下方的 touch bar 对车/地图的进行位移和其他物体碰撞后,检测触发加速等事件。 扫码或点击体验一下👉 Mercedes-EQ Formula E Team - Speedboard Game

然后是大家熟知的例子,神庙逃亡,也可以看到很明显的场景切换、碰撞检测等。 扫码或点击体验一下👉 Play Temple Run 2 on Poki


二、应用场景

再来看看 3D 在国内一些正式的应用场景。

2.1 App 端

比如 VR 看房,VR 线上看房可以没有导购员的干扰,节省带看成本,用户操作上也为该房产留下了大量的数据留存;

还有如果在一些购物 App 上看鞋,它会有鞋 3D 模型预览,以及 AR 试穿,可以看清鞋子的细节以及个人试穿后的样子。

2.2 H5 端

一些互动小游戏中,也有 3D 的部分

微信小游戏中,也有 3D 的小游戏


三、技术生态

3.1 游戏引擎的定义

首先,想要“快速”实现一个 3D 游戏,需要 3D 的游戏引擎,那么到底什么是游戏引擎呢?

(1)已编写好的可编辑电脑游戏系统 (2)交互式实时图像应用程序的核心组件 (3)能容易和快速地做出游戏程式


3.2 游戏引擎的组成

大多数游戏引擎包含以下系统: (1)渲染引擎 即“渲染器”,绘制图像,并向外部表达图像的系统,含二维图像引擎和三维图像引擎

(2)物理引擎 通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映

(3)脚本引擎 提供脚本接口,让开发者通过脚本设计游戏,使游戏的开发更加灵活

(4)网络引擎 数据交换的模块,在开发多人在线游戏时使用

(5)人工智能 代替游戏开发中部分劳动密集型内容的生成,如道路检测


3.3 如何选择合适的游戏引擎

如何选择适合游戏引擎,我们一般从以下三个方面考虑:

(1)入门

  • 开发语言
  • 学习资源与技术支持能力
  • 工作流支持力度

如果是刚入门的先要考虑是否是自己熟悉的开发语言,考察该引擎的官方的资源文档、团队的问题修复能力、社区活跃度,以及引擎的工作流支持力度,如是否有 playground 等。

(2)参考

  • 商业化成熟案例
  • 应用广度

从参考实例上考虑,该引擎是否有现实的有名的项目正在使用,使用的广度;

(3)设计

  • 设计理念
  • 性能

从设计上面考虑,引擎的设计理念是否容易理解、方便第三方介入接入。以及需要结合项目的规模及功能要求,需要选择符合要求的性能优化、内存管理、资源管理的引擎。


3.4 技术栈

选取了 Github 上 star 数最多的游戏引擎,选几个来分析一下其优点及不足:

(1)Three.js

Three.js 是最流行的 JavaScript 库之一,用于使用 WebGL 在 Web 浏览器中创建和动画化 3D 计算机图形。

A. 优点:

  • 易于学习:非常容易上手,同样适合新手
  • 大型社区:示例多,用户多,社区丰富
  • 好的文档:强大的文档通常是一个强大的库的一个很好的指标,而 Three.js 具有出色的文档
  • 性能优势:出色的性能,能很好地执行复杂的渲染功能
  • PBR渲染:具有内置的 PBR 渲染,这使得渲染图形更加准确

B. 不足:

  • 不算是游戏引擎:渲染以外的功能很少
  • 面向新手:由于 API 面向新手,因此隐藏了许多高级功能

(2)Babylon.js

Babylon.js 是一个强大的、简单的、开放的游戏和渲染引擎。

A. 优点:

  • 出色的测试工具:Playground 是在进行全面开发之前对事物进行测试的出色工具,并且具有出色的启动文档
  • 强大的社区支持:社区活跃和丰富
  • 更新迭代频繁:该框架拥有频繁更新的代码库,并且第三方工具正在积极开发中
  • PBR 渲染:对 PBR 渲染的支持非常出色
  • 大牌支持:Babylon 得到 Adobe,Microsoft 等大型品牌的使用和支持
  • 问题修复:BUG 修复很快,问题很快能得到解决

B. 不足:

  • 成熟度:2013 年的第一个版本,与许多竞争对手相比,它还算年轻;
  • 文档:API 文档部分参数字段描述不够清晰;
  • 规模:不适合较小的项目

(3)Aframe

  • 使用简单,声明性 HTML:A-Frame 只需插入 <a-scene>
  • 实体组件体系结构:A-Frame 是 Three.js 之上的强大框架,为 Three.js 提供了声明性,可组合且可重用的实体组件结构
  • 性能:一个框架是在 Three.js 之上的一个瘦框架
  • 跨平台,有视觉检查器,功能丰富
  • 设计理:由于设计理念与其他引擎不同,接入第三方物理引擎的时候,不太方便做适配

(4)Playcanvas

侧重于游戏引擎而不是渲染引擎,是一款优秀的全功能游戏引擎。但是私有项目收费,没有碰撞偏移,缺少示例。

(5)Whs

  • 使用简单,集成 Three.js 渲染引擎,rendering 渲染自动化,加速 3D 场景原型制作,based 基于组件的场景图
  • 即使使用 Worker(多线程),也可以轻松集成任何高性能物理
  • 基于 ES2015+,pack Webpack 友好

(6)其他

A. Egret 白鹭、LayaAir 还有国内的一些引擎,当我们用中文搜索“游戏引擎”,一般都会推荐白鹭、LayaAir 这两个,它们的优点就是有专门的企业进行开发和维护,也可以花钱让其做定制化需求,并且支持多端开发。 白鹭的话比较偏向于 2D,3D 是近几年开始在 2D 基础上迭代的。而 Laya 比较多的人用来做微信小游戏。不足的是,他们的社区不够活跃,文档更新不及时,对于开发者来说,开发体验不是非常友好。

B. oasis 去年淘宝开源 oasis,用于支付宝的蚂蚁庄园以及其他的一些互动游戏。现在已经有 3500 个 star 了,从它的官方文档上看,使用方式与 three 类似,API 比较简单,也具有基础的物理相关示例,还是比较实用小型、功能小的项目的。

7. 小程序

如果想要兼容微信小程序端,微信官方有Adapter的示例: Adapter | 微信开放文档

有以下开源仓库,可供大家参考一下:

  • weapp-adapter 仓库
  • three-platformize 仓库
  • threejs-miniprogram 仓库

参考资料

  1. 游戏引擎 - 维基百科,自由的百科全书
  2. XR地产:VR、AR看房场景
  3. Choosing the right game engine
  4. 如何选择H5游戏引擎
  5. JavaScript Game Engines
  6. HTML5 Game Engines
  7. H5游戏开发:游戏引擎入门推荐
  8. Top 6 JavaScript and HTML5 game engines
  9. Top JS Gaming Engines and Libraries for 2020

欢迎关注凹凸实验室博客:aotu.io

或者关注凹凸实验室公众号(AOTULabs),不定时推送文章:

欢迎关注凹凸实验室公众号

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

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

相关文章

20151021

题目一给定一个无序数组&#xff0c;请调整该数组&#xff0c;调整成奇数放在数组的左边&#xff0c;偶数放在数组的右边。但是奇数与奇数之间的相对顺序不变&#xff0c;偶数和偶数之间的相对顺序也不变。要求思考&#xff1a;如果额外空间复杂度必须为O(1)&#xff0c;时间复…

独家专访阿里集团副总裁贾扬清:我为什么选择加入阿里巴巴?

真正跟贾扬清近距离接触后笔者发现&#xff0c;这位被很多人称为“AI 架构大神”的 80 后青年科学家&#xff0c;更像一位温柔且平易近人的邻家“学霸”&#xff0c;虽然技能全面碾压但丝毫没有架子。加入阿里以来&#xff0c;贾扬清一直忙于了解集团覆盖范围极广的各项产品和业…

龙蜥白皮书精选:云原生混部资源隔离技术

文/云原生 SIG 01 技术方案简介 混部就是将不同类型的业务在同一台机器上混合部署起来&#xff0c;让它们共享机器上的 CPU、内存、IO 等资源&#xff0c;目的就是最大限度地提高资源利用率&#xff0c;从而降低采购和运营等成本。 混部通常是将不同优先级的任务混合在一起&a…

windows10系统装cad2007提示缺少NET组件

2019独角兽企业重金招聘Python工程师标准>>> 打开控制面板-->找到 程序 选择 启用或关闭windows功能 打开.NET Framework3.5(默认它是关闭的)&#xff0c;然后确定 这时windows会提示要更新下载&#xff0c;确认即可&#xff0c;等待下载完成再重新运行CAD2007安…

AUTOCAD2007安装过程中遇到的问题以及解决方法

1.卸载CAD2007时提示“错误1316&#xff0c;指定的账户已存在 WINR打开注册表 点击HKEY_LOCAL_MACHINE->SOFTWARE->Classes->installer->products->7D2F 将7D2F开头的整个文件删除&#xff0c;即可安装。 CAD2007执行上述操作后重新安装时会部分会提示错误130…

lisp倒入excel数据画图_如何将EXCEL中的数据导入CAD2007画图

展开全部 bai 1、打开Excel&#xff0c;输入数据du。 zhi2、复制B列的数据。打开CAD&#xff0c;输入dao“内pl”,回车。容然后在命令行直接“CtrlV”可以以这些点直接生成一条多段线。 3、其实CAD是可以读取从Excel在复制过去的内容的。那么我们就可以把所有可以在命令行输入…

CAD二次开发--CAD2007(.Net3.5环境)等低版本CAD二次开发在VS中无法捕获断点调试解决办法(CAD二次开发无法断点调试解决办法)

目录 1.说明 2.解决办法 1.说明 在进行CAD二次开发的时候如果想进行断点调试,众所周知,在VS环境里设置断点后直接启动类库项目就好了,只需要在启动项属性里设置下“启动外部程序”就可以了,设置成cad安装目录中的acad.exe。 这样当程序运行到断点处就会自动捕获!!!!…

w ndows7和CAD哪款兼容,win7与cad2008不兼容,cad2007和win7不兼容

CDA是一款非常好的制图软件&#xff0c;如果是需要制图的朋友都知道cad对与制图的重要性&#xff0c;最近有朋友在win7系统中安装cad2007的时候发现无法安装&#xff0c;开始的时候是提示缺少.net framework 2.0 runtime&#xff0c;后来在网上查阅了资料之后发现需要先安装net…

linux常会用到的命令

查看gpu上运行的进程&#xff1a; nvidia-smi 查看进程的完整信息 ps -f -p 进程号 搜索含有指定字符的进程信息&#xff0c;如radar ps -ef|grep radar 复制文件时排除某个文件夹&#xff0c;如从源路径中排除data rsync -av --excludedata/ 源路径 目标路径查看磁盘占用…

期权分仓开户资金是否安全?具体保障措施有哪些?

网上关于期权分仓系统的真假一直都没有定论&#xff0c;两方人的争论也让很多没有接触过期权分仓系统的人摸不着头脑&#xff0c;那么期权分仓靠谱吗&#xff1f;资金在里面安全吗&#xff1f;下文为大家科普期权分仓开户资金是否安全?具体保障措施有哪些&#xff1f; 一、期权…

SQL Server 执行报错: “minus“ 附近有语法错误。

sql server 执行带 minus 的语句一直报错&#xff0c;如下图&#xff1a; 找了好久才知道minus是Oracle里面的语法&#xff0c;SQL server 应用 EXCEPT。

华硕笔记本返厂维修流程_笔记本不能更换显卡为何又叫独立显卡?

首先&#xff0c;笔记本的显卡不是不能更换&#xff0c;只是换起来比较麻烦。因为是和主板焊在一起的&#xff0c;用专业工具是可以更换的。 其次是独立显卡是区别于核心显卡(集成在CPU内部&#xff0c;显存使用系统内存)的&#xff0c;也就是有独立的显卡核心和显存等配件。而…

dell笔记本显卡报错43解决方法

dell笔记本显卡报错43解决方法 方法一方法二 方法一 使用笔记本自带的supportAssist 选择第二项中的我想检查硬件的特定部分找到报错的显卡 选择视频压力测试 途中电脑卡住或者是蓝屏等待重启再次运行,如果软件无法打开提示重启且重启后无效果可以在应用与功能中找到suppor…

macbook linux 双显卡,网友支招:苹果笔记本也能双显卡切换

泡泡网笔记本频道7月8日 最近在浏览泡泡的时候看到有一篇介绍双显卡笔记本的文章&#xff0c;作为苹果的粉丝——大家知道的&#xff0c;我满心欢喜的点击进入这篇文章&#xff0c;期望MacBook Pro能够在以强悍的性能&#xff0c;优雅的界面&#xff0c;便捷的切换。将那些阿猫…

笔记本升级方案

笔记本的硬件升级是小白用户比较关心的问题之一&#xff0c;在买电脑之前我们会琢磨笔记本的性能够不够用&#xff0c;买到机器后又会琢磨如果性能不行怎样才能让它行呢&#xff1f;虽然笔记本的硬件扩展性不如台式机丰富&#xff0c;但是依然可以通过一些基本的硬件升级来提升…

笔记本电脑升级记录

12年前笔记本电脑升级记录表 &#xffe5;6,000&#xffe5;1,360 &#xffe5;136&#xffe5;200ItemHP 6520s2008 初配2013 升级理论提升2020 升级空间CPUCPU型号T5470 T8300 T9300 T9500 Code NameMeromPenryn Penryn二级缓存2 MB L23 MB L2150%6 MB L2工艺65 nm45 nm 45…

将3060独显笔记本升级为高级AI工作站

将3060独显笔记本升级为windows Ubuntu AI工作站 背景&#xff1a;我搞AI的&#xff0c;手头有一个笔记本&#xff0c;显卡Nvidia3060 6G显存&#xff0c;磁盘和内存较低。固态硬盘只有128G&#xff0c;我安装了windowsubuntu双系统&#xff0c;windows 80G,ubuntu 40G&#x…

计算机能换显卡吗,笔记本显卡能不能换_笔记本显卡能换么-win7之家

显卡是连接显示器和个人计算机主板的重要组件&#xff0c;但是有时候在使用的时候&#xff0c;可能会遇到显卡出现问题&#xff0c;所以很多笔记本电脑用户就想知道显卡能不能换&#xff0c;有些显卡是直接焊在主板上的&#xff0c;一般不建议换&#xff0c;要换也可以&#xf…

计算机能换显卡吗,笔记本能换显卡么 笔记本电脑能否换显卡【详解】

笔记本能换显卡么?随着笔记本技术更新换代不断加快&#xff0c;如今很多性能主流的独立笔记本已经具备较强的游戏性能&#xff0c;但早几年购买的独显笔记本由于显卡性能过差&#xff0c;因此存在游戏性能较差的情况。不少朋友问&#xff0c;笔记本显卡可以换或者笔记本独立显…