Three.js怎么工作的?

news2025/6/9 0:45:44

Three.js 是怎么工作的?

Three.js 的核心工作是:

  1. 构建一个虚拟的 3D 世界(Scene)

  2. 模拟摄像机视角(Camera)

  3. 用 WebGL 把这个场景“渲染成一张图片”

  4. 把这张图片画在 canvas 上

👉 所以 Three.js 最终的任务就是:画一张图像到 canvas 上,就像摄影师拍照后,把照片贴在 canvas 上一样。

角色功能
Three.js把场景、物体、灯光、摄像机等组织成数据结构,并自动转成 WebGL 命令
WebGL把这些命令送到 GPU,画三角形(顶点 ➜ 图形 ➜ 像素)
Canvas接收 WebGL 画出来的图像并显示

WebGL 干了什么?

  1. WebGL 不直接“画像素”

  2. 它会画很多三角形

  3. 然后由GPU负责把这些三角形“光栅化”为像素,显示在屏幕上

为什么三角形?

因为任何复杂图形都能用一堆三角形拼出来(这是 GPU 最擅长处理的基本单位)。

 Three.js (描述3D场景)Three.js 搭建了一个虚拟的三维世界,里面有物体、灯光、摄像机等等,好比你在搭积木,摆放场景。 
  ↓
WebGL (把3D转换为2D图像)WebGL 就像一台“虚拟相机”,它帮你从某个角度拍这整个三维积木世界,但拍出来的是一张“平面的照片”,把三维的东西变成二维图。
  ↓
Canvas (接收图像并显示在屏幕上)个“照片”得放个地方展示,Canvas 就是电脑网页上的“画布”,用来展示 WebGL 拍出来的这张二维图。
  ↓
用户看到的是像素点组成的画面

  • 你用手机拍一栋建筑,这栋建筑是3D的,真实有高有宽有深。

  • 但是你拍出来的是一张“二维照片”,只有长和宽,是平的。

  • 你看这张照片,感觉建筑有立体感,是因为照片里有阴影、远近和透视。

  • Three.js 和 WebGL 做的事情就是:

  • 帮你“用程序”拍一张虚拟的“二维照片”,它是用数学算出来的,但看起来有三维效果。

  • 这个“照片”就是画在网页上的那个 canvas 里的图。

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

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

相关文章

什么是梯度磁场

梯度磁场是叠加在均匀主磁场(如MRI中的静磁场B₀)上的一种特殊磁场,其强度会沿着特定方向(如X、Y或Z轴)呈线性变化。这种磁场在磁共振成像和粒子控制等领域发挥着关键作用,主要用于实现空间位置的精确编码和…

从零开始的python学习(七)P102+P103+P104+P105+P106+P107

本文章记录观看B站python教程学习笔记和实践感悟,视频链接:【花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…

Linux--进程的调度

1.进程切换 CPU上下⽂切换:其实际含义是任务切换, 或者CPU寄存器切换。当多任务内核决定运⾏另外的任务时, 它保存正在运⾏任务的当前状态, 也就是CPU寄存器中的全部内容。这些内容被保存在任务⾃⼰的堆栈中, ⼊栈⼯作完成后就把下⼀个将要运⾏的任务的当前状况从该…

VmWare Ubuntu22.04 搭建DPDK 20.11.1

一、开发环境 Ubuntu 版本 二、增加虚拟机的网卡 给虚拟机增加1个网卡,加上原来的网卡,一共2个 网络适配器作为 ssh 连接的网卡,网络适配器2作为 DPDK 运行的网卡。 三、NAT模式简介 这里待补充,网上都是那一张图,看不懂 四、使网卡名称从0开始命名 进入管理员权限 s…

selenium-自动更新谷歌浏览器驱动

1、简介 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题,因为有些网页数据是通过JavaScript动态加载的。selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如输入…

Docker容器部署elasticsearch8.*与Kibana8.*版本使用filebeat采集日志

第 1 步:使用 Docker Compose 部署 Elasticsearch 和 Kibana 首先,我们需要创建一个 docker-compose.yml 文件来定义和运行 Elasticsearch 和 Kibana 服务。这种方式可以轻松管理两个容器的配置和网络。 创建 docker-compose.yml 文件 在一个新的文件夹…

