初识 ThreeJS (ThreeJS 相关环境搭建)

news2024/11/15 12:20:49

初识 ThreeJS (初识 ThreeJS (ThreeJS 相关环境搭建)

  • 参考
  • 描述
  • ThreeJS
  • 在本地搭建 NodeJS 的官方网站
      • 获取
      • 使用
          • 安装依赖项
          • 运行
            • 官方文档
            • 案例
            • 场景编辑器
  • 搭建 ThreeJS 运行环境
      • webpack
          • 项目结构
            • package.json
            • webpack.config.js
      • 深入
      • 获取
      • 检测

参考

项目描述
ThreeJS官方文档
掘金筱竹
搜索引擎Bing
哔哩哔哩老陈打码

描述

项目描述
webpack5.75.0
webpack-cli5.0.1
npm8.19.3
ThreeJS148
操作系统Windows 10 专业版
Edge109.0.1518.61 (正式版本) (64 位)

ThreeJS

ThreeJS 是基于WebGL 封装的一个易于使用且轻量级的 3D 库,ThreeJS 对 WebGL 提供的接口进行了非常好的封装,简化了很多细节,大大降低了学习成本,同时也极大地提高了性能。用户不需要详细地学习 WebGL,就能轻松创作出三维图形,是前端开发者研发 3D WEB 应用的主要工具,前些年爆火的微信小游戏跳一跳就是基于Three.js研发的。

在本地搭建 NodeJS 的官方网站

ThreeJS 官方网站 提供了 ThreeJS 官方文档,3D 场景编辑器以及许多使用 ThreeJS 完成的 例子,如果你希望可以快速的使用 ThreeJS 官网提供的这些功能(你还可以获取例子中的源码用于学习),可以将 ThreeJS 网站的项目文件下载到本地并对其进行搭建。

获取

首先,请先前往 ThreeJS 官方网站 ,并在进入目标网页后,点击侧栏的 download 按钮以开始网站项目文件的下载。

ThreeJS 官方网站

下载后,你将得到一个压缩包。请解压它,解压后打开该文件,你将得到如下文件(夹):

包含的文件

其中:

文件(夹)描述
docs包含与官方文档页面相关的文件。
editor包含于 3D 场景编辑器相关的文件。
examples包含与官方提供的案例相关的文件。
node_modules包含该项目所需要使用到的第三方模块。
package.json包含项目所使用到的第三方模块及当前项目的信息。
icon.pngThreeJS 的官方图标。

使用

安装依赖项

首先,请你进入终端并通过 cd 命令切换工作目录至该项目的根目录中。
在完成上述操作后,使用如下命令安装该项目可能缺少的依赖项(第三方模块或插件),这些依赖项被记录在项目中的 package.json 中。

npm install

注:

若希望计算机成功执行该命令,请保证在使用该命令前你以安装了 NodeJS 包管理器 npm。如果你对 npm 不是很了解,欢迎移步至我的另一篇博客 NodeJS 之 npm(NodeJS Package Manager)包管理工具

运行

使用如下命令开始运行该项目:

npm run start

运行该命令后,终端将输出如下信息:

输出信息

终端中提供了多个链接,每个链接指向的内容都是相同的。这里我们选择访问第一个链接 https://localhost:8080

页面内容

官方文档

点击 docs 你将进入官方文档页面,在这里你可以更深刻的认识 ThreeJS。
点击

也许你会害怕官方文档,因为不是中文。但没关系,我们可以通过页面上的按钮来切换页面使用的语言。幸运的是,其中包含中文。

切换语言

案例

点击 examples 你将进入官方文档提供案例演示的页面。

演示

场景编辑器

点击 editor 你将进入官方提供的场景编辑器。

场景编辑器

搭建 ThreeJS 运行环境

webpack

ThreeJS 自 102 版本后均无法通过为 script 标签的 src 来进行引入,如果你使用的不是 102 版本之前的版本,请使用如下方法对项目进行配置。

项目结构

首先请将你的项目结构设置为:

目录结构
并向这些文件(部分)中填充如下内容。

package.json

在向 package.json 文件中填充以下内容后,在终端中使用 npm install 命令安装所需要的所有插件及第三方模块。

{
  "name": "3d",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "webpack serve",
    "build": "webpack --mode production"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.20.12",
    "babel-loader": "^9.1.2",
    "clean-webpack-plugin": "^4.0.0",
    "css-loader": "^6.7.3",
    "file-loader": "^6.2.0",
    "html-webpack-plugin": "^5.5.0",
    "style-loader": "^3.3.1",
    "url-loader": "^4.1.1",
    "webpack": "^5.75.0",
    "webpack-cli": "^5.0.1",
    "webpack-dev-server": "^4.11.1"
  }
}
webpack.config.js
const path = require('path');

