Three.js 相机属性教程
相机属性 ·Camera Attributes· ▶ 在线运行案例案例合集三维可视化功能案例threehub.cn开源仓库github地址https://github.com/z2586300277/three-cesium-examples400个案例代码:网盘链接你将学到什么PerspectiveCamera各参数对画面的影响fov、near、far、zoom修改投影参数后必须调用updateProjectionMatrix()Layers 图层系统相机与物体分层可见/隐藏用lil-gui实时调参观察变化效果说明场景中有一张贴图平面默认图层 0和一个白色旋转立方体图层 1。右侧 GUI 可实时调节视角 fov、近/远裁剪面 near/far、zoom相机位置 x/y/zOrbitControls 拖动时同步变化切换图层— 控制相机是否「看见」图层 1 的立方体配合 GridHelper、AxesHelper 理解相机与物体的空间关系。核心概念PerspectiveCamera 构造new THREE.PerspectiveCamera(fov, aspect, near, far)| 参数 | 含义 | 调大后的效果 | |------|------|-------------| |fov| 垂直视野角度 | 广角透视感强边缘变形明显 | |aspect| 宽高比 画布宽/高 | 通常随 resize 更新否则画面拉伸 | |near| 近裁剪面 | 过小易 Z-fighting过大可能裁掉近处物体 | |far| 远裁剪面 | 过小远处消失过大降低深度缓冲精度 |camera.fov 75;camera.near 0.1; camera.far 1000; camera.updateProjectionMatrix(); // 必须否则矩阵不更新::: warning 改 fov / near / far / zoom / aspect 后不调用updateProjectionMatrix()画面不会变——这是新手最常踩的坑之一。 :::zoom 与 film 参数camera.zoom缩放因子1 视野变窄类似长焦1 变广filmGauge胶片宽度mm影响 fov 与 zoom 的换算一般保持默认filmOffset胶片水平偏移模拟移轴镜头效果建筑摄影常用本案例把以上参数都暴露到 GUI方便直观感受。Layers 图层系统Three.js 内置32 层0~31用于相机只渲染特定层上的物体Raycaster 只拾取特定层后处理 Pass 分层渲染// 立方体只在图层 1 box1.layers.set(1); // 等价于disable 所有层再 enable(1)// 相机默认只看图层 0 → 立方体初始不可见 camera.layers.enable(1); // 或 GUI「切换此图层的状态」渲染规则物体与相机至少共享一层才会被绘制。平面 mesh → layer 0默认 → 相机 layer 0 可见 ✅立方体 box1 → layer 1 only → 需 camera.layers 含 1 才可见应用场景UI 3D 标签层、小地图专用层、Bloom 只作用于 layer 1 的物体等。实现步骤创建 PerspectiveCamera OrbitControls rAF平面layer 0 立方体layers.set(1) 网格/坐标轴辅助GUI 绑定 camera 投影参数onChange → updateProjectionMatrixGUI 绑定camera.layers.toggle(1)切换立方体可见性camera.position用.listen()只读监听由 OrbitControls 驱动代码要点import * as THREE from threeimport { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GUI } from three/addons/libs/lil-gui.module.min.jsconst box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(50, box.clientWidth / box.clientHeight, 0.1, 1000)camera.position.set(0, 1, 4)const renderer new THREE.WebGLRenderer({ antialias: true, alpha: true, logarithmicDepthBuffer: true })renderer.setSize(box.clientWidth, box.clientHeight)box.appendChild(renderer.domElement)const controls new OrbitControls(camera, renderer.domElement)controls.enableDamping trueconst geomerty new THREE.PlaneGeometry(1, 1)const map new THREE.TextureLoader().load(HOST files/author/flowers-10.jpg)const material new THREE.MeshBasicMaterial({ map, color: 0x737373, side: THREE.DoubleSide })const mesh new THREE.Mesh(geomerty, material)scene.add(mesh)const box1 new THREE.Mesh(new THREE.BoxGeometry(1, 1, 1), new THREE.MeshBasicMaterial({ color: 0xffffff }))box1.position.set(1, 1, 0)box1.layers.set(1)scene.add(box1)animate()function animate() {requestAnimationFrame(animate)box1.rotation.y 0.01controls.update()renderer.render(scene, camera)}scene.add(new THREE.AxesHelper(10), new THREE.GridHelper(10, 10))const folder new GUI()const onChange () camera.updateProjectionMatrix()folder.add(camera.layers, mask).name(图层).onChange(onChange).listen()folder.add({ 切换此图层的状态: () camera.layers.toggle(1) }, 切换此图层的状态)folder.add(camera, fov).min(0).name(视角).onChange(onChange)folder.add(camera, near).min(0.001).name(近平面).onChange(onChange)folder.add(camera, far).min(0).name(远平面).onChange(onChange)folder.add(camera, zoom).min(0).name(缩放).onChange(onChange)folder.add(camera, filmOffset).name(胶片偏移).onChange(onChange)folder.add(camera, filmGauge).name(胶片尺寸).onChange(onChange)folder.add(camera.position, x).name(相机位置x).listen()folder.add(camera.position, y).name(相机位置y).listen()folder.add(camera.position, z).name(相机位置z).listen()folder.add({ fn: () folder.reset() }, fn).name(重置)完整源码GitHub小结透视相机 fov aspect near far定义视锥体改参必updateProjectionMatrixLayers让同一 Scene 内物体分组可见相机与物体都要设对 layer