OpenCV CUDA模块图像处理------双边滤波的GPU版本函数bilateralFilter()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数在 GPU 上执行双边滤波操作,是一种非线性平滑滤波器,能够在 保留边缘的同时去除噪声。 函数原型 void cv::cuda:…

华为手机开机卡在Huawei界面不动怎么办?

遇到华为手机卡在启动界面(如HUAWEI Logo界面)的情况,可依次尝试以下解决方案,按操作复杂度和风险由低到高排序: 🔧 一、强制重启(优先尝试) 1.通用方法‌ 长按 ‌电源键 音量下键‌…

go语言map扩容

map是什么? ​在Go语言中,map是一种内置的无序key/value键值对的集合,可以根据key在O(1)的时间复杂度内取到value,有点类似于数组或者切片结构,可以把数组看作是一种特殊的map,数组的key为数组的下标&…

5.3 Spring Boot整合JPA

本文详细介绍了如何在Spring Boot项目中整合Spring JPA,实现对数据库的高效操作。首先,创建Spring Boot项目并添加必要的依赖,如Druid数据源。接着,配置数据源属性,创建实体类Comment和Article,并使用JPA注…

腾讯开源视频生成工具 HunyuanVideo-Avatar,上传一张图+一段音频,就能让图中的人物、动物甚至虚拟角色“活”过来,开口说话、唱歌、演相声!

腾讯混元团队提出的 HunyuanVideo-Avatar 是一个基于多模态扩散变换器(MM-DiT)的模型,能够生成动态、情绪可控和多角色对话视频。支持仅 10GB VRAM 的单 GPU运行,支持多种下游任务和应用。例如生成会说话的虚拟形象视频&#xff0…

[文献阅读] Emo-VITS - An Emotion Speech Synthesis Method Based on VITS

[文献阅读]:An Emotion Speech Synthesis Method Based on VITS 在VITS基础上通过参考音频机制,获取情感信息,从而实现的情感TTS方式。 摘要 VITS是一种基于变分自编码器(VAE)和对抗神经网络(GAN&#xf…

OpenCV-Python Tutorial : A Candy from Official Main Page(持续更新)

OpenCV-Python 是计算机视觉领域最流行的开源库之一,它结合了 OpenCV (Open Source Computer Vision Library) 的 C 高性能实现和 Python 的简洁易用特性,为开发者提供了强大的图像和视频处理能力。具有以下优势: 典型应用领域: …

【Vue】指令补充+样式绑定+计算属性+侦听器

【指令补充】 【指令修饰符】 指令修饰符可以让指令的 功能更强大,书写更便捷 分类: 1.按键修饰符(侦测当前点击的是哪个按键) 2.事件修饰符(简化程序对于阻止冒泡, 一些标签的默认默认行为的操作&…

LLM 笔记:Speculative Decoding 投机采样

1 基本介绍 投机采样(Speculative Sampling)是一种并行预测多个可能输出,然后快速验证并采纳正确部分的加速策略 在不牺牲输出质量的前提下,减少语言模型生成 token 所需的时间 传统的语言模型生成是 串行 的 必须生成一个&…

当SAP系统内计划订单转换为生产订单时发生了什么?

【SAP系统研究】 #SAP #计划订单 #生产订单 #采购申请 一、关于计划订单的一点疑惑 曾经对SAP为什么会有计划订单,是感到很疑惑的。 这个界面简单,配置点也不多,能被随意“摆布”,一旦要变形就消失得无影无踪的计划订单,why? 但是,再次重新审视过之后,才发现它其实…

PDF转PPT转换方法总结

你是否遇到过这些场景? 收到客户发来的产品手册PDF,明天就要用它做演示; 公司历史资料只有PDF版,领导突然要求更新为幻灯片。 这时PDF转PPT工具就成了救命稻草。接下来,介绍三种PDF转PPT工具。 1. iLoveOFD在线转换…

3D Web轻量化引擎HOOPS Communicator的定制化能力全面解析

HOOPS Communicator 是Tech Soft 3D推出的高性能Web工程图形引擎。它通过功能丰富的JavaScript API,帮助开发团队在浏览器中快速添加2D/3D CAD模型的查看与交互功能。该引擎专为工程应用优化,支持大规模模型的流畅浏览、复杂装配的智能导航、流式加载和服…

【力扣链表篇】19.删除链表的倒数第N个节点

题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出:[]…

如何使用Jmeter进行压力测试?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是压力测试 软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬…