美文网首页
#1 初步使用ThreeJS

#1 初步使用ThreeJS

作者: JamesSawyer | 来源:发表于2018-08-01 11:55 被阅读12次

Threejs 官网 get started

/**
 * 三要素
 * 场景 scene
 * 相机 camra
 * 渲染器 renderer
 */

const scene = new THREE.Scene();
// Perspective 透视
/**
 * 透视相机
 * @param 75 表示FOV(field of view) 视角角度,单位 degrees
 * @param window.innerWidth / window.innerHeight 表示aspect ratio 宽高比/横纵比
 * @param 0.1 表示近平面距离 表示距离相机小于0.1的物件将不会被放进场景中 这些值对性能优化时会有用
 * @param 1000 表示远平面距离 表示距离相机大于1000的物件将不会被放进场景中 
 */
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

/**
 * 渲染器
 * 除了WebGLRenderer外 还有
 * CSS2DRenderer && CSS3DRenderer && SVGRenderer && CanvasRenderer
 */
const renderer = new THREE.WebGLRenderer();
/**
 * 设置渲染器渲染的大小
 * 还可以使用 renderer.setSize(window.innerWidth / 2, window.innerHeight / 2, false) 表示降低分辨率来适配画布
 */
renderer.setSize(window.innerWidth, window.innerHeight);

// 将渲染器元素添加到HTML文档中
// renderer.domElement 这是一个canvas元素
document.body.appendChild(renderer.domElement);


// BoxGeometry 是包含了所有顶点数据和面的立方体
const geometry = new THREE.BoxGeometry(1, 1, 1);
// 添加材质和颜色 (此处 0x00ff00 是绿色)
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
// Mesh 可以将材质添加到geometry(几何体)上
const cube = new THREE.Mesh(geometry, material);
scene.add(cube); // 默认会添加到场景 (0,0,0) 位置,导致相机和物件重合
camera.position.z = 5;


// 上面代码只是将场景,相机,物件进行了声明,实际上并没有开始渲染任何东西
function animate() {
  // requestAnimationFrame 当用户导航到其它浏览器tab时,刷新操作会暂停 避免浪费进程资源和电池
  // 60FPS
  requestAnimationFrame(animate);

  // 添加旋转
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;

  renderer.render(scene, camera);
}
animate();

其它:

# index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <link rel="stylesheet" href="index.css">
  <title>Document</title>
</head>
<body>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/95/three.min.js"></script>
  <script src="index.js"></script>
</body>
</html>

# index.css
body {
  margin: 0;
}

canvas {
  width: 100%;
  height: 100%;
}

相关文章

  • #1 初步使用ThreeJS

    Threejs 官网 get started 其它:

  • threejs绘制中文方案

    1. 使用threejs创建文字几何体 使用threejs自带的helvetiker_bold.typeface字...

  • 微信小程序ThreeJs加载3D模型

    微信小程序使用ThreeJs需要使用官方库threejs-miniprogram[https://github.c...

  • threejs 详解(一)

    1. 开始 1.1 开使用threejs写一个最简洁的demo 1.2 threejs常用对象或对象属性 1.2...

  • #0 前言

    准备学习一下 ThreeJS,WebGL,Canvas,SVG,Audio等和绘图相关的技术。 初步学习计划: 先...

  • 【ThreeJs】06 - 纹理

    项目搭建小提示 创建vue项目 安装ThreeJs 导入ThreeJs到组件中可以使用全部到如之后使用 自定义名称...

  • ChIPpeakAnno 注释peak

    # 1. 初步使用 运行下面几行代码,初步了解ChIPpeakAnno使用 # 1. 详细例子 ChIPpeakA...

  • 场景

    场景是threejs中所有object 元素盛放的容器,场景并没有多余复杂的操作,只需要在每次使用threejs构...

  • ThreeJs简单使用

    Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它在 web 中创建各种三维场景,包括了摄影机、光影...

  • Threejs 在加载模型和材质遇到的坑

    今天在使用 Vue 和 Threejs 结合的项目里遇到了一些坑,记录下来。 模型加载 Threejs 在加载 o...

网友评论

      本文标题:#1 初步使用ThreeJS

      本文链接:https://www.haomeiwen.com/subject/juilvftx.html