React+three.js之场景(Scene),相机(Camera)

场景THREE.Scene

场景=3d世界的大容器,所有的物体,灯光,模型,网格都要添加到场景里,可以设置背景色,背景贴图,雾化效果,层级

创建场景

javascript 复制代码
const scene = new THREE.Scene();

常用属性和方法

javascript 复制代码
//设置背景颜色
scene.background = new THREE.Color(0x050520); 

//设置背景图片
import bgImg from '@/assets/bg.jpg';
const texture = new THREE.TextureLoader().load(bgImg);
scene.background = texture;

//雾化效果
// 雾类型1:线性雾
scene.fog = new THREE.Fog(0x050520, 10, 50); 
// 参数:雾颜色、开始距离、结束距离

// 雾类型2:指数雾
scene.fog = new THREE.FogExp2(0x050520, 0.02);
// 参数:雾颜色、浓度

//添加物体到场景
scene.add(立方体 / 灯光 / 模型);

//移除物体
scene.remove(立方体);

//遍历所有子元素
scene.traverse((obj) => {
  console.log(obj.name, obj.type);
});

//清空场景
scene.clear();

相机(Camera)

透视相机(PerspectiveCamera)

构造参数含义

javascript 复制代码
const camera = new THREE.PerspectiveCamera(
  fov,       // 视角范围 视野角度
  aspect,    // 画布宽高比 width / height
  near,      // 近裁剪面 小于这个距离不渲染
  far        // 远裁剪面 大于这个距离不渲染
);
  • fov视野角度 ,越大看得越广、物体越小;一般 45~75
  • aspect:画布宽 / 高,必须和渲染器画布比例一致,否则模型拉伸变形
  • near:最近能看到多近,一般 0.1
  • far:最远能看多远,大屏地图一般 1000 / 2000

相机位置position

javascript 复制代码
// x y z 三轴位置
camera.position.set(0, 0, 5);
// 等价
camera.position.x = 0;
camera.position.y = 0;
camera.position.z = 5;

相机看向某点lookAt

javascript 复制代码
// 看向坐标原点
camera.lookAt(0, 0, 0);
// 看向某个模型
camera.lookAt(立方体.position);

更新相机投影矩阵

javascript 复制代码
camera.updateProjectionMatrix();

正交相机OrthographicCamera

无近大远小。合适2d可视化,地图,二维大屏

javascript 复制代码
const camera = new THREE.OrthographicCamera(
  left,    // 左边界
  right,   // 右边界
  top,     // 上边界
  bottom,  // 下边界
  near,
  far
);
相关推荐
NiceCloud喜云2 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
wordbaby3 小时前
React Native + RNOH:跨页面数据回传的最佳实践与避坑指南
前端·react native
GISer_Jing3 小时前
Three.js着色器编译机制深度解析
javascript·webgl·着色器
丷丩3 小时前
MapLibre GL JS第22课:查看本地GeoJSON
前端·javascript·map·mapbox·maplibre gl js
油炸自行车3 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
Front思4 小时前
AI前端工程师需要具备能力+
前端·人工智能·ai
ZC跨境爬虫6 小时前
跟着 MDN 学CSS day_29:(掌握文本与字体样式的核心艺术)
前端·css·ui·html·tensorflow
李子琪。7 小时前
网络空间安全深度实战:CSRF 漏洞原理剖析与基于 Token 的纵深防御体系构建(全栈实验报告)
前端·安全·csrf
冰暮流星7 小时前
javascript之history对象介绍
前端·笔记
IT_陈寒7 小时前
Vite热更新失灵?你可能漏了这个配置
前端·人工智能·后端