阳泉政府网站建设/上海seo关键词优化

阳泉政府网站建设,上海seo关键词优化,快速建站开源,手机网站免费制作平台系列文章目录 Three.js 快速入门教程【一】开启你的 3D Web 开发之旅 Three.js 快速入门教程【二】透视投影相机 Three.js 快速入门教程【三】渲染器 Three.js 快速入门教程【四】三维坐标系 Three.js 快速入门教程【五】动画渲染循环 Three.js 快速入门教程【六】相机控件 Or…

请添加图片描述

系列文章目录

Three.js 快速入门教程【一】开启你的 3D Web 开发之旅
Three.js 快速入门教程【二】透视投影相机
Three.js 快速入门教程【三】渲染器
Three.js 快速入门教程【四】三维坐标系
Three.js 快速入门教程【五】动画渲染循环
Three.js 快速入门教程【六】相机控件 OrbitControls
Three.js 快速入门教程【七】常见几何体类型


文章目录

  • 系列文章目录
  • 一、Three.js 是什么
  • 二、Three.js 应用场景
  • 三、环境搭建(两种方式任选)
  • 四、核心概念
    • 1. 场景(Scene)
    • 2. 相机(Camera)
    • 3.几何体(Geometry)
    • 4、材质(Material)
    • 5. 网格(Mesh)
    • 6. 渲染器(Renderer)
  • 五、牛刀小试
  • 总结


一、Three.js 是什么

    Three.js是一个基于WebGL封装的轻量级3D库,它将晦涩难懂的WebGL API封装成易读的JavaScript接口,让开发者无需深入了解 WebGL 的复杂细节,就能用简洁的代码创建出精美的 3D 场景。


二、Three.js 应用场景

1、数据可视化:将枯燥的报表变成旋转的3D图表
2、产品展示:让用户在网页中360°查看产品细节
3、3D网页游戏:开发轻量级的3D小游戏
4、建筑和室内设计:构建虚拟的建筑模型或室内设计方案,用户可以在浏览器中自由查看和导航这些 3D 场景,提前感受设计效果。
5、虚拟现实(VR)和增强现实(AR):与 WebVR 和 WebXR API 集成,用于创建沉浸式的 VR 和 AR 应用,用户可以在浏览器中体验身临其境的虚拟环境或与现实环境叠加的增强现实效果。


三、环境搭建(两种方式任选)

方式一:CDN直连(适合测试或新手)

!--<head>中引入 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r162/three.min.js"></script></script>

方式二:npm安装(适合项目开发)

npm install three
// 使用时导入
import * as THREE from 'three';

四、核心概念

在这里插入图片描述

在Three.js中创建一个最基本的3D场景需要六个核心要素:场景(Scene)、相机(Camera)几何体(Geometry)、材质(Material)、网格(Mesh),最后通过渲染器(WebGLRenderer)将场景和相机的信息渲染到网页中,并通过动画循环实现持续更新,形成动态3D效果。

1. 场景(Scene)

作用:3D 世界的容器,所有物体、光源、相机的载体,所有要在屏幕上显示的元素都需要添加到场景中。

// 创建一个场景
const scene = new THREE.Scene();
//通过scene.add(元素)添加元素

2. 相机(Camera)

作用:决定从哪个角度观察场景中的对象,就像现实世界中摄影师使用的相机一样

相机分为2种类型:透视相机、正交相机

透视相机:模拟人眼的视觉效果,远处的物体看起来比近处的物体小,具有透视效果。

正交相机:物体的大小不会随着距离的变化而改变,常用于 2D 游戏或 UI 设计。

3D开发场景中透视相机用的比较多,入门掌握透视相机即可。

透视相机(PerspectiveCamera)

// 创建一个透视相机
const camera = new THREE.PerspectiveCamera(75, // 视场角(FOV)window.innerWidth / window.innerHeight, // 宽高比0.1, // 近裁剪面3000 // 远裁剪面
);//设置相机位置
camera.position.set(100, 100, 100); 

3.几何体(Geometry)

作用:定义了 物体的形状,例如长方体、球体、圆柱体等。常用内置几何体:

BoxGeometry(长方体)

SphereGeometry(球体)

CylinderGeometry(圆柱体)


