animationTexturePosition
animationTexturePosition(textureNode : Node, frameIndex : Node<int>, framesCount : Node<int>, timeInterpolation : Node<float>, textureOffset : Node<int>, idIndex : Node<int>) : Node<vec3>Sample transformed position from a baked animation texture.
Convenience wrapper that applies the animation matrix to positionLocal.
Algorithm
- Retrieves transformation matrix via {@link animationTextureMatrix}
- Multiplies matrix by
vec4(positionLocal, 1.0)for proper translation - Returns transformed XYZ position
Use Cases
- Quick setup for vertex/object animation with {@link AnimationBakeMixer}
- Procedural mesh deformation with baked keyframes
- Instanced object animation with unique timelines per instance
Parameters
textureNodeNodeBaked animation texture.
frameIndexNode<int>Current frame index.
framesCountNode<int>Total frame count.
timeInterpolationoptionalNode<float>Interpolation factor [0..1].
Default is
Default is
0.textureOffsetoptionalNode<int>Offset in the texture for packed animations.
Default is
Default is
0.idIndexoptionalNode<int>Vertex or instance index.
Default is
Default is
vertexIndex.Returns
Node<vec3> — Transformed position.See also
Example
import { AnimationBakeMixer, animationTexturePosition } from '@three-blocks/core';
import { MeshBasicNodeMaterial, vertexIndex } from 'three/tsl';
// Using AnimationBakeMixer (recommended - handles all setup)
const mixer = new AnimationBakeMixer(texture, { mode: 'vertex', fps: 30 });
mixer.registerMaterial(material);
// Manual node material setup
const material = new MeshBasicNodeMaterial();
material.positionNode = animationTexturePosition(
texture,
frameUniform,
framesCountUniform,
interpolationUniform,
textureOffsetUniform,
vertexIndex // Use vertexIndex for VAT, instanceIndex for OAT
);