Material —— 材质节点 | Coordinates

文章详细介绍了各种坐标转换节点在图形渲染中的作用,如ActorPositionWS表示Actor在世界空间的整体位置,ObjectPositionWS则关注单个对象的中心位置。还提到了其他关键节点,如CameraPositionWS、ParticlePositionWS和WorldPosition等,这些节点在3D场景中用于定位和纹理映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

坐标类节点

TextureCoordinate(U)—— UV坐标

Panner(P)—— 对UV坐标平移

Rotator —— 对UV坐标旋转

ActorPositionWS —— 对象Actor在世界空间的位置

ObjectPositionWS —— 对象Actor中每个对象在世界空间的位置

CameraPositionWS —— 相机在世界空间的位置位置

ParticlePositionWS —— 每粒子在世界空间的位置位置

WorldPosition —— 当前像素点在世界空间内的位置(常用于查找相机到像素的距离,与PixelDepth正交距离相反,也可用作Texture坐标)

LocalPosition —— 当前像素点在局部空间内的位置

ScreenPosition —— 当前像素点在屏幕空间内的位置

PixelNormalWS —— 当前像素的世界空间法线(结合法线贴图)

VertexNormalWS —— 世界空间顶点法线

VertexTangentWS —— 世界空间顶点切线

ObjectOrientation —— 对象世界空间的up向量(局部Z轴方向)

ObjectRadius —— 对象半径(UE单位)

ObjectLocalBounds —— 对象局部边界框

ParticleSubUVProperties —— 访问粒子UV动画的属性

BlurSampleOffsets —— 乘以指定V2

BoundingBoxBased_0-1_UVW —— 对每个轴上创建0-1值(依据世界位置)

PanTextureCoordinateChannelfrom-1ton+1 —— 偏移坐标通道从-1~n+1

PanTextureCoordinatefrom-1toN+1 —— 偏移坐标从-1~n+1

UVBrickPatterns —— 类似砖块网格样式

UVRemap_0-1_ToRange —— 将UV重映射到指定范围

TruncateLWC —— 用于处理高精度位置数据

ViewSize —— 当前视图尺寸

ScreenResolution  —— 屏幕精度

SceneTexelSize

SampleSceneDepth

1Dto2DIndex

1Dto3DIndex

2Dto1DIndex

3Dto1DIndex

ObjectAlignedVirtualPlaneCoordinates —— 在指定的对齐和位置绘制2D坐标

WorldSpaceAlignedScreenCoordinates —— 将屏幕对齐坐标中心移动到世界位置中心

VirtualPlaneCoordinates —— 光线追踪平面的虚拟坐标(世界单位)

CameraVectorToLatLongUV —— 将CameraVector转换为LatLongUV(有助于skybox纹理)

LongLatToUV —— 将方向向量变换为UV(用于Long/Lat坐标)

UVToLongLatT —— 将UV变换为方向向量(用于将Cubemap作为2D纹理)

LightmapUVs —— 灯光贴图纹理坐标

MapARPassthroughCameraUV

### Godot 引擎背景着色器实现方法 在 Godot 引擎中,为了给场景设置独特的视觉风格,可以利用自定义的背景着色器。这不仅限于简单的颜色填充或渐变,还可以通过编写 GLSL 代码来创造复杂的动态效果。 #### 创建并配置 ShaderMaterial 对于想要应用于整个视口作为背景的情况,在 SceneTree 中添加一个全屏覆盖的 Control 或 ColorRect 节点[^1]。随后按照如下操作: - 在 Inspector 面板内定位至该节点下的 `Material` 属性; - 单击旁边的小圆圈按钮以创建一个新的 `ShaderMaterial`; - 接下来点击新生成材料旁的空白区域展开更多选项,并再次单击右侧小图标建立新的 `Shader`; 此时已经准备好了一个可编程材质实例,等待具体的片段函数逻辑注入其中[^2]。 #### 编写顶点与片元程序 打开刚才新建好的 Shader 对象后会进入内置编辑界面,默认情况下提供了两个主要部分供开发者修改——Vertex 和 Fragment 函数。针对纯背景渲染而言,通常只需关注后者即可完成大部分需求。 下面给出一段简单示例,用于展示如何构建一个带有时间变化特性的星空夜景背景着色器: ```glsl shader_type canvas_item; uniform float time : hint_range(0, 10); void fragment() { vec2 uv = FRAGCOORD.xy / SCREEN_PIXEL_SIZE; // Simple star field effect based on UV coordinates and elapsed game time. float stars = sin(uv.x * 5.0 + time) * cos(uv.y * 7.9 + time); COLOR = vec4(vec3(stars), 1.0); } ``` 上述脚本实现了基于屏幕空间坐标系计算而来的周期性亮度波动模式,模拟出闪烁不定的繁星景象。值得注意的是,这里引入了外部变量 `time` 来接收来自引擎的时间戳更新,从而确保动画连贯流畅。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值