Three.js简介

Three.js前提须知

讲到 Three.js,就需要先说一下 OpenGL 和 WebGL。

OpenGL 是一个跨平台的3D/2D的绘图标准(规范),WebGL(Web Graphics Library)是一种3D绘图协议。

WebGL允许把JavaScript和OpenGL 结合在一起运用,但使用WebGL原生的API来写3D程序非常的复杂,同时需要相对较多的数学知识,对于前端开发者来说学习成本非常高。

WebGL

WebGL是一种Javascript的3D图形接口,把JavaScript和OpenGL ES 2.0结合在一起。

OpenGL

OpenGL是开放式图形标准,跨编程语言、跨平台,Javascript、Java 、C、C++ 、 python 等都能支持OpenGL ,OpenGL的Javascript实现就是WebGL。OpenGL ES 2.0是OpenGL的子集,针对手机、游戏主机等嵌入式设备而设计。

Canvas

Canvas是HTML5的画布元素,在使用Canvas时,需要用到Canvas的上下文,可以用2D上下文绘制二维的图像,也可以使用3D上下文绘制三维的图像,其中3D上下文就是指WebGL。

02
Three.js是什么?

官网:Javascript 3D library(JavaScript 3D 库)。

Three.js是基于webGL的封装的一个易于使用且轻量级的3D库,Three.js对WebGL提供的接口进行了非常好的封装,简化了很多细节,大大降低了学习成本,极大地提高了性能,功能也非常强大。

用户不需要详细地学习 WebGL,就能轻松创作出三维图形,是前端开发者研发3D绘图的主要工具。

微信小游戏跳一跳也是在基于Three.js研发的,Threejs现在是独领风骚。

简言之:Three.js就是能够实现3D效果的JS库

03
OpenGL、WebGL、Canvas、Three.js
四者关系

OpenGL:3D绘图标准

WebGL:OpenGL + JavaScript

Canvas:WebGL + Canvas 2D

Three.js:一个基于WebGL封装的库

类似于:

ECMAscript:脚本语言规范

JavaScript:脚本语言

jQuery: 一个基于JavaScript封装的库

简单一句话概括:WebGL和Three.js的关系,相当于JavaScript和jQuery的关系。

04
Three.js应用场景有哪些?

Web 3D游戏


3D物体模型展示

数据可视化


Web VR

其它特殊效果展示


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/JACK_SUJAVA/article/details/123509554

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

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

相关文章

图像处理学习笔记(一)

本文主要介绍,以供读者能够理解该技术的定义、原理、应用。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:ISP处理 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就…

xAI开发的一款巨大型语言模型(HLM)--Grok 1

在xAI发布Grok的权重和架构之后,很明显大型语言模型(LLM)的时代已经过去,现在是巨大型语言模型(HLM)的时代。这个混合专家模型发布了3140亿个参数,并且在Apache 2.0许可下发布。这个模型没有针对…

【项目管理后台】Vue3+Ts+Sass实战框架搭建一

项目管理后台 建立项目最好是卸载Vetur 新建.env.d.ts文件安装Eslint安装校验忽略文件添加运行脚本 安装prettier新建.prettierrc.json添加规则新建.prettierignore忽略文件 安装配置stylelint新建.stylelintrc.cjs 添加后的运行脚本配置husky配置commitlint配置husky 强制使用…

安卓面试题多线程 76-80

76. 简述普通线程与守护线程的区别 ?java 中的线程分为两种:守护线程(Daemon)和用户线程(User) 任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(boolon);true 则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在 Thread.start…

从服务器到云原生:企业IT基础设施的演进之路

随着数字经济的迅猛发展,企业IT数字化转型已成为推动业务创新和提升竞争力的关键。在这一转型过程中,基础设施的建设与升级显得尤为重要。企业需要不断优化和更新他们的基础设施,以适应不断变化的市场需求和技术发展。本文将探讨企业IT数字化…

信息系统项目管理师020:信息安全(2信息技术发展—2.1信息技术及其发展—2.1.4信息安全)

文章目录 2.1.4 信息安全1.信息安全基础2.加密解密3.安全行为分析技术4.网络安全态势感知 2.1.4 信息安全 常见的信息安全问题主要表现为:计算机病毒泛滥、恶意软件的入侵、黑客攻击、利用计算机犯罪、网络有害信息泛滥、个人隐私泄露等。随着物联网、云计算、人工智…

【JVM】如何判断堆上的对象没有被引用?

