Three.js学习笔记-三要素

Three.js 学习笔记-三要素

一、Three.js 简介

(一)前世今生

Three.js 是一款运行在浏览器中的 3D 引擎,由 Ricardo Cabello(Mr.doob)在 2010 年 4 月于 GitHub 首次发布 。其起源可追溯到本世纪初,代码最初用 ActionScript 编写,2009 年移植到 JavaScript。随着 WebGL 出现,Paul Brunt 增加渲染功能,使 Three.js 设计为将绘制代码作为模块。Ricardo Cabello 负责 API 设计、创建 CanvasRenderer、SVGRenderer 并整合各种贡献。Branislav Ulicny 主要贡献在材质、着色器和后处理方面,Joshua Koo 创建了第一个面向 3D 文本的 Three.js 样本 。经过多年发展,Three.js 不断完善,已成为 Web 端创建 3D 场景和动画的重要工具,广泛应用于网页游戏、3D 产品展示、虚拟场景构建等领域 。

(二)作用

Three.js 基于原生 WebGL 封装,极大简化了在浏览器中创建和显示 3D 内容的过程。它提供了丰富的功能和接口,开发者无需深入掌握复杂的 WebGL 底层知识,就能轻松创建出精美的 3D 场景,包括各种几何形状、材质、光照效果、动画等,从而为网页带来更加生动、沉浸式的用户体验 。

二、Three.js 三要素

(一)相机(Camera)

相机决定了我们以何种视角观察 3D 场景,就如同现实生活中我们用眼睛看世界,眼睛的位置和观察方向决定了我们看到的画面。在 Three.js 中有多种相机类型,常用的是透视投影相机(PerspectiveCamera)和正投影相机(OrthographicCamera) 。

  1. 透视投影相机(PerspectiveCamera)
  • 原理:模拟人眼观察世界的方式,遵循近大远小的规律。例如,当我们看一条笔直的公路,远处的部分看起来会比近处的窄,这就是透视效果。

  • 参数

    • fov(视场角):相机视锥体垂直方向视野角度,好比我们人眼能看到的垂直范围,值越大,看到的范围越广,近大远小效果越明显。例如设置为 75 度,就确定了相机的视野范围。

    • aspect(宽高比):视锥体宽度和高度的比值,一般设置为渲染区域(如 canvas 画布)的宽高比。比如画布宽度为 800px,高度为 600px,宽高比就是 800/600 = 4/3 。

    • near(近裁面):相机视锥体近截面相对相机的距离,可理解为人眼能看清的最近距离,距离相机小于这个值的物体不会被渲染。

    • far(远裁面):相机视锥体远截面相对相机的距离,即人眼能看到的最远距离,距离相机大于这个值的物体也不

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

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

相关文章

动力电池点焊机:驱动电池焊接高效与可靠的核心力量|比斯特自动化

在新能源汽车与储能设备需求激增的背景下,动力电池的制造工艺直接影响产品性能与安全性。作为电芯与极耳连接的核心设备,点焊机如何平衡效率、精度与可靠性,成为电池企业关注的重点。 动力电池点焊机的核心功能是确保电芯与极耳的稳固连接。…

OpenCV CUDA模块图像处理------创建一个模板匹配(Template Matching)对象函数createTemplateMatching()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 创建一个用于在 GPU 上执行模板匹配的 TemplateMatching 对象。 该函数返回一个指向 TemplateMatching 的智能指针(Ptr)…

natapp 内网穿透失败

连不上网络错误调试排查详解 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 如何将DNS服务器修改为114.114.114.114_百度知道 连不上/错误信息等问题解决汇总 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 nslookup auth.natapp.cnping auth.natapp.cn

游戏(game)

题目描述 小明最近迷上了一款游戏,并且很想成为这款游戏的高手,这款游戏需要用 资源来买装备。他刚开始的资源价值为0,于是他每天都会做日常任务来获得价值为1的资源。 这款游戏中有每日商店,小明已经提前知道了接下来n天会出现的装备&#x…

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…

关于脏读,幻读,可重复读的学习

mysql 可以查询当前事务隔离级别 默认是RR repeatable-read 如果要测脏读 要配成未提交读 RU 读到了未提交的数据。 3.演示不可重复读 要改成提交读 RC 这个是指事务还未结束,其他事务修改了值。导致我两次读的不一样。 4.RR–可以解决不可重复读 小总结&…

华为云Astro中服务编排、自定义模型,页面表格之间有什么关系?如何连接起来?如何操作?