// 创建一个立方体几何体
const geometry = new THREE.BoxGeometry(1, 1, 1);
// 创建一个球体
const geometry2 = new THREE.SphereGeometry(10);
//创建一个圆柱体
const geometry = new THREE.CylinderGeometry(10,10,50);

4、材质(Material)

作用:定义物体的外观(颜色、纹理、透明度等)。常用材质:

MeshBasicMaterial(基础材质,不受光影响,始终显示为指定的颜色或纹理。)

MeshPhongMaterial(高光材质,受光影响,面有高光反射效果。)

// 创建一个基础材质
const material = new THREE.MeshBasicMaterial({ color: 0x000000 });

5. 网格(Mesh)

 几何体 + 材质 = 网格

网格是几何体和材质的组合,它将几何体的形状和材质的外观结合起来,形成一个完整的 3D 对象(物体)。创建网格后,需要将其添加到场景中才能显示。

// 创建立方体(宽,高,深)
const geometry = new THREE.BoxGeometry(1, 1, 1);// 基础材质(可配置颜色、贴图等)
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });// 创建网格对象
const mesh= new THREE.Mesh(geometry, material);
scene.add(mesh);

6. 渲染器(Renderer)

渲染器负责将场景和相机的信息转化为屏幕上的图像。它使用 WebGL 或 Canvas 等技术在网页上绘制 3D 图形。Three.js 提供了多种渲染器,最常用的是 WebGL 渲染器(THREE.WebGLRenderer)。

// 创建一个 WebGL 渲染器
const renderer = new THREE.WebGLRenderer();
// 设置渲染器的大小
renderer.setSize(window.innerWidth, window.innerHeight);
// 将渲染器的 DOM 元素添加到页面中
document.body.appendChild(renderer.domElement);

五、牛刀小试

通过上面的介绍我们了解了three.js核心概念和基本的使用方式,下面用代码来演示一个简单的3d案例——实现一个正方体3D效果

代码示例:

import * as THREE from "three";
//引入相机控制器
import { OrbitControls } from "three/addons/controls/OrbitControls.js";//创建场景
const scene = new THREE.Scene();
//设置黑色背景色
scene.background = new THREE.Color(0x000000);//创建一个正方体
const geometry = new THREE.BoxGeometry(10, 10, 10);
//创建一个基础材质,颜色指定红色
const material = new THREE.MeshBasicMaterial({ color: "red" });//创建一个网格对象
const mesh = new THREE.Mesh(geometry, material);
//设置网格对象位置
mesh.position.set(0, 0, 0);
//添加到场景中
scene.add(mesh);//创建相机
const camera = new THREE.PerspectiveCamera(75,window.innerWidth / window.innerHeight,0.1,1000
);
//设置相机位置
camera.position.set(0, 10, 30);
//相机默认看向网格对象
camera.lookAt(mesh.position);//创建渲染器
const renderer = new THREE.WebGLRenderer();
//设置渲染器尺寸为页面宽高
renderer.setSize(document.documentElement.clientWidth,document.documentElement.clientHeight
);
//将渲染器的 DOM 元素添加到页面中
document.body.appendChild(renderer.domElement);// 新建一个相机控件
const controls = new OrbitControls(camera, renderer.domElement);
// 启用阻尼(惯性效果)
controls.enableDamping = true;
controls.dampingFactor = 0.05;
// 动画循环
function animate() {// 定时刷新requestAnimationFrame(animate);// 更新控制器,必须调用以应用阻尼效果controls.update();//重新渲染renderer.render(scene, camera);
}
// 执行动画
animate();

运行效果:
请添加图片描述

说明:上述示例中我们引入了OrbitControls控制器 ,OrbitControls 是一个用于实现交互式场景相机控制的工具库。它允许用户通过鼠标(或触摸屏)直接操作 3D 场景的观察视角,如同在轨道上环绕目标物体一般,常用于提升 Web 3D 应用的交互体验。代码结尾通过requestAnimationFrame递归形式循环调用animate函数,达到页面持续刷新效果。在 Three.js 开发中,几乎所有的动态场景(如旋转模型、交互操作、自动动画)都需要通过 requestAnimationFrame 驱动持续渲染。

