赞
踩
目录
5.2.1 在你正在使用的项目目录下创建一个 package.json 文件:
5.2.2 创建一个 index.html 、main.js及style.css 文件
Three.js库是建立在WebGL API基础之上的高级API,其功能介于底层图形API和通用3D引擎(例如Unity 3D等)之间。它具有通常在3D引擎中才能见到的“材质”概念,不但能够直接实现Phong-Blinn实时光照、实时阴影、法向贴图、环境贴图等传统技术,还能支持时下流行的“基于物理渲染”(PBR)技术。同时,它还提供了许多现成的着色器程序,可以实现3D引擎中常见的高级效果,包括但不限于全屏环境光遮挡(SSAO)、景深(DOF)等。
3DThree.js是基于原生WebGL封装运行的三维引擎,在所有WebGL引擎中,Three.js是国内文资料最多、使用最广泛的三维引擎。
官网地址:
Three.js – JavaScript 3D Libraryhttps://threejs.org/
github链接查看所有目录:GitHub - mrdoob/three.js: JavaScript 3D Library.
three.js-master
└───build——src目录下各个代码模块打包后的结果
│───three.js——开发的时候.html文件中要引入的threejs引擎库,和引入jquery一样,可以辅助浏览器调试
│───three.min.js——three.js压缩后的结构文件体积更小,可以部署项目的时候在.html中引入。
│
└───docs——Three.js API文档文件
│───index.html——打开该文件可以实现离线查看threejs API文档
│
└───editor——Three.js的可视化编辑器,可以编辑3D场景
│───index.html——打开应用程序
│
└───docs——Three.js API文档文件
│───index.html——打开该文件可以实现离线查看threejs API文档
│
└───examples——里面有大量的threejs案例,平时可以通过代码编辑全局查找某个API、方法或属性来定位到一个案例
│
└───src——Three.js引擎的各个模块,可以通过阅读源码深度理解threejs引擎
│───index.html——打开该文件可以实现离线查看threejs API文档
│
└───utils——一些辅助工具
│───\utils\exporters\blender——blender导出threejs文件的插件
github链接:GitHub - mrdoob/three.js: JavaScript 3D Library.
Three.js官网:Three.js – JavaScript 3D Library
github链接查看所有版本:Releases · mrdoob/three.js · GitHub
github下载:GitHub - mrdoob/three.js: JavaScript 3D Library.
下面表格列举了一些Three.js相关的开源库。
库 | 功能 |
---|---|
Physijs是一款物理引擎,可以协助基于原生WebGL或使用three.js创建模拟物理现象,比如重力下落、物体碰撞等物理现 | |
JavaScript性能监控器,同样也可以测试webgl的渲染性能 | |
轻量级的icon形用户界面框架,可以用来控制Javascript的变量,比如WebGL中一个物体的尺寸、颜色 | |
借助tween.js快速创建补间动画,可以非常方便的控制机械、游戏角色运动 | |
可以作为three.js的插件,完成几何模型的布尔,各类三维建模软件基本都有布尔的概念 |
Threejs官网同时提供了英文文档和中文文档,不过有些时候打开会比较慢。因此,在开发阶段建议使用本地建站,进行案例实现或文档查询等工作。
首先在官网下载threejs-dev文件:
https://github.com/mrdoob/three.js/https://github.com/mrdoob/three.js/
下载完毕后导入VScode中对其依赖进行安装:
- yarn install
- npm install
启动后通过start命令运行:
- yarn start
- npm start
运行结果如图:
在学习threejs的过程中,往往需要频繁的代码测试,查看threejs代码的渲染效果。这时候你肯定希望代码修改之后,threejs渲染效果立即热更新。在开发过程中,建议使用模块化开发模式,因此需要通过搭建本地静态服务器或使用Web打包工具对项目进行热加载。下面以parcel打包工具为例,对项目进行基础配置,也可以使用webpack、live-server等工具。
Parcel 是一个零配置的网络构建工具。它将开箱即用的出色开发体验与可扩展的架构相结合,可以将您的项目从刚刚开始转变为大规模生产应用程序。
Yarn:
yarn global add parcel-bundler
npm:
npm install -g parcel-bundler
项目结构:
yarn init -y
or
npm init -y
html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>Document</title>
- <link rel="stylesheet" href="./assets/css/style.css" />
- </head>
- <body>
- <script src="./main/main.js" type="module"></script>
- </body>
- </html>
- {
- "name": "01-three_basic",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "dev": "parcel src/index.html",
- "build": "parcel build src/index.html"
- },
- "author": "",
- "license": "ISC",
- "devDependencies": {
- "parcel": "^2.4.1"
- },
- }
在项目中打开集成终端,使用命令
- npm install three --save
- or
- yarn add three
- import * as THREE from "three";
-
- // console.log(THREE);
-
- // 目标:了解three.js最基本的内容
-
- // 1、创建场景
- const scene = new THREE.Scene();
-
- // 2、创建相机
- const camera = new THREE.PerspectiveCamera(
- 75,
- window.innerWidth / window.innerHeight,//屏幕宽高比
- 0.1,
- 1000
- );
-
- // 设置相机位置
- camera.position.set(0, 0, 10);//x,y,z轴坐标
- scene.add(camera);
-
- // 添加物体
- // 创建几何体
- const cubeGeometry = new THREE.BoxGeometry(1, 1, 1);
- const cubeMaterial = new THREE.MeshBasicMaterial({ color: 0xffff00 });
- // 根据几何体和材质创建物体
- const cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
- // 将几何体添加到场景中
- scene.add(cube);
-
- // 初始化渲染器
- const renderer = new THREE.WebGLRenderer();
- // 设置渲染的尺寸大小
- renderer.setSize(window.innerWidth, window.innerHeight);
- // console.log(renderer);
-
- // 将webgl渲染的canvas内容添加到body
- document.body.appendChild(renderer.domElement);
-
- // 使用渲染器,通过相机将场景渲染进来
- renderer.render(scene, camera);
实现效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。