当前位置: 首页 > news >正文

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

请添加图片描述

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 之上,我们仍然可以通过某些方式与它交互。在某些时候,我们将开始编写着色器并创建矩阵。

相关文章:

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

01.介绍 Three.js 非常庞大,你可以用它做无数的事情。 在第一章中,我们将学习所有基础知识,例如创建第一个场景、渲染、添加对象、选择正确的材料、添加纹理、为所有内容制作动画,甚至将其放到网上。有些人可能会觉得这部分有点…...

力扣第 104 场双周赛 2681. 英雄的力量

原题链接力扣 题目大意:我开始看成连续子段了,写了个递归程序....... 一个数组任选一个子序列,子序列的力量值最大值平方*最小值。求所有子序列的力量和。 分析过程:如序列长度为n,子序列总数为2的n次幂&#xff0c…...

在linux上创建crypto_LUKS格式的块设备

要在Linux上创建一个块设备并将其格式化为 crypto_LUKS,可以按照以下步骤进行: 创建一个空白文件,作为块设备的基础。可以使用 dd 命令创建指定大小的文件,例如: dd if/dev/zero of/path/to/device bs1M count100这将创…...

76.建立一个主体样式第二部分

上节课的时候我们完成的页面是这个样子! ● 之后我们通过绝对定位来解决位置定位的问题 .header-container {width: 1200px;margin: 0 auto;position: absolute;left: 50%;top: 50%; }header {height: 100vh;background-color: orange;position: relative; }● 之…...

SQL删除重复的记录(只保留一条)-窗口函数row_number()

文章目录 一、关于mysql表中数据重复二、聚合函数min(id)not in二、窗口函数row_number()四、补充:常见的窗口函数 一、关于mysql表中数据重复 关于删除mysql表中重复数据问题,本文中给到两种办法:聚合函数、窗口函数row_number()的方法。 (注…...

CF1660D Maximum Product Strikes Back 题解

CF1660D Maximum Product Strikes Back 题解 题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 思路点拨(分类题)缩小研究对象范围除0的分析加上0的分析 代码实现小方法陈述 题目描述 你有一个长度为 n n n 的数组,每一个元素都在 …...

基于CSSOM的暗链检测技术实现方案

什么是暗链 大部分的开源代码在实现暗链检测的时候都是直接判断页面里面有没有敏感词,如果有,就认为该链接为暗链。这种做法其实是有误的。 违规链接应该分为:外链、内链、死链和暗链。而暗链除了违规,还应该具备“暗”这个看不见的特征。 暗链的特征 其实“暗链”就是看…...

MySQL db、tables_priv、columns_priv和procs_priv权限表

在 MySQL 数据库中,权限表除了 user 表外,还有 db 表、tables_priv 表、columns_priv 表和 procs_priv 表。在《MySQL user权限表详解》中我们讲解了 MySQL 的 user 表,下面主要介绍其它几种权限表。 db表 db 表比较常用,是 MyS…...

JavaWeb-JSP的学习

JSP 今日目标: 理解 JSP 及 JSP 原理能在 JSP中使用 EL表达式 和 JSTL标签理解 MVC模式 和 三层架构能完成品牌数据的增删改查功能 1、JSP 概述 JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术…...

力扣sql中等篇练习(二十三)

力扣sql中等篇练习(二十三) 1 统计实验的数量 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 有可能数据本身就不全,就需要自行创建临时表 WITH T as (SELECT Android p1,Reading e1UNIONSELECT Android p1,Sports e1UNIONSELECT Android p1,Prog…...

C语言算法之查找

一.查找相关概念 这一部分解释数据结构里面查找的相关基础概念: 查找:在数据集合中寻找满足某种条件的数据元素的过程。查找表:用于查找的数据集合关键字:数据元素中唯一标识该元素的某个数据项的值静态查找表:静态查…...

肝一肝设计模式【九】-- 享元模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 肝…...

自动化测试的十大雷区【刚入门必看】

虽然从自己的错误中学习也不错,但从别人的错误中学习总是更好的。 作为一个自动化测试人员,分享常见的容易犯的10个错误,可以从中吸取教训,引以为鉴。 一、必要时才自动化 新人小王接到为Web应用程序自动化测试脚本的任务时&…...

【Android源码篇】用grep搜索源码内容关键词

前言 选项: • -w:只匹配整个单词,不会部分匹配 • -r:递归搜索 • -n:显示行号 • -i:忽略字符大小写 • -I(大写i):忽略二进制文件 • -I:忽略文件内容&am…...

腾讯云轻量应用服务器卡死怎么连接?

腾讯云轻量云服务器卡死怎么解决?使用腾讯云自带的VNC登录连接轻量服务器,或使用腾讯云OrcaTerm一键免密登录轻量实例。如果是确定数据没问题,也可以使用控制台自带的重启实例。 腾讯云轻量应用服务器参考:https://curl.qcloud.co…...

Charles安装及抓取APP接口

一、Charles使用 Charles是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,…...

Linux开发工具:yum和vim的使用

目录 一. Linux下的软件 1.1 软件安装的三种方法 1.2 采用yum安装软件 1.3 yum源的问题 二. vim开发工具的使用 2.1 vim的三种基本模式 2.2 命令模式下vim的常用指令 2.2.1 定位相关指令 2.2.2 光标移动相关指令 2.2.3 插入相关指令 2.2.4 复制粘贴相关指令 2.2.5 替…...

Java基础重温巩固

方法 方法与方法之间是平级关系,不能嵌套return表示结束当前方法 基本数据类型和引用数据类型 基本数据类型:数据存储在自己的空间中 引用数据类型:数据存储在其他空间中,自己空间存储的是地址值 值传递 传递基本数据类型时&…...

Text2SQL 语义解析数据集、解决方案和学术论文资源整合

目录 什么是Text2SQL? Text2SQL语义解析数据集 Text2SQL解决方案 Text2SQL相关学术论文 欢迎大家,我是你们的博主,今天我们来讨论一个非常有趣且有挑战性的话题 —— Text2SQL。这个话题涉及到自然语言处理 (NLP),数据库查询语言 (SQL)&…...

redis集群+哨兵配置实操宝典

本地安装redis 配置集群和哨兵 1、下载安装redis #wget http://download.redis.io/releases/redis-5.0.12.tar.gz #下载安装包 #yum -y install gcc #安装依赖包 #tar -zxvf redis-5.0.12.tar.gz #cd redis-5.0.12 #make 2、主备配置 我们采用一主两备的结构 主机 192.168.3.…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

Spring Boot + MyBatis 集成支付宝支付流程

Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例&#xff08;电脑网站支付&#xff09; 1. 添加依赖 <!…...