如何判断堆上的对象没有被引用? 常见的有两种判断方法:引用计数法和可达性分析法。 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1,取消引用时减1。 引用计数法的缺点-循环引用 引用计数法的优点是实现简单&…

大数据面试题 —— HBase

目录 什么是HBase简述HBase 的数据模型HBase 的读写流程HBase 在写的过程中的region的split的时机HBase 和 HDFS 各自的使用场景HBase 的存储结构HBase 中的热现象(数据倾斜)是怎么产生的,以及解决办法有哪些HBase rowkey的设计原则HBase 的列…

RAFT: Adapting Language Model to Domain Specific RAG

RAFT: Adapting Language Model to Domain Specific RAG 相关链接:arXiv GitHub 关键字:Retrieval-Augmented Fine Tuning (RAFT)、Large Language Models (LLMs)、Domain Specific RAG、Distractor Documents、Chain-of-Thought 摘要 预训练大型语言模…

云原生:重塑未来应用的基石

随着数字化时代的不断深入,云原生已经成为了IT领域的热门话题。它代表着一种全新的软件开发和部署范式,旨在充分利用云计算的优势,并为企业带来更大的灵活性、可靠性和效率。今天我们就来聊一聊这个热门的话题:云原生~ &#x1f4…

Android Studio实现内容丰富的安卓自行车租赁平台

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号105 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.查看自行车分类 4.预订自行车, 5.…

vue3之声明式和编程式导航

在组件内部,可以使用 r o u t e r 属性访问路由,例如 t h i s . router 属性访问路由,例如 this. router属性访问路由,例如this.router.push(…)。如果使用组合式 API,你可以通过调用 useRouter() 来访问路由器&#…

jdk8的stream新特性写法

1、集合A判断是否包含集合B里面的元素&#xff0c;并且把包含元素放到一个新集合里面 List<TagBean> tagBean tagBeans.stream().filter(adminMo.getTagList()::contains).collect(toList());2、把subListByChildId里面的subId作为key,本身对象ChannelSubMo作为value …

【高效开发工具系列】语雀Excel入门

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

富格林:亏损总结正规经验预防

富格林悉知&#xff0c;在现货黄金投资中亏损是投资者最不愿意看到的&#xff0c;想要避免亏损&#xff0c;在进入市场之前应该做好基础知识的学习&#xff0c;对亏损案例进行分析深剖其中的规律和特征&#xff0c;从而运用正规的学习方法经验规避风险。以下总结几点正规的做单…

前端项目,个人笔记(三)【Vue-cli - api封装-axios使用举例】

目录 前言 1、axios配置与测试 1.1、配置 1.2、测试 2、使用axios案例-渲染header 3、Pinia优化重复请求 3.1、为什么&#xff1f; 3.2、使用Pinia优化代码步骤 步骤一&#xff1a;在main.js中创建 Pinia 实例&#xff0c;并将其作为插件添加到 Vue 应用中 步骤二&am…

3703. 括号的匹配 北京师范大学考研上机真题 栈的思想

在算术表达式中&#xff0c;除了加、减、乘、除等运算外&#xff0c;往往还有括号。 包括有大括号 {}&#xff0c;中括号 []&#xff0c;小括号 ()&#xff0c;尖括号 <> 等。 对于每一对括号&#xff0c;必须先左边括号&#xff0c;然后右边括号&#xff1b;如果有多个…

2024年数据隐私将成为定义科技问题的关键问题。

数据隐私&#xff1a;2024年科技领域的核心议题 引言 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;如ChatGPT等AI驱动的聊天机器人正在重塑我们熟知的行业。然而&#xff0c;每一次技术的进步&#xff0c;都伴随着传统角色的消逝。2023年6月&#xff0…

初识数据库|数据库的特点、分类以及作用

数据库系统&#xff08;DateBase System&#xff0c;简称DBS&#xff09;是指在计算机系统中引入数据库后的系统构成&#xff0c;由计算机硬件&#xff0c;操作系统&#xff0c;DBMS&#xff0c;DB&#xff0c;应用程序和用户以及数据库开发和管理人员等组成。 &#xff08;一…

C#基础语法学习笔记(传智播客学习)

最近在学习C#开发知识&#xff0c;跟着传智播客的视频学习了一下&#xff0c;感觉还不错&#xff0c;整理一下学习笔记。 C#基础语法学习笔记 1.背景知识2.Visual Studio使用3.基础知识4.变量5.运算符与表达式6.程序调试7.判断结构8.循环结构9.常量、枚举类型10.结构体类型11.数…