总结

    通过本篇教程,我们认识了什么是Three.js和Three.js应用场景,共同探索了Three.js的核心概念与基础用法。从构建场景(Scene)、相机(Camera)到渲染器(Renderer)的"铁三角"架构,再到几何体(Geometry)、材质(Material)与网格(Mesh)的有机结合,至此你已经了解并掌握了创建最基础三维场景的核心工具链。

更多three.js入门知识点请关注该系列教程后续的更新。

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

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

相关文章

Navicat Premium17 连接Oracle出现 “未加载 Oracle库

报错信息如下 解决方案&#xff1a; 安装 Navicat for Oracle 12 for Mac 若已经打开任何来源&#xff0c;但运行还是遇到已损坏按照如下操作即可解决&#xff01; 终端中输入 xattr -cr cr 后面输入一个空格&#xff01;不要回车&#xff01;如下图 把 Navicat for Oracle…

Transformer解析——(一)概述

本系列已完结&#xff0c;全部文章地址为&#xff1a; Transformer解析——&#xff08;一&#xff09;概述-CSDN博客 Transformer解析——&#xff08;二&#xff09;Attention注意力机制-CSDN博客 Transformer解析——&#xff08;三&#xff09;Encoder-CSDN博客 Transforme…

Canvas进阶-2、可视化应用

前言 Canvas 可以用来创建各种 数据可视化 图表和图形&#xff0c;通过绘制不同的形状、线条和颜色来展示数据的特征和趋势。 数据可视化的基本原理是将数据转化为可视化的图形元素&#xff0c;以便人们更容易理解和分析数据。这涉及到以下几个方面&#xff1a; 数据映射&…

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统,不需要降级 v1.0.91 (2025)

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统&#xff0c;不需要降级 v1.0.91 &#xff08;2025&#xff09; 本文内容需要你有一定的 Linux 操作基础&#xff0c;最好是程序员那种&#xff0c;英文水平足够用才行。一般人不需要使用这么复杂的路由器操作系统&#xff0c…

python查错误TypeError: bad operand type for unary -: ‘str‘

TypeError: bad operand type for unary -: str​​​ 这个错误表明尝试对一个字符串类型的数据使用一元减号运算符&#xff08;​​-​​&#xff09;&#xff0c;而在 Python 中&#xff0c;一元减号运算符只能用于数值类型&#xff08;如整数、浮点数等&#xff09;&#xf…

搭建Kubernetes (K8s) 集群----Centos系统

前期准备 准备3台Linux虚拟机&#xff08;CentOS系统&#xff09;&#xff0c;参考 https://carry.blog.csdn.net/article/details/144578009https://carry.blog.csdn.net/article/details/144578009搭建Docker环境&#xff0c;参考 https://carry.blog.csdn.net/article/de…

wps中的js开发

