【Three.js】第一、二章 入门指南和基础知识

news2024/11/27 22:43:09

请添加图片描述

01.介绍

Three.js 非常庞大,你可以用它做无数的事情。

  • 在第一章中,我们将学习所有基础知识,例如创建第一个场景、渲染、添加对象、选择正确的材料、添加纹理、为所有内容制作动画,甚至将其放到网上。有些人可能会觉得这部分有点无聊,因为课程列举了很多多元化的元素。别担心,我认为它们都是有趣和有创意的部分。
  • 在下一章中,我们将介绍许多经典技术:例如,创建我们自己的几何体、添加灯光和阴影、与 3D 对象交互以及添加粒子
  • 在第三章中,我们将通过学习如何使用 Blender 创建我们自己的 3D 模型来学习更高级的技术,甚至偏离 WebGLThree.js。这么做是对你有帮助的!您还将在本课程中学习如何使用 Blender。您还将学习如何实现我用于案例作品集的作品。课程会教你如何为大型项目组织代码。
  • 在第四章中,我们将讨论着色器。如果您已经听说过着色器,您可能知道这是人们开始学习困难的地方,并且有充分的理由。着色器很难,但着色器将释放 WebGL 的真正力量。你将能够创造出看起来不可能用代码实现的东西。如果你不明白我在说什么,别担心,一旦你学完这一章,一切都会明白的。
  • 在第五章中,我们将更深入地学习更高级的技术,例如后处理、性能优化以及如何将 WebGL 与 HTML 混合
  • 在第六章中,我们将学习如何创建一个类似于您在 Three.js Journey 主页上看到的场景。这一章会更长更无聊,因为技术完全相同,但是多多实践,在那之后你将能够创建任何类型的场景。
  • 最后,在第七章中,我们将学习如何使用 React Three FiberReact 应用程序中使用 Three.js。我知道你们中的许多人对此感到兴奋,我相信你们会喜欢这一部分的。您将学习和练习的技术数量是巨大的。您甚至可以创建一款具有物理特性、真实游戏机制、用户界面和炫酷效果的游戏。哦,如果你不了解 React,别担心,我也已经为你准备好了。有一个 4 小时的课程专门用于学习 React 基础知识。那是额外的拓展课程。你是来学习 Three.js 的,你会在这个过程中学到很多其他的东西。

02.什么是WebGL和如何使用Three.js

Three.js是一个3D JavaScript库,使开发人员能够为web创建3D体验
它适用于 WebGL,但您可以使其适用于 SVGCSS,但这两者非常有限,我们不会在本课程中介绍。

什么是 WebGL?

WebGL 是一种 JavaScript API,可以以惊人的速度在画布中绘制三角形。它与大多数现代浏览器兼容,而且速度很快,因为它使用访问者的图形处理单元 (GPU)。
WebGL 不仅可以绘制三角形,还可以用于创建 2D 体验,但为了课程的缘故,我们将专注于绘制三角形的 3D 体验。
GPU 可以进行数千次并行计算。想象一下,您想要渲染一个 3D 模型,而这个模型由 1000 个三角形组成——仔细想想,这并不多。每个三角形包括 3 个点。当我们想要渲染我们的模型时,GPU 将不得不计算这 3000 个点的位置。因为 GPU 可以进行并行计算,所以它会在一个原始数据中处理所有的三角形点。
模型的点放置好后,GPU 需要绘制这些三角形的每个可见像素。再一次,GPU 将一次性处理成千上万的像素计算。
放置点和绘制像素的指令是用我们所说的着色器编写的。让我告诉你,着色器很难掌握。我们还需要向这些着色器提供数据。例如:如何根据模型变换改变相机的属性放置点。这些被称为矩阵。我们还需要提供数据来帮助像素进行着色。如果有一盏灯并且照耀着三角形,它应该比没有照耀的三角形更亮。
在画布上绘制一个三角形至少需要 100 行代码。这就是原生 WebGL 学习如此困难的原因。如果您想在这种情况下添加透视图、灯光、模型并为所有内容设置动画,我只能说祝您好运。
不过使用原生的 WebGL 不全是坏处,因为原生 WebGL 源于底层,非常接近 GPU所以我们可以实现出色的优化和更多控制。

