THREE.js学习笔记1——成功渲染

实现在页面中央渲染一个红色的正方体,并且上下拖动屏幕可以翻转它。
代码来源 Three.js中文网
记录以下实现步骤。方便自己复习。

  1. 在vue项目中导入THREE.js
// 使用npm安装
npm install three
// 安装某个固定版本
npm install three@0.148.0 --save
// 引入three.js
import * as THREE from 'three';
  1. 创建场景
// 创建3D场景对象Scene
const scene = new THREE.Scene();

创建几何形状
Three.js提供了各种各样的几何体API,用来表示三维物体的几何形状。

//创建一个长方体几何对象Geometry
const geometry = new THREE.BoxGeometry(100, 100, 100);

创建材质对象
定义物体的外观效果,比如颜色,需要通过材质Material相关的API实现。

//创建一个材质对象Material
const material = new THREE.MeshBasicMaterial({
    color: 0xff0000,//0xff0000设置材质颜色为红色
});

创建网格模型
threejs中通过网格模型Mesh表示一个虚拟的物体。

// 两个参数分别为几何体geometry、材质material
const mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh
//模型位置
//设置网格模型在三维空间中的位置坐标,默认是坐标原点
mesh.position.set(0,10,0);
//将网格模型添加到场景中
scene.add(mesh);
  1. 创建透视投影相机
// 实例化一个透视投影相机对象
const camera = new THREE.PerspectiveCamera();
//相机在Three.js三维坐标系中的位置
//根据需要设置相机位置具体值
camera.position.set(200, 200, 200);
//相机观察目标指向Threejs 3D空间中某个位置
camera.lookAt(0, 0, 0); //坐标原点
camera.lookAt(0, 10, 0);  //y轴上位置10
camera.lookAt(mesh.position);//指向mesh对应的位置
//PerspectiveCamera参数介绍
// 30:视场角度, width / height:Canvas画布宽高比, 1:近裁截面, 3000:远裁截面
const camera = new THREE.PerspectiveCamera(30, width / height, 1, 3000);
  1. 创建渲染器
// 创建渲染器对象
const renderer = new THREE.WebGLRenderer();
// 定义threejs输出画布的尺寸(单位:像素px)
const width = 800; //宽度
const height = 500; //高度
renderer.setSize(width, height); //设置three.js渲染区域的尺寸(像素px)
renderer.render(scene, camera); //执行渲染操作
//将渲染器对应的 <canvas> 元素添加到 HTML 文档的 <body> 元素内部。
document.body.appendChild(renderer.domElement);
  1. 实现拖动屏幕翻转
//引入相机控件
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";
//设置一个渲染函数
function render() {
    // 沿着轨道自动移动
    // if (cube.position.x > 3) {
    //     cube.position.x = 0;
    // }
    // cube.position.x += 0.01
    renderer.render(scene, camera);
    //   渲染下一帧的时候就会调用render函数
    requestAnimationFrame(render);
}
render()

image

posted @   xxxichenjq  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示