相关新闻

Windows 11终极优化指南:Win11Debloat免费工具让你的系统重获新生

Windows 11终极优化指南:Win11Debloat免费工具让你的系统重获新生

Windows 11终极优化指南:Win11Debloat免费工具让你的系统重获新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…

2026/7/1 18:51:35阅读更多 →
5分钟学会NGA论坛优化摸鱼插件:彻底改变你的浏览体验

5分钟学会NGA论坛优化摸鱼插件:彻底改变你的浏览体验

5分钟学会NGA论坛优化摸鱼插件:彻底改变你的浏览体验 【免费下载链接】NGA-BBS-Script NGA论坛增强脚本,给你完全不一样的浏览体验 项目地址: https://gitcode.com/gh_mirrors/ng/NGA-BBS-Script NGA论坛优化摸鱼插件是一款功能强大的浏览器脚本&…

2026/7/1 18:51:35阅读更多 →
DOPE-NHS 二油酰基磷脂酰乙醇胺-活性酯 产品合成工艺解析

DOPE-NHS 二油酰基磷脂酰乙醇胺-活性酯 产品合成工艺解析

化学名称:1,2-二油酰基-sn-甘油-3-磷脂酰乙醇胺-N-羟基琥珀酰亚胺酯 英文名称:1,2-Dioleoyl-sn-glycero-3-phosphoethanolamine-N-hydroxysuccinimide esterxi an瑞.禧.小编总结的结构特征与功能定位DOPE-NHS 由两部分构成:高膜融合活性的 DO…

2026/7/1 18:51:35阅读更多 →
ComfyUI-WanVideoWrapper:如何用AI让静态画面动起来?

ComfyUI-WanVideoWrapper:如何用AI让静态画面动起来?

ComfyUI-WanVideoWrapper:如何用AI让静态画面动起来? 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 想要将文字描述转化为生动的视频画面,或是让静态照片拥有…

2026/7/1 20:16:49阅读更多 →
Function Calling 原理与工程落地

Function Calling 原理与工程落地

1. Function Calling 到底是什么 Function Calling 不是让大模型自己去联网、查库、发请求。大模型本身并不会直接执行代码,它做的是“决策”:判断当前问题是否需要调用工具,如果需要,就按照开发者提前定义好的 JSON Schema&…

2026/7/1 20:16:49阅读更多 →
终极解决方案:JetBrains IDE试用期无限循环重置完全指南

终极解决方案:JetBrains IDE试用期无限循环重置完全指南

终极解决方案:JetBrains IDE试用期无限循环重置完全指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而烦恼吗?ide-eval-resetter项目为你提供了一套完整…

2026/7/1 20:16:49阅读更多 →
基于ICM-42605和STM32的高精度6DOF运动追踪系统设计

基于ICM-42605和STM32的高精度6DOF运动追踪系统设计

1. 项目背景与核心需求在工业自动化、无人机导航和VR/AR设备中,精确追踪物体在三维空间中的运动轨迹和方向一直是核心技术挑战。传统方案往往需要多个传感器协同工作,而现代6DOF(六自由度)IMU(惯性测量单元&#xff09…

2026/7/1 20:16:49阅读更多 →
JetBrains IDE试用期重置终极指南:如何无限延长30天免费使用

JetBrains IDE试用期重置终极指南:如何无限延长30天免费使用

JetBrains IDE试用期重置终极指南:如何无限延长30天免费使用 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为IntelliJ IDEA、PyCharm等JetBrains IDE的30天试用期到期而烦恼吗?ide-e…

2026/7/1 20:16:49阅读更多 →
性能基准测试:NVMe-snsd在不同网络环境下的切换延迟分析

性能基准测试:NVMe-snsd在不同网络环境下的切换延迟分析

性能基准测试:NVMe-snsd在不同网络环境下的切换延迟分析 【免费下载链接】nvme-snsd Simplify service deployment and configuration while reducing the impact of link failures on nvmeof services. 项目地址: https://gitcode.com/openeuler/nvme-snsd …

2026/7/1 20:11:48阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/1 4:42:14阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/1 5:19:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/1 0:01:44阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/1 0:01:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/1 0:01:44阅读更多 →