Venus & David
This example morphs one instanced line layout between two sampled sculptures. The minimal pattern is just two position sets and one uniform.
Open the full Venus and David demo
Minimal Pattern
javascript
import { MeshLine, circlePositions } from 'makio-meshline'
import { attribute, Fn, mix, uniform } from 'three/tsl'
const morph = uniform( 0 )
const ringCount = 800
const line = new MeshLine()
.lines( circlePositions( 24, 0.03 ), true )
.instances( ringCount )
.lineWidth( 0.01 )
.color( 0xffffff )
.positionFn( Fn( ( [position] ) => {
const fromPosition = attribute( 'fromPosition', 'vec3' )
const toPosition = attribute( 'toPosition', 'vec3' )
return mix( fromPosition, toPosition, morph ).add( position )
} ) )
line.addInstanceAttribute( 'fromPosition', 3 )
line.addInstanceAttribute( 'toPosition', 3 )
for ( let i = 0; i < ringCount; i++ ) {
line.setInstanceValue( 'fromPosition', i, venusSamples[i] )
line.setInstanceValue( 'toPosition', i, davidSamples[i] )
}
line.build()
scene.add( line )
morph.value = 0.5The live demo adds BVH sampling, interaction, and bloom, but the morph itself is just mix() between two instanced position attributes.