严格区分大小写 /*** learn_js Macro*/ function test() {Range(D7).Value2Selection.Value2; // Selection.formula "100" }function Workbook_SheetSelectionChange(Sh, Target) {if(Sh.Name Sheet1) {test();}}function test2() {// 把I4单元格及其周边有数的单…

第3章 3.2 配置系统 .NET Core配置系统

3.2.1 配置系统的基本使用 .NET Core中的配置系统支持非常丰富的配置源&#xff0c;包括文件&#xff08;JSON、XML、INI等&#xff09;、注册表、环境变量、命令行、Azure Key Vault等&#xff0c;配置系统还支持自定义配置源。 用配置系统开发包Microsoft.Extensions.Confi…

第六届计算机信息和大数据应用国际学术会议(CIBDA 2025)

重要信息 大会官网&#xff1a;www.ic-cibda.org&#xff08;了解会议&#xff0c;投稿等&#xff09; 大会时间&#xff1a;2025年3月14-16日 大会地点&#xff1a;中国-武汉 简介 第六届计算机信息和大数据应用&#xff08;CIBDA 2025&#xff09;将于2025年3月14-16日在中国…

Mac M3/M4 本地部署Deepseek并集成vscode

Mac 部署 使用傻瓜集成平台ollama&#xff0c;ollama平台依赖于docker&#xff0c;Mac的M3/M4 因doesn’t have VT-X/AMD-v enabled 所以VB,VM无法使用&#xff0c;导致docker无法启动&#xff0c;需要使用docker的替代品podman&#xff0c; 它完全兼容docker brew install p…

最优化方法-牛顿法

牛顿法 泰勒级数 泰勒级数展开 $$ \begin{aligned} f(x)&\lim\limits_{n\rightarrow \infin}\sum\limits_{i1}n\frac{1}{n!}f{(n)}(x_0)(x-x_0)^n\ &f(x_0)f’(x_0)(x-x_0)\frac{f’(x_0)}{2!}(x-x_0)2\cdots\frac{1}{n!}fn(x_0)(x-x_0)^n\ &\quad~ O\left[(x-x_…

【系统架构】分布式事务模型详解

1. 分布式基础理论 1.1 CAP理论 CAP 理论可以表述为&#xff0c;一个分布式系统最多只能同时满足一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和分区容错性&#xff08;Partition Tolerance&#xff09;这三项中的两项。 一致性是…

「正版软件」PDF Reader - 专业 PDF 编辑阅读工具软件

PDF Reader 轻松查看、编辑、批注、转换、数字签名和管理 PDF 文件&#xff0c;以提高工作效率并充分利用 PDF 文档。 像专业人士一样编辑 PDF 编辑 PDF 文本 轻松添加、删除或修改 PDF 文档中的原始文本以更正错误。自定义文本属性&#xff0c;如颜色、字体大小、样式和粗细。…

在 Mac ARM 架构 (Apple Silicon,例如 M1, M2, M3 芯片) 上使用官方安装包安装 MySQL

在 Mac ARM 架构 (Apple Silicon&#xff0c;例如 M1, M2, M3 芯片) 上使用官方安装包安装 MySQL&#xff0c;步骤与在 Intel Mac 上类似&#xff0c;但需要确保下载的是 ARM 架构兼容的版本。以下是详细的安装步骤&#xff1a; 步骤 1: 下载 MySQL Community Server DMG 安装…

以ChatGPT为例解析大模型背后的技术

目录 1、大模型分类 2、为什么自然语言处理可计算&#xff1f; 2.1、One-hot分类编码&#xff08;传统词表示方法&#xff09; 2.2、词向量 3、Transformer架构 3.1、何为注意力机制&#xff1f; 3.2、注意力机制在 Transformer 模型中有何意义&#xff1f; 3.3、位置编…

【ARM入门指南】一文搞懂什么是ARM

在单片机与嵌入式系统的浩瀚宇宙中&#xff0c;ARM架构犹如一颗耀眼的星辰&#xff0c;持续引领着技术创新的潮流。对于刚刚踏入这一领域的初学者而言&#xff0c;深入了解ARM是迈入嵌入式开发大门的关键一步。ARM&#xff0c;这个名字背后&#xff0c;不仅代表着一家在半导体设…

Http升级为Https - 开发/测试服环境

1.应用场景 主要用于开发/测试服环境将http升级为https, 防止前端web(浏览器)出现Mixed Content报错; 2.学习/操作 1.文档阅读 deepseek 问答; 2.整理输出 报错信息: Mixed Content: The page at <URL> was loaded over HTTPS, but requested an insecure XMLHttpRequ…

使用 AIStor 和 OpenSearch 增强搜索功能

在这篇文章中&#xff0c;我们将探讨搜索&#xff0c;特别是 OpenSearch 如何帮助我们识别模式或查看不断增长的数据中的趋势。例如&#xff0c;如果您正在查看运营数据&#xff0c;如果您的服务似乎是随机的&#xff0c;那么您需要尽可能回溯以识别模式并找出原因。这不仅适用…

Python——生成AIGC图像

文章目录 一、背景介绍 二、效果图展示 三、完整代码 四、分步解释 五、实用建议 1&#xff09;提示词技巧 2&#xff09;性能优化 3&#xff09;常见问题处理 4&#xff09;扩展功能建议 六、注意事项 1. 硬件要求 2. 法律合规 3. 模型安全 一、背景介绍 AIGC&a…

多任务(20250210)

1. 进程的概念 (1) 程序:是一段存放在外存中代码的集合(静态的) (2) 进程:是一个程序动态执行的过程,包括创建、调度、消亡(动态的) 2. 如何实现多任务 Linux中&#xff0c;通过进程、线性实现多任务 3. 进程 正在执行的程序&#xff08;动态&#xff09;&#xff0c;需…