Three.js 来拯救复杂的WebGl

Three.jsMIT 许可下的 JavaScript 库,可在 WebGL 之上运行。该库的目标是大大简化处理我们刚才所说的所有内容的过程。只需几行代码,您就可以拥有一个动画 3D 场景,而且您不必提供着色器和矩阵。
因为 Three.js 就在 WebGL 之上,我们仍然可以通过某些方式与它交互。在某些时候,我们将开始编写着色器并创建矩阵。

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

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

相关文章

如何轻松掌握接口测试——POST请求和COOKIE使用技巧?

目录 引言 请求方法: POST请求方法:添加资源(对服务端已存在的资源也可以做修改和删除操作) 实战练习 实战练习2 COOKIE: Status Code:协议状态码 接口文档 结语 引言 对于初学者或者没有接口测试…

[笔记]渗透测试工具Burpsuit《一》Burpsuit介绍

文章目录 前言一、安装配置1.1 环境1.2 安装过程1.3 科技过程 二、常用功能2.1 Manual penetration testing features2.2 Advanced/custom automated attacks2.3 Automated scanning for vulnerabilities2.4 Productivity tools2.5 Extensions 三、拓展功能 前言 Burp Suite(b…

设计原则-单一职责原则

在编程大环境中,评价代码组织方式质量的好坏涉及到各个方面,如代码的可读性、可维护性、可复用性、稳定性等各个方面。而在面向对象语言中也可以通过以下各个方面: 类中方法的设计类中属性的设计类(接口、抽象类、普通类)的设计类与类之间的…

IMU 积分进行航迹推算

IMU 积分进行航迹推算 Reference https://github.com/gaoxiang12/slam_in_autonomous_driving 1.0 递推方程推导 \quad 连续时间内的 IMU 运动学方程: R ˙ R ω ∧ q 1 2 q ω ˙ p ˙ v v ˙ a \dot{\mathbf{R}}\mathbf{R}\omega ^{\wedge} \\ \dot{\mathbf{…

[CTF/网络安全] 攻防世界 weak_auth 解题详析

[CTF/网络安全] 攻防世界 weak_auth 解题详析 弱认证弱认证绕过方法姿势Burp Suite 爆破 总结 题目描述:小宁写了一个登陆验证页面,随手就设了一个密码。 弱认证 weak_auth翻译:弱认证 这个术语通常用来描述一种较弱的安全认证方法或机制&am…

HTML语法、常用标签、表单,CSS选择器。简单登录页面的实现

HTML和CSS粗略介绍 文章目录 HTML和CSS粗略介绍HTML页面第一个HTML页面添加图片和视频 HTML语法规范div标签span标签转义字符 HTML常用标签换行和分割线标题超链接列表元素表格 HTML表单输入框和按钮多行文本 CSS样式CSS选择器input标签选择器id选择器类选择器 组合选择器和优先…

【HackTheBox Bagel】打靶记录

一、namp扫描到5000 8000 22 端口 二、访问8000端口,看到跳转到域名bagel.htb,加入到hosts 看到该url 像文件包含,尝试fuzz一波 尝试找公私钥均未果,找到了cmdline 进一步对其包含 HTTP/1.1 200 OK Server: Werkzeug/2.2.2 …

Java多线程异常处理

文章目录 一. 线程中出现异常的处理1. 线程出现异常的默认行为2. setUncaoughtExceptionHandler()方法处理异常3. setDefaultUncaoughtExceptionHandler()方法进行异常处理 二. 线程组内出现异常 一. 线程中出现异常的处理 1. 线程出现异常的默认行为 当单线程中初出现异常时…

工业缺陷检测数据及代码(附代码)

介绍 目前,基于机器视觉的表面缺陷检测设备已广泛取代人工视觉检测,在包括3C、汽车、家电、机械制造、半导体与电子、化工、制药、航空航天、轻工等多个行业领域得到应用。传统的基于机器视觉的表面缺陷检测方法通常采用常规图像处理算法或人工设计的特征加分类器。一般而言…

【Tomcat下载及使用说明】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1.什么是Tomcat 2.Tomcat下载流程及注意问题 …

Eclipse将代码收缩if/for/try,支持自定义区域收缩

Hi, I’m Shendi Eclipse将代码收缩if/for/try,支持自定义区域收缩 最近忙于给网站增加功能,在使用 Eclipse 编写 Java 代码时发现一个函数内代码过多,并且 if,for,try这种代码块无法收缩(在IDEA&#xff0…

【快速入门-简单实现】使用Java实现的单播、组播和广播

说明 TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,基于TCP实现的肯定是单播(但单播还可以使用UDP协议实现)。只有UDP才会使用广播和组播。 Java中的单播、组播和广播可以使用TCP或UDP协议来实现,具体取决于应用程…

【C语言】实现猜数字游戏——随机数

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 该篇将对 选择与循环语句 进行运用,实现猜数字游戏。 需求:游戏后可以选择再次进行游戏,也可以选择…

【Java-Crawler】HttpClient+Jsoup实现简单爬虫

Java编写网络爬虫 网络爬虫1. 爬虫入门程序 网络爬虫1. 网络爬虫的介绍2. 为什么学习网络爬虫 HttpClient1. Get请求2. 带参数的GET请求3. Post请求4. 带参数的 Post 请求5. 连接池6. 请求参数 Jsoup1. jsoup 介绍2.1 功能1.1-解析url2.2 功能1.2-解析字符串2.3 功能1.3-解析文…

由浅入深Dubbo核心源码剖析环境介绍

目录 1 框架介绍1.1 概述1.2 运行架构1.3 整体设计 2 环境搭建2.1 源码拉取2.2 源码结构2.3 环境导入2.4 测试2.5 管理控制台 1 框架介绍 1.1 概述 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能&#…

ARM学习笔记_1 模式,寄存器,流水线

ARM arm体积小功耗低性能高,支持thumb ARM双指令集,兼容8/16位器件;大量使用寄存器,指令定长,寻址简单。 ARM是32位架构,Word 32bit, half Word 16bit. 模式 用户模式是用户程序的模式&#…

解决MySQL无法输入中文字符的问题

文章目录 问题描述问题排查解决方案1️⃣创建数据库时设置字符集为utf82️⃣修改数据库配置文件【比较麻烦】 写在最后 前几日在使用MySQL数据库的时候,出现了一处保存,故作此记录✍ 问题描述 下面是我这样exam表的结构 mysql> desc exam; --------…

PETR 论文学习

1. 解决了什么问题? DETR3D 为端到端的 3D 目标检测提供了一个思路。但是,DETR3D 中的 2D 到 3D 的变换会带来一些问题。 Reference point 的预测坐标可能不够准确,采样特征可能位于目标区域之外;只有映射点周围的特征会被选取&…

“超越极限 - 如何使用 Netty 高效处理大型数据?“ - 掌握 Netty 技巧,轻松应对海量数据处理!

1 写大型数据 因为网络饱和的可能性,如何在异步框架中高效地写大块的数据是特殊问题。由于写操作是非阻塞的,所以即使没有写出所有的数据,写操作也会在完成时返回并通知 ChannelFuture。当这种情况发生时,如果仍然不停地写入&…

2023年最受欢迎的低代码平台排行榜

随着企业寻找在降低成本的同时加快软件开发的方法,低代码开发平台正变得越来越受欢迎。这些平台允许开发人员使用拖放界面和预置组件,以最少的代码创建复杂的应用程序。它不仅帮助企业加快了数字化转型的脚步,而且打破业务部门和IT部门之间的…