Godot 4.7: 灯光、摄像机、开拍

Lobsters Hottest 产品

摘要

Godot 4.7 引入了 AreaLight3D 以支持矩形区域光源、资源商店、内嵌着色器预览以及 Control 节点的偏移变换,增强了 3D 光照、资源浏览、着色器编辑和 GUI 动画。

<p><a href="https://lobste.rs/s/heb0am/godot_4_7_lights_camera_action">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/06/20 14:32

# Godot 4.7:灯光,摄像机,开拍! 来源:https://godotengine.org/releases/4.7/ ### 迁移至新版本 在将现有项目迁移到 Godot 4.7 之前,请仔细阅读我们的迁移指南(https://docs.godotengine.org/en/4.7/tutorials/migrating/upgrading_to_godot_4.7.html),了解可能发生的破坏性变更。 ### `AreaLight3D`:用于矩形光源的新节点 #### 你觉得即使在战场上,光也能绽放吗? 嗡嗡作响的电视屏幕散发出的柔和辐射光晕、繁华城市景观中的发光广告牌,以及透过磨砂玻璃射出的不祥光线——现在都可以通过矩形区域光实现。 你不再需要使用 emissive 材质配合全局光照来模拟发光区域。通过利用新的 `AreaLight3D`(https://docs.godotengine.org/en/4.7/classes/class_arealight3d.html)节点,现在可以在 3D 空间中实时渲染来自矩形的光线。矩形区域光可以为场景创建更柔和的阴影和更真实的反射。 ### 进入资源商店 #### 陌生人,选点好东西吧! 资源库完成了它的使命,也确实很有用。但现在,是时候让位于新的资源商店(https://store.godotengine.org/)了。 这次新更新带来了一些改动,让浏览资源变得更容易、更愉快!我们改进了资源项的显示方式,现在你可以缩放资源预览图片。不过,这可能还不足以吸引你的眼球;如果我们告诉你,现在可以看到资源评分了呢?你是否曾迷失在无尽的插件海洋中?不确定如何在众多高大的资源中导航?别担心,现在直接从商店内部就能看到。 在后台,我们还引入了多线程处理。这意味着资源商店可以在后台执行某些任务,而不会阻塞编辑器的主用户界面。现在,当你在整理资源时,你会知道有人在背后默默铺路、清理障碍,让你更容易掌握全局。 ### 基于文本着色器的内联预览 #### 我甚至看不到代码。我只看到菲涅尔、反照率、遮挡。 我们继续用田野的比喻。想象你身处一片田野。在远处,你看到一个孤独的开发者,蜷缩在笔记本电脑前。你本能地穿过高草大喊:“`VEC2 V4 = UV;`”!开发者胜利地向空中挥了挥手,但你心里知道,你需要亲眼看到结果。你跋涉过田野,终于气喘吁吁地越过那位孤独开发者的肩膀,看到了你的创作。 有了内联文本着色器预览,这段艰苦的旅程结束了。 当你输入 `vec2 v4 = UV;` 时,你现在可以在编辑器中实时预览 Godot 文本着色器。过去,你需要编译着色器并在工作区中单独查看。但多亏了文本着色器编辑器这一期待已久的生活质量改进,你现在可以在编辑器内,一边编写着色器,一边实时预览着色器及其效果! ### `Control` 节点的偏移变换 #### 改变你设计 GUI 的方式 Godot GUI 系统中最受期待的功能之一,就是能够平移、旋转或缩放 `Control`(https://docs.godotengine.org/en/4.7/classes/class_control.html)节点,而不影响容器中的其他部分。这主要用于动画目的,例如让按钮平滑地滑入视图或通过缩放变化淡出。 然而,Godot 的各种 `Container`(https://docs.godotengine.org/en/4.7/classes/class_container.html)节点会将它们的位置、旋转和缩放应用于子节点,这意味着当容器重新排序时(例如在场景树中添加、删除或移动子节点时),对子节点变换所做的任何更改都会丢失。`Control` 新的 `offset_transform_*`(https://docs.godotengine.org/en/latest/classes/class_control.html#class-control-property-offset-transform-enabled)属性旨在以自包含的方式解决这一限制,类似于 CSS 的 `transform`(https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/transform)属性。 你可以选择变换偏移是否影响鼠标输入。默认情况下,变换偏移纯粹是视觉上的,这意味着按钮在变换后不会失去悬停状态的风险。 ### 完全在 Android 上创建游戏 #### 力量就在你的掌心 在 Android 和 XR 上开发已经有一段时间了,随着 **Godot Android 构建环境**(GABE)的稳定发布,开发者现在也可以导出和发布他们的游戏了! GABE 是 Godot Android 编辑器的配套应用,开发者可以下载它以获得 Gradle 导出支持。 Godot 4.7 带来了一些生活质量改进,以更好地集成和利用 Android 设备上的 GABE。 ### 在纹理上绘制从未如此简单 #### 这里没有错误,只有快乐的意外 经过漫长的等待,我们很高兴地宣布,现在可以轻松在纹理上绘制了! 以前,有一些通过使用 `Viewport`(https://docs.godotengine.org/en/4.7/classes/class_viewport.html)的 hacky 解决方案,但在处理更复杂的任务时,它们既有限又昂贵。对于那些习惯深入了解引擎内部的人来说,`RenderingDevice`(https://docs.godotengine.org/en/4.7/classes/class_renderingdevice.html)提供了更复杂的解决方案。 然而,现在我们有了更易用的东西:一个以 ✨`DrawableTexture2D`(https://docs.godotengine.org/en/4.7/classes/class_drawabletexture2d.html)✨ 形式出现的解决方案。它是一个简单的 API 层,抽象掉了所有技术细节,让各个技能水平的用户都能以简单的方式在纹理上绘制! ### HDR 输出支持 #### 这家伙能承受高达 10,000 尼特的温度! 你的 Godot 项目刚刚通过高动态范围(HDR)输出支持,在范围和颜色方面获得了巨大升级。想象一下 2D 和 3D 场景中鲜艳的色彩和超亮特效! HDR 是一种保存、处理或显示你能想象到的亮或暗颜色的方法。Godot 在内部以 HDR 渲染光照已经很久了,但现有的 SDR 输出模式无法看到全部细节。使用 HDR 输出可以让玩家看到更多这种内部 HDR 模拟,同时也允许游戏开发者充分利用屏幕的能力,显示所有 2D 和 3D 视觉效果。 HDR 输出在 Godot 4.7 中已支持 Windows、macOS、iOS、visionOS 和 Linux(Wayland)。阅读关于如何在 Godot 中实现 HDR 输出的详细文章(https://godotengine.org/article/hdr-output-arrives-in-godot-4-7/)以了解更多。 请注意,根据你使用的浏览器,HDR 预览可能显示不同或不被支持(例如,Firefox 不支持 HDR 图像)。 #### 3D ### `Path3D` 点现在可以吸附到碰撞体上 #### 抛锚了! 有没有想过为什么 `Path3D`(https://docs.godotengine.org/en/4.7/classes/class_path3d.html)的点似乎从不吸附到你想要的位置?这是因为它们默认吸附到相机平面,这本质上是一个与相机距离固定的虚拟平面。 我们现在添加了一个选项,可以将路径点吸附到碰撞体上。 ### 3D 编辑器标尺的新矢量测量工具 #### 标尺有了新花样 3D 编辑器的标尺工具现在可以显示每个轴的长度。这使得一次性测量多个长度更加容易,例如测量 3D 世界中矩形区域的大小。 要使用此功能,请在 3D 编辑器顶部切换到标尺模式,按住 `Shift`,然后按住鼠标左键画一条线。在按住 `Shift` 的同时,会显示各个矢量分量。 ### CSG 节点的自动平滑选项 #### 你被……一个光滑的 CSG 节点击中了 当使用 CSG 节点创建几何体时,它们会继承原始网格数据的平滑/锐利面。这并不总是合适的,因为根据构造方式,曲线可能由锐利面组成。 在根 CSG 节点上启用新的 **Autosmooth** 属性,将根据 **Smoothing Angle** 属性(默认为 50 度)自动分配平滑或锐利面。更高的值会更积极地平滑面。 ### 3D 顶点吸附 #### 恰到好处 以前在 Godot 编辑器中放置网格到场景中是一件繁琐的事情。没有办法告诉它将一个层级网格的边缘与已存在网格的末端对齐。 但现在,按住新的 **Vertex Snap** 快捷键(默认为 B),编辑器将高亮显示选定节点几何体上最近的顶点。然后可以点击并拖动该顶点到其他网格上的其他顶点。 #### 2D ### `CollisionShape2D` 的单向碰撞支持 #### 2D 平台游戏的单程票 现在为你的平台游戏(以及更多!)创建单向碰撞比以往任何时候都更容易!借助 `CollisionShape2D`(https://docs.godotengine.org/en/4.7/classes/class_collisionshape2d.html)的新属性 `one_way_collision_direction`(https://docs.godotengine.org/en/4.7/classes/class_collisionshape2d.html#class-collisionshape2d-property-one-way-collision-direction),你现在可以将单向碰撞方向设置为任何方向(相对于形状并局部于形状)。 以前,单向方向被假定为相对于 `CollisionShape2D` 形状的局部向上方向。人们转而通过改变形状本身来编辑单向方向。这个痛苦的变通方法不再需要了。 你甚至可以使用 `global_transform.basis_xform_inv()` 使单向方向全局化(使单向方向恒定),即使碰撞形状本身旋转也是如此。 ### `GradientTexture2D` 现在可以生成锥形渐变 #### 渐变所及之处,皆为我土 `FILL_CONIC`(https://docs.godotengine.org/en/4.7/classes/class_gradienttexture2d.html#class-gradienttexture2d-constant-fill-conic)被新添加到 `GradientTexture2D`(https://docs.godotengine.org/en/4.7/classes/class_gradienttexture2d.html)中,使得可以使用 CSS 风格的效果。这在自定义 2D 着色器中特别有用,可以模拟具有逼真 3D 风格着色的表面。 #### GUI ### 改进的 Tree 拖放 #### 简单得像一、二、Tree! 现在,由于新的放置位置指示器,在 `Tree`(https://docs.godotengine.org/en/4.7/classes/class_tree.html)节点中重新排序项变得更加直观(也因此更容易)。 在编辑器中重新排序节点时,你肯定会欣赏这一变化。 ### 字体大小感知的 `RichTextLabel` 图像 #### 大字体配大图像 虽然 `RichTextLabel`(https://docs.godotengine.org/en/4.7/classes/class_richtextlabel.html)提供了一种调整字体和图像大小的方法,但你仍然需要手动设置图像大小以匹配文本。 得益于这个新功能,你现在可以自动相对于字体大小调整图像大小。例如,`[font_size=40]示例:[img height=1em]example.png[/img][/font_size]` 将以与父字体大小匹配的大小渲染图像 `example.png`。 ### 地标导航增强可访问性 #### 你在这里 👇 用户界面的焦点元素可能会以意想不到的方式移动。虽然我们在 4.5 中引入了屏幕阅读器支持(https://godotengine.org/releases/4.5/#screen-reader-support),但在某些情况下它缺乏提供上下文信息的能力。虽然可以设置一个行输入来描述“名称”字段,但如果不知道它是“什么”的名称,这也没有帮助。 通过引入地标导航,一旦你进入地标的周边区域,屏幕阅读器就可以提供一些上下文信息,例如告诉屏幕阅读器用户当前焦点在检查器中,位于名称字段上。 ### 视口新增最近邻缩放选项 #### 画我像你 PS1 的女朋友一样 对于具有复古艺术风格的 3D 游戏,或者当你出于性能原因想使用低分辨率缩放时,你现在可以为 3D 渲染使用**最近邻过滤**。与现有的 3D 分辨率缩放选项一样,这不会影响 2D 渲染。性能与双线性过滤大致相同。 ### 在 `TextureRect` 节点中平铺 `AtlasTexture` #### 增强 224 到 176。增强。停止。放大。停止。拉回。等一下。给我在那里平铺一份。 `AtlasTexture`(https://docs.godotengine.org/en/4.7/classes/class_atlastexture.html)允许在 2D 中绘制纹理的特定*区域*。这可以通过减少纹理变化来提高低端设备的性能,同时通过减少项目目录中的文件数量来更轻松地组织资源。然而,`AtlasTexture` 需要每个使用它的节点提供特定支持。 现在 `TextureRect`(https://docs.godotengine.org/en/4.7/classes/class_texturerect.html)也支持 `AtlasTexture`,它可以绘制 `AtlasTexture` 的一部分作为重复纹理,用于九宫格纹理。 #### 编辑器 ### 在 3D 编辑器中跟随移动对象 #### 出租车!跟上那个节点! 通过*两次*按下 **Focus Selection** 快捷键(默认为 F),你可以让 3D 编辑器在对象移动时自动跟随它。这在预览灯光如何影响在场景中移动的对象时特别有用,例如当使用 `LightmapGI`(https://docs.godotengine.org/en/4.7/classes/class_lightmapgi.html)与动态对象时。 在跟随模式下,你仍然可以使用鼠标或 Blender 风格的操纵快捷键来变换对象。在使用 `AnimationPlayer`(https://docs.godotengine.org/en/4.7/classes/class_animationplayer.html)节点播放动画时,或使用 `@tool` 脚本移动节点时,此功能同样有效。 ### 方法、信号和属性现在使用等宽字体 #### 感觉像家一样 脚本编辑器默认使用等宽字体。换句话说,每个字符占据相同的宽度,这使得在视觉上比较代码行更加容易。 然而,直到现在,编辑器在显示来自脚本的方法、信号和属性名称时,并没有使用等宽字体。这导致了你在脚本编辑器中看到的内容与编辑器其他位置看到的内容之间存在视觉差异。 仍然可以通过禁用 **Interface > Theme > Use Monospace Font for Editor Symbols**(https://docs.godotengine.org/en/4.7/classes/class_editorsettings.html#class-editorsettings-property-interface-theme-use-monospace-font-for-editor-symbols)编辑器设置来恢复之前的行为。 ### 复制粘贴检查器的部分内容 #### 复制数据。数据。数据。数据。 在检查器中右键单击某个类别或属性组,可以快速复制和粘贴它们的值。 ### 在远程场景检查器中折叠组和子组 #### 快!藏起来! 以前,可以在本地检查器中折叠属性组和子组,但不能在远程检查器中。请注意,这两者的工作方式并不完全相同。 已经实现了在远程场景检查器中折叠组和子组的支持。本地和远程检查器现在都以相同的方式支持折叠属性组,从而提供更无缝、一致的 UX。 ### 引入 `MeshLibrary` 编辑器 #### 就像图书管理员,只是不用嘘声 `GridMap`(https://docs.godotengine.org/en/4.7/classes/class_gridmap.html)节点使用 `MeshLibrary`(https://docs.godotengine.org/en/4.7/classes/class_meshlibrary.html)资源来获取可以放置的瓦片。

相似文章

godotengine/godot

GitHub Trending (daily)

Godot Engine 是一个免费、开源、跨平台的游戏引擎,用于创建2D和3D游戏,采用社区驱动的开发模式,基于MIT许可。

像1993年那样制作图形

Hacker News Top

一位开发者详细介绍了如何构建《Catlantean 3D》——一款采用1993年时代图形技术(256色、320x240分辨率、手工制作资产、无人工智能)的第一人称射击游戏,计划在Steam上发布,重点讲解调色板渲染和资产创建。