Solution for individual objects
(Solution for mesh islands at the end of the answer)
Use this to copy material to all objects: Copy material to another object? (where the "special" in newer blenders is a "down arrow")
(the same principle for copying apply to geometry nodes, in blender 4.2, you click the down arrow on the material or the modifier)
Geometry nodes
These store a X axis for the texture.
- It needs tiles with 4 edges
- It takes the two smallest edges and calculate X based on the center of these edges
- It stores the normalized X axis in a named attribute (important: store as vector)
Shader nodes
- Take the Texture X axis
- Calculates the Texture Y axis by cross product Normal x X
- Calculates the position of the geometry in the new texture coordinate system (dot products)
(The wave texture represents your wood texture)
PS: you might need to rescale the texture, in this case, add a multiply or a vector map right before the texture.
Result
Solution for mesh islands
Here, you have a single object instead of many individual objects.
- This requires that all islands have 4 vertices!!
Solution for volumetric objects with good topology (faces = quads)
Here, we extrapolate the previous island solution.
- Split the edges to make every individual face its own UV island
- Store the X axis for each face
- Join the geometry together again (merge by distance)