const HtmlPlugin = require('html-webpack-plugin');
const htmlPlugin = new HtmlPlugin({
    template: path.join(__dirname, './src/index.html'),
    output: path.join(__dirname, './index.html')
})

const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const cleanPlugin = new CleanWebpackPlugin();


module.exports = {
    mode: 'development',
    entry: path.join(__dirname, './src/index.js'),
    output: {
        path: path.join(__dirname, './dist'),
        filename: 'main.js'
    },
    module: {
        rules: [
            {test: /\.css$/, use: ['style-loader', 'css-loader']},
            {test: /\.png|jpg|gif$/, use: 'url-loader?limit=2333&outPath=images'},
            {test: /\.js$/, use: 'babel-loader', exclude: /node-modules/}
        ]
    },
    plugins: [htmlPlugin, cleanPlugin],
    devServer: {
        open: true,
        port: 9090,
        host: '127.0.0.1'
    }
}

深入

如果你希望对上面的配置有更深入的了解,欢迎移步至我的另一篇博客 webpack 的基本使用及配置

获取

ThreeJS 可以通过 NodeJS 的包管理工具 npm 来进行下载及安装。请使用如下命令来进行 ThreeJS 进行安装:

npm install three

检测

请在 index.js 文件中添加以下内容以打印所安装的 three 模块的版本号。

// 导入three 模块
import * as THREE from 'three';

// 打印版本信息
console.log(THREE.REVISION);

在添加完成后,请在终端中使用 cd 命令切换工作目录至项目的根目录下并使用如下命令以运行该项目:

npm run dev

如果你正确进行了 webpack 的配置,那么在执行上面的命令后稍等一会,浏览器将会自动打开一个页面。当然你也可以通过终端的提示,通过访问链接 http://127.0.0.1:9090/ 来打开目标页面。

输出信息
在打开的页面下,请打开开发者工具并切换到控制台分栏,如果你看到与以下显示类似的输出信息,则表明你的 ThreeJS 运行环境已成功搭建:

标志

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

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

相关文章

袋式除尘器—分类和命名

按除尘器的结构形式分类(1)按滤袋开头分类按滤袋形状分类,可分为圆袋式除尘器和扁袋式除尘器两类。①圆袋式除尘器。滤袋形状为圆筒形,直径一般为120~300mm,最大不超过600mm;高度为2~3m,也有10m…

redis 数据库简介

一 概述 redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表))。相关…

2023年哪款手机浏览器比较好用,最后一个吹爆它

很多人不满足于手机自带的浏览器,为了更好地满足看视频、浏览网页、看小说等需求,不少人下载第三方手机浏览器来使用。我们都知道,手机浏览器是手机不可缺少的APP之一。那么,2023年哪款手机浏览器比较好用?下面分享今年…

Java File类及案例

File概述和构造方法 File对象就表示一个路径,可以是文件路径、也可以是文件夹的路径这个路径可以是存在的,也允许是不存在的 方法名称说明public File (String pathname)把字符串表示的路径变成File对象public File (Srting parent, String child)把父…

【My Electronic Notes系列——三极管】

目录 序言: 🏮🏮新年的钟声响,新年的脚步迈,祝新年的钟声,敲响你心中快乐的音符,幸运与平安,如春天的脚步紧紧相随,春节快乐!春华秋实,我永远与你…

C语言入门(八)——数组

数组的基本概念 数组应用实例:统计随机数 数组应用实例:直方图 字符串 多维数组 数组的基本概念 数组(Array)也是一种复合数据类型,它由一系列相同类型的元素(Element)组成。例如定义一个由4个int型元素组成的数组count: int count[4]; 和结构体成员类似&…

安卓S开机动画流程

