SpriteNodeMaterial
SpriteNodeMaterial
一种用于渲染精灵(Sprite)的节点材质。精灵是一个始终朝向摄像机的二维平面,非常适合在 3D 场景中创建广告牌、标签或图标。 [1] 它是 SpriteMaterial 的节点版本。
核心优势
它简化了面向摄像机的平面的渲染。节点版本直接在着色器内部提供了强大且高效的、针对每个实例的位置(`positionNode`)、缩放(`scaleNode`)和旋转(`rotationNode`)的控制能力,这使得通过实例化来渲染大量精灵时效率极高。
常见用途
创建 UI 元素,如角色头顶的铭牌或血条
为远处的物体(如树木)渲染广告牌或“impostor”以节省性能
在 3D 环境中显示二维图标或标记
实现简单的粒子效果,其中每个粒子都是一个独立的精灵
如何调整
通过 `color` 和 `map`(纹理)来控制其外观。`sizeAttenuation` 属性是关键:设置为 `true` 可使精灵随距离缩小(透视效果),设置为 `false` 则保持恒定的屏幕尺寸(适用于 UI)。使用 `rotationNode` 来围绕中心旋转精灵,使用 `scaleNode` 来应用额外的缩放。对于高级的实例化应用,可以使用 `positionNode` 从缓冲属性中定义每个精灵实例的位置。
代码示例
1<sprite scale={[1, 1, 1]}>
2 {/* 精灵始终朝向摄像机。 */}
3 <spriteNodeMaterial
4 map={myTexture}
5 color="white"
6 rotationNode={timerLocal().mul(0.5)} // 动态旋转的示例
7 />
8</sprite>