I was mucking around, trying to put together an example of the vertexdata commands. I thought that this was interesting:
sync on
sync rate 60
color backdrop rgb(32, 32, 32)
hide mouse
null = make vector3(1)
make object sphere 1, 1.0, 50, 50 ` Smooth sphere
set object light 1, 0 ` Disable lighting on the object
convert object fvf 1, 0x42 ` Need position and diffuse only, no normals (lighting disabled) or textures
` Generate a colour for each vertex based on its position
lock vertexdata for limb 1, 0
VertexTop = get vertexdata vertex count() - 1
for v = 0 to VertexTop
set vector3 1, get vertexdata position x(v), get vertexdata position y(v), get vertexdata position z(v)
normalize vector3 1, 1
` Calculate a new vertex colour and update the vertex with it
r = abs(z vector3(1)) * 255 ` The nearer the front or back it is, the redder it is
g = abs(y vector3(1)) * 255 ` The nearer the top or bottom it is, the greener it is
b = abs(x vector3(1)) * 255 ` The nearer the left or right it is, the bluer it is
Colour = rgb(r, g, b)
set vertexdata diffuse v, Colour
next
unlock vertexdata
` Keep a copy of the the limbs mesh data
make mesh from object 1, 1
MorphAngle as float = 0.0
SpinAngle as float = 0.0
x as float
y as float
z as float
do
` Update the limb mesh data
lock vertexdata for limb 1, 0
VertexTop = get vertexdata vertex count() - 1
for v = 0 to VertexTop
` Calculate a new position for the vertex and update it
x = (get vertexdata position x(v) * sin(MorphAngle + get vertexdata position y(v) * 90.0)) * 2.0
y = (get vertexdata position y(v) * cos(MorphAngle + get vertexdata position z(v) * 180.0)) * 2.0
z = (get vertexdata position z(v) * sin(MorphAngle + get vertexdata position x(v) * 45.0)) * 2.0
set vertexdata position v, x, y, z
next
unlock vertexdata
` Spin the object a little
rotate object 1, SpinAngle, SpinAngle, SpinAngle
` Update the angles for morphing & spinning
inc MorphAngle, 0.5
if MorphAngle >= 360.0 then dec MorphAngle, 360.0
inc SpinAngle, 0.75
if SpinAngle >= 360.0 then dec SpinAngle, 360.0
sync
` Restore the limb from the saved copy of the mesh so we can start again
change mesh 1, 0, 1
loop
No plug-ins required