安卓S开机动画流程 开机动画是在SurfaceFlinger实例通过调用startBootAnim()启动的,BootAnim是如何启动和结束的,总体框架图如下: 1.SurfaceFlinger进程启动 # /frameworks/native/services/surfaceflinger/surfaceflinger.rc service surf…

linux inode详解

1.inode 和 block 概述. 操作系统的文件数据除了实际内容之外,通常含有非常多的属性,例如Linux操作系统的文件权限与文件属性。文件系统通常会将这两部分内容分别存放在inode和block中。 文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sec…

行为型模式

1.模版方法 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤 结构 抽象类:负责给出一个轮廓与骨架,由一个模版方法和若干个基本方法构成 模版方法:按某种顺序调用其包含的基本方法基本方法&#xf…

计算机视觉OpenCv学习系列:第八部分、图像操作-4

第八部分、图像操作-4第一节、图像卷积操作1.图像卷积定义2.卷积函数3.代码练习与测试第二节、高斯模糊1.高斯模糊2.函数解释3.代码练习与测试第三节、像素重映射1.像素重映射定义2.重映射函数3.代码练习与测试学习参考第一节、图像卷积操作 1.图像卷积定义 卷积的基本原理&am…

java spring IOC xml 方式 内部Bean注入

上次说了外部 Bean注入 这次来演示一个内部的 Bean注入 我们先创建一个spring 项目 导入最基本的 spring 包 在项目src目录下创建一个包 cascade cascade包下创建两个类 Dept 部门类 参考代码如下 package cascade;//部门类 public class Dept {private String dname;publi…

windows ssdt

前言 我们 ring 3 跳转 ring0 另一种方式使用sysenter命令。 sysenter 相比起jmp,int xx方式相比速度更快,因为sysenter指令大量的使用了MSR寄存器 存储跳转地址等。 MSR寄存器相关读/写命令 //读取msr寄存器 rdmsr xxxx //写入msr寄存器 wrmsr xxxx其中xxx是ms…

轻量实时操作系统学习(一)

306xH系列产品基于高性能RISC-V CPU核,工作频率最高到200MHz,集成了FPU浮点处理单元,支持浮点乘法,支持浮点乘法,除法和开方等复杂数学运算指令,支持16KB的SRAM和最高160KB的flash存储单元。 该MCU集成最多…

【My Electronic Notes系列——二极管】

目录 序言: 🏮🏮新年的钟声响,新年的脚步迈,祝新年的钟声,敲响你心中快乐的音符,幸运与平安,如春天的脚步紧紧相随,春节快乐!春华秋实,我永远与…

【目标检测论文解读复现NO.25】基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0c…

【Unity Shader 赛博小人01】UV准备 SD制作特效贴图

写在前面 Unity 卡通渲染 程序化天空盒提到了——“再整个uv1将云片平铺,将uv1对应到世界坐标x轴旋转角、y轴旋转角,消散信息放到顶点色。”,就是这句话!我又遇到了几个问题(本菜鸡不知道的东西太多太多了&#xff09…

Spring的使用

开篇点题:为什么要用到Spring?参考这篇文章:http://t.csdn.cn/oR5lM一、创建一个Maven项目1.创建一个Maven项目2.添加Spring依赖/框架支持在pom.xml中添加框架的支持,xml配置如下:(下载失败参考&#xff1a…

设计模式_自定义Spring框架(IOC)

设计模式_自定义Spring框架(IOC) 笔记整理自 黑马程序员Java设计模式详解, 23种Java设计模式(图解框架源码分析实战) Spring使用回顾 自定义spring 框架前,先回顾一下 Spring 框架的使用,从而分…

acwing基础课——快速幂

由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板4——数学知识 - AcWing 基本思想: 求一个数的n次时,我们的时间复杂度为O(n),当n特别大时,效率会很低可能超时,此时我们就需要运用到快速幂,将我们的时间…

基于PHP和MySQL的新闻发布系统——【功能优化】

前言 2023年第一篇文章,祝大家在新的一年里“卯”足干劲,在技术上 “兔”飞猛进! 上一篇文章 基于PHP和MySQL的新闻发布系统 给大家介绍了制作一个新闻发布系统的主要功能的实现,在文章的末尾还提出了一些需要完善的方面。那么…