(三)Threejs基础-通过帮助文档创建立方体、轨道控制器、坐标轴辅助器

1、文档使用、基础环境配置

1)创建本地ThreeJS文档示例环境:
https://blog.csdn.net/donglaoxie/article/details/127840254

2)初始化ThreeJS项目:
https://blog.csdn.net/donglaoxie/article/details/127877036

在这里插入图片描述

2、创建立方体、轨道控制器、坐标轴辅助器

main.js

//导入threejs框架
import * as THREE from "three"
//导入轨道控制器 允许相机围绕着目标对象旋转
import {OrbitControls} from "three/examples/jsm/controls/OrbitControls"

//创建场景 threejs对象及对象位置的渲染是在场景中完成的,场景中可渲染配置对象、灯光、相机
onst scene=new THREE.Scene();

//2创建相机 perspective projection 模拟人眼所看到的景象,它是3D场景的渲染中使用得最普遍的投影模式。详见第3部分相机类型
const camera=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);

//3设置相机位置 详见第3部分其它相机位置说明
camera.position.set(0,0,10)

//4添加相机到场景
scene.add(camera);


//5场景中添加物体
const geometry= new THREE.BoxGeometry( 1, 1, 1);
const material= new THREE.MeshBasicMaterial({color: 0xffff00});
const cube=new THREE.Mesh(geometry,material);
scene.add(cube);

//6初始化渲染器
const renderer=new THREE.WebGLRenderer();

//7设置渲染的尺寸大小
renderer.setSize(window.innerWidth,window.innerHeight);

//8将webgl渲染的canvas内容添加到body
document.body.appendChild(renderer.domElement);

//9创建轨道控制器
const controls=new OrbitControls(camera,renderer.domElement);
//10创建辅助坐标轴
const axesHelper=new THREE.AxesHelper(5);
scene.add(axesHelper);

//11使用渲染器,通过相机将场景渲染进来
renderer.render(scene,camera);

3、其它

1)相机类型:
在这里插入图片描述

2)相机的位置说明:机相对于世界坐标系原点的位置,换句话说相机距离场景中心的距离。距离越近看到的物体越少越大,距离越远看到的物体越多越小。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要切换Three.js中的轨道控制器,可以按照以下步骤进行: 1. 首先,创建一个新的轨道控制器对象: ``` var newControls = new THREE.OrbitControls(camera, renderer.domElement); ``` 2. 然后,将新的轨道控制器对象覆盖原始的控制器对象: ``` controls = newControls; ``` 3. 最后,更新渲染的大小: ``` renderer.setSize(window.innerWidth, window.innerHeight); ``` 完整的代码示例: ``` var camera, scene, renderer, controls; function init() { // 创建相机 camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.set(0, 0, 5); // 创建场景 scene = new THREE.Scene(); // 创建渲染 renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // 创建轨道控制器 controls = new THREE.OrbitControls(camera, renderer.domElement); // 添加一个立方体到场景中 var cubeGeometry = new THREE.BoxGeometry(1, 1, 1); var cubeMaterial = new THREE.MeshBasicMaterial({ color: 0x00ff00 }); var cube = new THREE.Mesh(cubeGeometry, cubeMaterial); scene.add(cube); } function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); } // 切换轨道控制器 function switchControls() { // 创建一个新的轨道控制器对象 var newControls = new THREE.TrackballControls(camera, renderer.domElement); // 覆盖原始的控制器对象 controls = newControls; // 更新渲染的大小 renderer.setSize(window.innerWidth, window.innerHeight); } init(); animate(); window.addEventListener('resize', onWindowResize); ``` 在上面的示例中,我们创建了一个OrbitControls对象并将其存储在controls变量中。然后,我们定义了一个switchControls函数,该函数将创建一个新的TrackballControls对象并将其存储在controls变量中,这样就可以切换控制器。最后,我们通过调用renderer.setSize()函数来更新渲染的大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值