objectPosition
objectPosition
一个 vec3 向量,代表物体枢轴点(pivot)在世界空间中的位置。它使得在着色器中可以轻松获取整个物体的宏观位置,而非仅仅是表面上某一点的位置。
核心优势
极大地简化了数据传递,无需手动设置和更新 uniform。它能自动实时更新,是实现所有依赖于物体整体位置(而非表面点)的动态特效(如距离淡出、整体辉光)的基础。
常见用途
以物体为中心的球形效果:作为球心,计算与表面点的距离,以创建能量护盾或遮罩。
距离相机淡入淡出:计算与相机距离,以控制整个物体的透明度。
世界空间高度渐变:根据物体的Y坐标,整体改变其颜色或材质属性。
如何调整
该节点本身没有可调参数。调整其效果需要在 JavaScript 中改变物体的位置(如 `mesh.position.y = ...`)。着色器中的效果会实时响应物体在世界中的位置变化。高级用法中,可以动态设置其 `.object3d` 属性,使其跟踪另一个物体的位置。
代码示例
1
2// 计算表面点(世界空间)到物体中心的距离
3const dist = distance( positionWorld, objectPosition() );
4
5// 创建一个半径为 5,衰减为 1 的球形遮罩
6const sphereMask = smoothstep( 5.0, 4.0, dist );
7