ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Godot 引擎 CameraAttributesPhysical 完全指南:基于真实物理单位的曝光、自动曝光与景深控制

Godot 引擎 CameraAttributesPhysical 完全指南:基于真实物理单位的曝光、自动曝光与景深控制 文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载CameraAttributesPhysical是 Godot 引擎中用于以真实物理单位焦距、光圈、快门速度、ISO 等控制摄像机渲染效果的资源类负责**曝光Exposure、自动曝光Auto Exposure与景深Depth of Field三大核心功能。在 Godot 4 中曝光与景深信息已从Environment资源中拆分出来独立为CameraAttributes资源体系见 tutorials/3d/environment_and_post_processing.rst而CameraAttributesPhysical正是其中面向写实渲染photorealistic rendering**的物理单位实现。读完本文你将掌握该类的全部属性语义与默认值、在WorldEnvironment与Camera3D中的正确挂载方式、室内外场景的调参基准以及其与CameraAttributesPractical的取舍。类层次与核心定位从 classes/class_cameraattributesphysical.rst 可以确认其继承链CameraAttributesPhysical CameraAttributes Resource RefCounted Object基类 CameraAttributes 是一个纯虚类由CameraAttributesPhysical与CameraAttributesPractical两个子类继承见 classes/class_cameraattributes.rst。CameraAttributes本身已提供以下公共属性auto_exposure_enabled、auto_exposure_scale、auto_exposure_speed、exposure_multiplier、exposure_sensitivity这些属性同样作用于CameraAttributesPhysical。CameraAttributesPhysical在三种使用场景中行为不同见 classes/class_cameraattributesphysical.rst挂在WorldEnvironment上为所有未自带CameraAttributes的摄像机包括编辑器摄像机提供曝光、自动曝光与景深的默认设置挂在Camera3D上覆盖WorldEnvironment中设置的任何CameraAttributes同时覆盖该Camera3D的far、near、fov、keep_aspect四个属性——也就是说挂上物理摄像机资源后这些属性在检视面板中会变为只读用于VoxelGI或LightmapGI仅使用其中的曝光设置不参与景深计算。从源码结构看CameraAttributes是Resource的子类该资源天然支持保存为.tres文件并在多场景间复用这是引擎对资源化配置的一贯设计。渲染方法限制务必先确认文档中明确标注了两条硬性限制见 classes/class_cameraattributesphysical.rst景深模糊仅在 Forward 与 Mobile 渲染方法中可用Compatibility 不支持自动曝光仅在 Forward 渲染方法中可用Mobile 与 Compatibility 均不支持。如果项目使用 Compatibility 渲染器请直接忽略景深与自动曝光相关的属性只关注曝光部分。属性总览CameraAttributesPhysical共定义了 8 个 float 属性见 classes/class_cameraattributesphysical.rst按功能可分为曝光相关与视锥/景深相关两组属性默认值单位/语义说明auto_exposure_max_exposure_value10.0EV100自动曝光允许达到的最大亮度EV100auto_exposure_min_exposure_value-8.0EV100自动曝光允许达到的最小亮度EV100exposure_aperture16.0f-stops光圈大小f 值默认适合户外白天exposure_shutter_speed100.01/N 秒快门速度脚本中按秒计frustum_far4000.0米覆盖Camera3D.far内部用于景深计算frustum_focal_length35.0毫米镜头焦距控制 FOV 与景深frustum_focus_distance10.0米对焦距离内部会被钳制frustum_near0.05米覆盖Camera3D.near内部用于景深计算方法侧只有一个只读方法get_fov()见 classes/class_cameraattributesphysical.rst用于返回与当前frustum_focal_length对应的垂直视野角度该值在焦距每次改变时由引擎内部自动重算。曝光相关属性详解exposure_aperture光圈f-stops光圈大小以 f 值f-stops度量——它是镜头焦距与光圈直径之间无量纲的比值。语义为见 classes/class_cameraattributesphysical.rst高光圈值→ 更小的实际光圈开口 → 画面更暗、景深更锐利清晰范围更大低光圈值→ 更宽的光圈开口 → 进光更多、画面更亮、背景虚化更强。默认16.0适合户外白天场景配合默认DirectionalLight3D使用室内灯光环境下建议取 24。该属性仅在项目设置ProjectSettings.rendering/lights_and_shadows/use_physical_light_units启用后才生效。这是整个物理光照体系的总开关启用后需要重启编辑器。exposure_shutter_speed快门速度快门开合时间按1 / shutter_speed秒评估见 classes/class_cameraattributesphysical.rst值越大→ 曝光时间越短 → 进光越少 → 画面越暗值越小→ 曝光时间越长 → 进光越多 → 画面越亮。默认100.0。注意脚本单位差异在检视面板中以每秒倒数1/N显示而通过脚本 get/set 时单位是秒见 tutorials/3d/physical_light_and_camera_units.rst。例如set_shutter_speed(0.02)等价于面板中的 1/50 秒。典型参考值电影/摄影常用 1/500.02 秒夜间摄影约 1/100.1 秒体育摄影用 1/2500.004 秒1/10000.001 秒以减少运动模糊。auto_exposure_min/max_exposure_value自动曝光的 EV100 下限与上限这两个属性决定自动曝光计算时对场景平均亮度的钳制范围单位 EV100即 ISO 100 下的曝光值auto_exposure_max_exposure_value默认10.0场景平均亮度计算时颜色值会被钳制到至少此值限制自动曝光不能低于某亮度即存在一个临界点超过后场景保持明亮见 classes/class_cameraattributesphysical.rstauto_exposure_min_exposure_value默认-8.0颜色值被钳制到至少此值限制自动曝光不能高于某亮度即存在临界点超过后场景保持黑暗见 classes/class_cameraattributesphysical.rst。名称中的 min/max 指的是亮度范围边界语义方向与直觉相反调参时需留意。启用自动曝光前记得先在基类CameraAttributes上开启auto_exposure_enabled true。视锥 / 景深相关属性详解物理摄像机模式下视野与景深全部由焦距、对焦距离与近远裁剪面推导因此Camera3D的 FOV 与 Keep Aspect 会被锁定为只读见 tutorials/3d/environment_and_post_processing.rst。frustum_focal_length焦距毫米镜头镜片与光圈之间的距离单位毫米同时控制视野与景深见 classes/class_cameraattributesphysical.rst焦距越大→ 视野越小长焦、景深越窄 → 清晰物体更少焦距越小→ 视野越宽广角、景深越大 → 清晰物体更多。默认35.0mm 对应广角镜头但生成的垂直视野仍明显窄于默认实用模式的 75° 垂直 FOV——因为影视与摄影行业偏好较窄视野以获得更电影化的观感见 tutorials/3d/physical_light_and_camera_units.rst。挂到Camera3D.attributes上时它覆盖Camera3D.fov与Camera3D.keep_aspect。行业常用焦距参考见 tutorials/3d/physical_light_and_camera_units.rst鱼眼超广角低于 15 mm几乎看不到景深广角1550 mm景深较浅标准50100 mm标准景深长焦大于 100 mm景深较深。frustum_focus_distance对焦距离米镜头到被对焦物体的距离单位米见 classes/class_cameraattributesphysical.rst。内部会被钳制为至少比frustum_focal_length大 1 毫米防止出现对焦距离小于焦距的物理悖论。默认10.0米。frustum_near / frustum_far近远裁剪面覆盖分别覆盖Camera3D.near默认0.05与Camera3D.far默认4000.0单位米见 classes/class_cameraattributesphysical.rst 与 classes/class_cameraattributesphysical.rst。行为与Camera3D同名属性一致更小的 Near 允许显示极近物体更大的 Far 允许看到更远但两者都会在远处引入精度Z-fighting问题。它们也被引擎内部用于景深计算。get_fov()返回与当前frustum_focal_length对应的垂直视野角度见 classes/class_cameraattributesphysical.rst。该值在焦距每次变化时由内部自动计算并缓存可通过脚本读取以获取等效 FOV例如用于 UI 显示或与实用模式参数做换算。与Keep Height宽高比模式类似实际视野还取决于视口宽高比——更宽的宽高比会自动产生更宽的水平视野见 tutorials/3d/physical_light_and_camera_units.rst。完整启用流程编辑器实操按 tutorials/3d/physical_light_and_camera_units.rst 的指引使用物理光照/摄像机单位共需 4 步启用项目设置打开 Project Settings → 启用Advanced开关 → 开启Rendering Lights And Shadows Use Physical Light Units→重启编辑器配置摄像机为场景中的Camera3D节点添加CameraAttributesPhysical资源到其Attributes属性此时该类Exposure段的 Aperture、Shutter Speed 等属性才会生效配置环境为WorldEnvironment添加Environment资源并设置Background Intensity单位 nits/坎德拉每平方米配置灯光为Light3D节点设置IntensityDirectionalLight3D 用 luxOmniLight3D/SpotLight3D/AreaLight3D 用 lumens与Temperature色温单位 Kelvin。关键警告启用物理光照单位后如果场景中存在WorldEnvironment且编辑器的默认环境被禁用则必须为该WorldEnvironment节点分配CameraAttributes资源否则在场景中可见DirectionalLight3D时3D 编辑器视口会异常明亮见 tutorials/3d/physical_light_and_camera_units.rst。关于性能启用物理单位本身在 CPU 侧几乎没有开销只有少量单位换算但在 GPU 侧物理摄像机单位会强制启用景深带来中等程度的性能开销可通过项目设置中的高级选项降低景深质量来缓解见 tutorials/3d/physical_light_and_camera_units.rst。室内外场景调参基准文档给出的默认值全部面向户外白天场景室内与夜间需按以下基准调整见 tutorials/3d/physical_light_and_camera_units.rst光圈Aperture户外白天默认16.0合适室内灯光取 24快门速度Shutter Speed影视通用 1/500.02 s夜间约 1/100.1 s体育摄影 1/2501/1000感光度ISO即基类exposure_sensitivity户外白天通常 50400室内/夜间用更高值。自动曝光开启时ISO 翻倍 曝光值EV100增加 1 档可作为曝光补偿手段。同时注意两点见 tutorials/3d/physical_light_and_camera_units.rst与真实相机不同提高 ISO 带来的噪点、降低快门带来的拖影等副作用 Godot 不会模拟物理单位不会自动让画面更好看需要严格对照真实世界参考值设置才能发挥优势且高动态范围下需人工管理曝光以避免浮点精度问题见 tutorials/3d/physical_light_and_camera_units.rst。自动曝光的设置与效果开启自动曝光后渲染器会逐帧评估场景平均亮度并自动调节曝光常用于室内暗 室外亮的过渡场景模拟人眼/相机的适应见 tutorials/3d/environment_and_post_processing.rst。核心属性组合基类auto_exposure_enabled开启开关、auto_exposure_scale强度默认0.4、auto_exposure_speed适应速度默认0.5、exposure_sensitivityISO 基准默认100.0、exposure_multiplier曝光倍数默认1.0本类auto_exposure_min/max_exposure_valueEV100 钳制范围默认-8.0/10.0。需要留意两点成本逐帧亮度评估有中等性能开销建议仅在必要时开启见 tutorials/3d/environment_and_post_processing.rst且自动曝光仅支持 Forward 渲染器。启用后过曝像素会向 Glow 缓冲区溢出形成摄影中典型的泛光bloom效果。与 CameraAttributesPractical 的取舍两种CameraAttributes子类功能等价但配置单位不同见 tutorials/3d/environment_and_post_processing.rst对比维度CameraAttributesPhysicalCameraAttributesPractical单位体系真实物理单位毫米焦距、f-stops 光圈、ISO、EV100任意/实用单位视野控制通过frustum_focal_length推导 FOV锁定Camera3D.fov/keep_aspect使用dof_blur_*系列属性与 ISO 灵敏度直接易用景深计算由焦距 对焦距离 光圈自动计算手动设置近/远模糊距离、过渡区与模糊量dof_blur_near/far_distance、dof_blur_near/far_transition、dof_blur_amount适用场景写实渲染、影视/摄影向、从 Blender 等 DCC 移植场景大多数游戏默认场景官方明确建议不确定选哪种时默认用CameraAttributesPractical。景深模糊效果本身对比如下无论物理还是实用模式效果渲染路径一致注意事项汇总景深模糊不支持透明背景视口Viewport.transparent_bg true时不生效见 classes/class_cameraattributespractical.rst将CameraAttributesPhysical挂到Camera3D会锁定 FOV 与宽高比调整若挂在WorldEnvironment上则不会覆盖场景中任何Camera3D推荐优先把CameraAttributes挂到Camera3D节点而非WorldEnvironment——这样可以避免景深效果在 3D 编辑器视口中持续显示除非正在预览该摄像机见 tutorials/3d/environment_and_post_processing.rst物理光照单位仅适用于3D 渲染不适用于 2D所有属性均可通过脚本的set_/get_访问器读写如set_aperture、set_shutter_speed、set_focal_length、set_focus_distance、set_far、set_near为动态调节如对焦动画、过场镜头提供了完整 API 支持。如需进一步深入物理单位的完整配置链路灯光强度、色温、背景强度等可继续阅读仓库中的 tutorials/3d/physical_light_and_camera_units.rst 与 tutorials/3d/environment_and_post_processing.rst类定义原文见 classes/class_cameraattributesphysical.rst其基类与姊妹类分别为 classes/class_cameraattributes.rst 与 classes/class_cameraattributespractical.rst。赞分享文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载相关推荐Godot CameraAttributes 详解曝光、自动曝光与景深控制完全指南Godot CameraAttributes 详解曝光、自动曝光与景深控制完全指南 本文围绕 Godot 引擎官方文档中的 CameraAttributes文档教程游戏开发Flet Camera 曝光模式 ExposureMode 完全指南自动曝光与曝光锁定的实战用法Flet Camera 曝光模式 ExposureMode 完全指南自动曝光与曝光锁定的实战用法 本文聚焦 Flet 官方相机扩展包 flet camera前端跨平台桌面应用移动开发告别自动曝光react-native-vision-camera动态曝光控制终极指南告别自动曝光react native vision camera动态曝光控制终极指南 想要在React Native应用中实现专业级的相机曝光控制吗r移动开发音视频上一篇fastai模型安全对抗攻击防御与鲁棒性增强终极指南下一篇Newton几何模块完全指南碰撞检测、SDF与接触优化的核心技术创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进