目录 一、核心关系解析 二、连接方式与操作步骤 (一)服务编排与自定义模型的连接 (二)自定义模型与页面表格的连接 (三)服务编排与页面表格的连接 三、操作示例:构建数据处理闭环 场景:用户在页面表格中修改设备信息,触发服务编排校验数据并更新数据库。 四、…

Docker镜像无法拉取问题解决办法

最近再学习RabbitMQ,需要从Docker镜像中拉取rabbitMQ,但是下拉失败 总的来说就是无法和docker镜像远程仓库建立连接 我又去尝试ping docker.io发现根本没有反应,还是无法连接找了许多办法还是没有办法解决,最后才发现是镜像问题&a…

向 AI Search 迈进,腾讯云 ES 自研 v-pack 向量增强插件揭秘

作者:来自腾讯云刘忠奇 2025 年 1 月,腾讯云 ES 团队上线了 Elasticsearch 8.16.1 AI 搜索增强版,此发布版本重点提升了向量搜索、混合搜索的能力,为 RAG 类的 AI Search 场景保驾护航。除了紧跟 ES 官方在向量搜索上的大幅优化动…

electron-vite串口通信

一、构建项目后,安装“串口通信库” npm install serialport二、设置 npm install --save-dev electron-rebuild ./node_modules/.bin/electron-rebuild 注意:如果执行报错以下问题 1、未配置python变量 2、没有Microsoft Visual Studio BuildTools 3…

Cisco IOS XE WLC 任意文件上传漏洞复现(CVE-2025-20188)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前…

从 iPhone 备份照片: 保存iPhone图片的5种方法

随着智能手机越来越融入我们的生活,我们的照片已成为我们设备上最有价值的数据形式之一。然而,iPhone内部存储空间仍然有限,因此我们需要将iPhone中的照片备份到另一个地方,以释放空间并确保珍贵的图像记忆的安全。阅读本指南&…

Ubuntu崩溃修复方案

当Ubuntu系统崩溃时,可依据崩溃类型(启动失败、运行时崩溃、完全无响应)选择以下修复方案。以下方法综合了官方推荐和社区实践,按操作风险由低到高排序: 一、恢复模式(Recovery Mode) 适用场景​​:系统启动卡顿、登录后黑屏、软件包损坏等。 ​​操作步骤​​: ​…

免费批量文件重命名工具

免费批量文件重命名工具 🌐 网站: 免费批量文件重命名工具 📌 工具简介 一款功能强大的批量文件重命名工具,支持多种重命名方式,操作简单,完全免费! 🚀 主要功能 功能描述自定义重命名直接输…

VR博物馆推动现代数字化科技博物馆

VR博物馆:推动现代数字化科博馆新篇章 随着科技的飞速发展,虚拟现实(Virtual Reality, VR)技术已经逐渐渗透到我们生活的方方面面,其中,VR博物馆作为现代数字化科博馆的重要形式之一,以独特的优…

COMSOL与MATLAB联合仿真人工智能的电学层析成像系统

关键词:MATLAB,电学层析成像,人工智能,图像重建,深度学习 一、引言 基于人工智能的电学层析成像系统是一种创新的检测技术,结合了电学层析成像技术与人工智能算法的优势。电学层析成像技术,简…

【Latex】Windows/Ubuntu 绘制 eps 矢量图通用方法(drawio),支持插入 Latex 数学公式

一直感觉 Visio 或者 PPT 中 Mathtype 对 latex 公式渲染效果不好,且在 Ubuntu 下的支持不好,最近重新调研发现一个好用的工具 drawio。 在线使用 https://app.diagrams.net/?srcabout 也有桌面版的应用,Windows 就下载 exe 安装器&#x…

selenium自动化测试学习心得1

1. 关于测试用例的顺序 首先在你测试的主类上面写TestMethodOrder(MethodOrderer.OrderAnnotation.class) 然后在测试用例上面, 写Order(),里面的数字越小,测试的优先级越大 2. 关于getText()和getAttribute("innerText") getText() 是 Selenium 方法,…

Spring AI 结合DeepSeek使用教程

Spring AI 结合DeepSeek使用教程 一、环境搭建与项目初始化 创建Spring Boot项目 使用IDEA或Spring Initializr创建项目,选择JDK 17或更高版本(推荐21)。勾选依赖项:Spring Web、Lombok,Maven或Gradle作为构建工具。添…

Android 布局优化:掌握 <include> 与 <merge> 的实战技巧

引言 在 Android 开发中&#xff0c;布局文件是 UI 设计的核心载体&#xff0c;但随着项目复杂度增加&#xff0c;布局冗余、嵌套层级过深等问题会导致性能下降。本文将通过 代码级实战示例&#xff0c;详细解析如何利用 <include> 和 <merge> 标签优化布局&#…