animationTexturePosition

@three-blocks/coreWebGPUWebGL
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
textureNodeNode
Baked animation texture.
frameIndexNode<int>
Current frame index.
framesCountNode<int>
Total frame count.
timeInterpolationoptionalNode<float>
Interpolation factor [0..1].
Default is 0.
textureOffsetoptionalNode<int>
Offset in the texture for packed animations.
Default is 0.
idIndexoptionalNode<int>
Vertex or instance index.
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
);