# 教练!我想学 three.js 🔥
ok,想要了解 threejs 的 3d 效果,先了解这几个概念
> 1. 场景(Scene):是物体、光源等元素的容器,可以配合 chrome 插件使用,抛出 window.scene 即可实时调整 obj 的信息和材质信息。
> 2. 相机(Camera):场景中的相机,代替人眼去观察,场景中只能添加一个,一般常用的是透视相机(PerspectiveCamera)
> 3. 物体对象(Mesh):包括二维物体(点、线、面)、三维物体,模型等等
> 4. 光源(Light):场景中的光照,如果不添加光照场景将会是一片漆黑,包括全局光、平行光、点光源等
> 5. 渲染器(Renderer):场景的渲染方式,如 webGL\canvas2D\Css3D。
> 6. 控制器(Control): 可通过键盘、鼠标控制相机的移动
## 场景(Scene)
场景(Scene):是物体、光源等元素的容器,可以配合 chrome 插件使用,抛出 window.scene 即可实时调整 obj 的信息和材质信息。
定义场景
```javascript
//定义场景
let scene = new THREE.Scene()
```
## 相机(Camera)
场景中的相机,代替人眼去观察,场景中只能添加一个,一般常用的是透视相机(PerspectiveCamera)
定义摄像机
```javascript
//定义摄像机
let camera = new THREE.PerspectiveCamera(
45,
window.innerWidth / window.innerHeight,
0.1,
1000,
)
//设置相机位置(x,y,z)
camera.position.set(-50, 50, 50)
// 通过lookAt将摄像机指向场景中心,(默认指向0,0,0)
camera.lookAt(scene.position)
```
## 渲染器(Renderer)
定义渲染器
```javascript
//定义渲染器
let renderer = new THREE.WebGLRenderer()
//设置场景的背景颜色
renderer.setClearColor(new THREE.Color(0x000000))
//设置场景大小
renderer.setSize(window.innerWidth, window.innerHeight)
```
将渲染结果添加到 dom 元素中
```javascript
// 将渲染结果添加到dom元素中
document.getElementById('webgl-output').appendChild(renderer.domElement)
//使用指定的摄像机来渲染场景
renderer.render(scene, camera)
```
## 物体对象(Mesh)
物体对象(Mesh):包括二维物体(点、线、面)、三维物体,模型等等
创建平面
```javascript
//定义平面的大小
let planeGeometry = new THREE.PlaneGeometry(40, 40)
// 通过创建材质对象来设置平面的外观,这里使用的是基本材质
let planeMaterial = new THREE.MeshBasicMaterial({
color: 0xaaaaaa,
})
//将大小和外观组合进Mesh对象,赋值给平面对象
let plane = new THREE.Mesh(planeGeometry, planeMaterial)
//平面绕x轴旋转九十度
plane.rotation.x = -0.5 * Math.PI
// 定义其在场景中的位置
plane.position.set(0, 0, 0)
//添加平面到场景中
scene.add(plane)
```
创建方块
```javascript
// 定义方块大小
let cubeGeometry = new THREE.BoxGeometry(4, 4, 4)
//定义方块外观
let cubeMaterial = new THREE.MeshBasicMaterial({
color: 0xff0000,
wireframe: true,
})
let cube = new THREE.Mesh(cubeGeometry, cubeMaterial)
//设置方块位置
cube.position.set(5, 5, 5)
// 添加到场景中
scene.add(cube)
```
创建球体
```javascript
//定义球体大小
let sphereGeometry = new THREE.SphereGeometry(4, 20, 20)
//定义球体外观
let sphereMaterial = new THREE.MeshBasicMaterial({
color: 0x7777ff,
wireframe: true,
})
let sphere = new THREE.Mesh(sphereGeometry, sphereMaterial)
sphere.position.set(-15, 5, 5)
scene.add(sphere)
```
## 动画
...持续更新中
## 光源(Light)
...持续更新中
## 控制器(Control)
...持续更新中
没有合适的资源?快使用搜索试试~ 我知道了~
ThreeJs 三维JavaScript代码实例.zip
共83个文件
ts:26个
vue:16个
json:7个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 28 浏览量
2023-08-26
09:57:57
上传
评论
收藏 225KB ZIP 举报
温馨提示
基于JavaScript的项目实现 可直接运行
资源推荐
资源详情
资源评论
收起资源包目录
ThreeJs 三维JavaScript代码实例.zip (83个子文件)
components.d.ts 3KB
vercel.json 95B
.vscode
settings.json 989B
extensions.json 111B
.eslintrc.js 3KB
tsconfig.node.json 158B
localhost.pem 2KB
auto-imports.d.ts 3KB
.env.production 66B
plugins
vite-plugin-filepath-injector.ts 387B
.github
workflows
push-gitee.yml 2KB
.gitattributes 611B
src
main.ts 737B
App.vue 280B
store
index.ts 481B
assets
logo.png 29KB
qr.jpg 23KB
styles
style.css 59B
index.scss 496B
transition.scss 655B
variable.scss 799B
reset.scss 7KB
element.scss 842B
utils
mostBlockColor.ts 828B
averageColor.ts 2KB
formatBytes.ts 346B
inputFile.ts 1KB
request.ts 3KB
components
ContextMenu.vue 595B
SvgIcon
index.vue 2KB
SuperForm
type.ts 2KB
index.vue 11KB
index.d.ts 129B
EasyForm
index.vue 12KB
FilepathBox.vue 2KB
env.d.ts 301B
router
router-container.tsx 960B
modules
home.ts 216B
three.ts 1KB
site-map.ts 232B
image-processing.ts 1KB
audio-and-video.ts 2KB
tensorflow.ts 774B
steganography.ts 742B
other.ts 1KB
utils.ts 2KB
index.ts 1KB
permission.ts 1KB
page
error
404.vue 621B
home
index.vue 1KB
three
dat.gui.vue 7KB
scene.vue 1KB
utils
createGeometry.ts 696B
animate.vue 5KB
light.vue 4KB
controls.vue 7KB
planet.vue 9KB
README.md 3KB
mesh.vue 3KB
layout
Menu.tsx 3KB
layout.vue 1KB
LICENSE 1KB
.husky
commit-msg 80B
pre-commit 116B
commitlint.config.js 37B
.eslintrc-auto-import.json 1KB
stylelint.config.js 1KB
.env.development 66B
tailwind.config.cjs 175B
.cz-config.js 2KB
package.json 4KB
localhost-key.pem 2KB
public
favicon.ico 9KB
pnpm-lock.yaml 274KB
prettier.config.js 1KB
vite.config.ts 4KB
index.html 337B
.gitignore 374B
RECORD.md 182B
tsconfig.json 817B
readme.drawio.png 3KB
.npmrc 65B
postcss.config.js 82B
共 83 条
- 1
资源评论
sjx_alo
- 粉丝: 1w+
- 资源: 1213
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 广东省2021年普通高考音乐学类总分分数段统计表(含本、专科层次加分)
- 广东省2021年普通高考舞蹈类总分分数段统计表(含本、专科层次加分)
- Python教程-快速入门基础必看课程10-函数基础
- tensorflow-2.9.2-cp39-cp39-win-amd64.whl
- tensorflow-2.9.2-cp37-cp37m-win-amd64.whl
- 广东省2021年普通高考体育类总分分数段统计表(含本、专科层次加分)
- VBA超市商品定价-按指定毛利率计算最佳价格.xlsm
- tensorflow-gpu-2.9.2-cp39-cp39-win-amd64.whl
- Python教程-快速入门基础必看课程09-文件处理
- tomcat安装及配置教程.md
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功