Okay I think I'm grasping it now... If I make a memblock for the first sphere and store all the vertices' real world positions in it then I can use the vertexdata commands to manipulate the second sphere and tell it's vertices how to act in accordance with the first sphere's vertices.
EDIT:
Om nom nom nom - why can't I get this - seems easy enough now that I 'grasp' dbpro
EDIT ONCE MORE:
Okay here's what I've got. Use the middle mouse button to move the object, right click to rotate, arrow keys to move... what I want to have happen is when you click the mouse and have the object near a certain proximity, the two objects will combine... I'm going for a "Sporeā¢" Kind of meta-ball limb effect here
SET DISPLAY MODE DESKTOP WIDTH(), DESKTOP HEIGHT(), 32, 1
SYNC ON : SYNC RATE 0
Make object sphere 1, 10, 20,20
Make Object Sphere 2, 5, 10, 10
AUTOCAM OFF
MA=Make Matrix4(1)
V=Make Vector4(2)
V=Make Vector3(3)
MB=Make Matrix4(4)
V=Make Vector4(5)
V=Make Vector3(6)
ZDepth as float : ZDepth = 10
#constant worldv 7
#constant viewm 8
#constant projectm 9
UpdateVector= MAKE VECTOR3(10)
a=Make vector4(worldv)
a=Make Matrix4(viewm)
a=Make Matrix4(projectm)
#constant CenterX (screen width()/2.0)
#constant CenterY (screen height()/2.0)
`Set camera range 0, 0.01, 3000.0
position camera 0,50,0,50
do
CONTROL CAMERA USING ARROWKEYS 0, 0.5, 0.25
POINT CAMERA 0, OBJECT POSITION X(1), OBJECT POSITION Y(1), OBJECT POSITION Z(1)
sync
`Zooming
VIEW MATRIX4 viewm
PROJECTION MATRIX4 projectm
inc Zdepth, Zdepth*(mousemoveZ()/500.0)
If mouseclick()=2 then TURN OBJECT LEFT 2, 1.0
a=INVERSE MATRIX4 (viewm,viewm)
a=INVERSE MATRIX4 (projectm,projectm)
SET VECTOR4 worldv, (MouseX()-CenterX)/CenterX, (MouseY()-CenterY)/-CenterY,0,1
TRANSFORM VECTOR4 worldv,worldv,projectm
DIVIDE VECTOR4 7, W VECTOR4(7)
set vector4 worldv,x vector4(worldv)*(ZDepth/z vector4(worldv)),y vector4(worldv)*(ZDepth/z vector4(worldv)),ZDepth,1
object MATRIX4 1,1
object MATRIX4 4,2
transform vector4 worldv,worldv,viewm
Text 10, 10, "X: "+Str$(x vector4(worldv))
Text 10, 25, "Y: "+Str$(y vector4(worldv))
Text 10,40, "Z: "+Str$(z vector4(worldv))
POSITION OBJECT 2, x vector4(worldv),y vector4(worldv),z vector4(worldv)
AUTOMATIC OBJECT COLLISION 2, 2, 1
MeldMesh(1,0,2,0,1)
sync
loop
Function MeldMesh(Obj1#, Limb1#, Obj2#, Limb2#, Mouse_Clicked_Number) `Obj1# and Limb1# are the base or "body" object
If MouseClick()=Mouse_Clicked_Number
Lock vertexdata for limb Obj1#,Limb1#
GetVa=Get vertexdata vertex count()
If memblock exist(1)=0
Make Memblock 1,GetVa*3
endif
For VCounta=0 to GetVa
VerX#=Get vertexdata position X(Vcounta)
VerY#=Get vertexdata position Y(Vcounta)
VerZ#=Get vertexdata position Z(Vcounta)
Set Vector4 2,VerX#,VerY#,VerZ#,0 ` vector 4 has for values for each set of four 1) Orientation, 2) Position, 3) Rotation and 4) Locals
Transform Vector4 2,2,1
Set Vector3 3, X Vector4(2), Y Vector4(2), Z Vector4(2) ` setting this vector 3 with vector 4 values converts local values to real world values
Normalize vector3 3,3
`this adds the vertex positons (XYZ) into the memblock
Write memblock float 1, Vcounta+0, X vector3 (3)
Write Memblock float 1, Vcounta+1, Y Vector3 (3)
Write memblock float 1, Vcounta+2, Z Vector3 (3)
Next VCounta
Unlock Vertexdata
Lock vertexdata for limb Obj2#, Limb2#
GetVb=Get vertexdata vertex count()
For VcountB=0 to GetVb
VerXa#=Get Vertexdata position x(VcountB)
VerYa#=Get Vertexdata position y(VcountB)
VerZa#=Get Vertexdata position z(VcountB)
set vector4 5, VerXa#, VerYa#, VerZa#, 0
Transform vector4 5,5,1
Set Vector3 6, X vector4(5), Y vector4(5), Z vector4(5)
normalize vector3 6,6
MemSize=Get memblock size(1)
Text 10,55, Str$(MemSize)
For MemCount=0 to GetVa
CheckVerX#=memblock float (1,MemCount+0)
CheckVerY#=memblock float (1,MemCount+1)
CheckVerZ#=memblock float (1,MemCount+2)
SET VECTOR3 10, CheckVerX#, CheckVerY#, CheckVerZ#
If OBJECT SIZE(Obj1#)-X VECTOR3(10)=<5 and OBJECT SIZE(Obj1#)-Y VECTOR3(10)=<5 and OBJECT SIZE(Obj1#)-Z VECTOR3(10)=<5
SET VERTEXDATA POSITION Memcount, X VECTOR3(6), Y VECTOR3(6), Z VECTOR3(6)
endif
next memcount
UNLOCK VERTEXDATA
next vcountb
endif
If MEMBLOCK EXIST(1)=1
Delete Memblock 1
endif
Endfunction
Can someone help me out here... I'm kind of lost... many thanks to any who try... really!
EDIT ONCE AGAIN:
OI I don't get it... no one can shed any light on this? Anything at all
-Daryn
EDIT:
okay - now I am doing this
SET DISPLAY MODE DESKTOP WIDTH(), DESKTOP HEIGHT(), 32, 1
SYNC ON : SYNC RATE 0
Make object sphere 1, 10, 20,20
Make Object Sphere 2, 5, 10, 10
AUTOCAM OFF
MA=Make Matrix4(1)
V=Make Vector4(2)
V=Make Vector3(3)
MB=Make Matrix4(4)
V=Make Vector4(5)
V=Make Vector3(6)
ZDepth as float : ZDepth = 10
#constant worldv 7
#constant viewm 8
#constant projectm 9
UpdateVector= MAKE VECTOR3(10)
a=Make vector4(worldv)
a=Make Matrix4(viewm)
a=Make Matrix4(projectm)
#constant CenterX (screen width()/2.0)
#constant CenterY (screen height()/2.0)
`Set camera range 0, 0.01, 3000.0
position camera 0,50,0,50
do
CONTROL CAMERA USING ARROWKEYS 0, 0.5, 0.25
POINT CAMERA 0, OBJECT POSITION X(1), OBJECT POSITION Y(1), OBJECT POSITION Z(1)
sync
`Zooming
object MATRIX4 1,1
object MATRIX4 4,2
VIEW MATRIX4 viewm
PROJECTION MATRIX4 projectm
inc Zdepth, Zdepth*(mousemoveZ()/500.0)
If mouseclick()=2 then TURN OBJECT LEFT 2, 1.0
a=INVERSE MATRIX4 (viewm,viewm)
a=INVERSE MATRIX4 (projectm,projectm)
SET VECTOR4 worldv, (MouseX()-CenterX)/CenterX, (MouseY()-CenterY)/-CenterY,0,1
TRANSFORM VECTOR4 worldv,worldv,projectm
DIVIDE VECTOR4 7, W VECTOR4(7)
set vector4 worldv,x vector4(worldv)*(ZDepth/z vector4(worldv)),y vector4(worldv)*(ZDepth/z vector4(worldv)),ZDepth,1
transform vector4 worldv,worldv,viewm
Text 10, 10, "X: "+Str$(x vector4(worldv))
Text 10, 25, "Y: "+Str$(y vector4(worldv))
Text 10,40, "Z: "+Str$(z vector4(worldv))
POSITION OBJECT 2, x vector4(worldv),y vector4(worldv),z vector4(worldv)
AUTOMATIC OBJECT COLLISION 2, 2, 1
MeldMesh(1,0,2,0,1)
sync
loop
Function MeldMesh(Obj1#, Limb1#, Obj2#, Limb2#, Mouse_Clicked_Number) `Obj1# and Limb1# are the base or "body" object
If MouseClick()=Mouse_Clicked_Number
LOCK VERTEXDATA FOR LIMB Obj1#, Limb1#
ArrayObj1=GET VERTEXDATA VERTEX COUNT()
UNLOCK VERTEXDATA
LOCK VERTEXDATA FOR LIMB Obj2#,Limb2#
ArrayObj2=GET VERTEXDATA VERTEX COUNT()
UNLOCK VERTEXDATA
For FirstVer=0 to ArrayObj1-1
LOCK VERTEXDATA FOR LIMB Obj1#, Limb1#
VaX#=GET VERTEXDATA POSITION X(FirstVer)
VaY#=GET VERTEXDATA POSITION Y(FirstVer)
VaZ#=GET VERTEXDATA POSITION Z(FirstVer)
`Remstart
Set Vector4 2, VaX#, VaY#, VaZ#,0
Transform Vector4 2,2,1
Set Vector3 3, X Vector4(2), Y Vector4(2), Z Vector4(2)
Normalize Vector3 3,3
VaX#=X VECTOR3(3)
VaY#=Y VECTOR3(3)
VaZ#=Z VECTOR3(3)
`remend
UNLOCK VERTEXDATA
For SecVer=0 to ArrayObj2-1
LOCK VERTEXDATA FOR LIMB Obj2#, Limb2#
VbX#=GET VERTEXDATA POSITION X(SecVer)
VbY#=GET VERTEXDATA POSITION Y(SecVer)
VbZ#=GET VERTEXDATA POSITION Z(SecVer)
`Remstart
Set Vector4 5,VbX#, VbY#, VbZ#,0
Transform Vector4 5,5,4
Set Vector3 6, X Vector4(5), Y Vector4(5), Z Vector4(5)
Normalize Vector3 6,6
VbX#=X VECTOR3(6)
VbY#=Y VECTOR3(6)
VbZ#=Z VECTOR3(6)
`Remend
If abs(VbX#-VaX#)=<10.0 or abs(VbX#-VaX#)>0.0 and abs(VbY#-VaY#)=<10.0 or abs(VbY#-VaY#)>0.0 and abs(VbZ#-VaZ#)=<10.0 or abs(VbZ#-VaZ#)>0.0
SET VERTEXDATA POSITION SecVer, VaX#, VaY#, VaZ#
endif
UNLOCK VERTEXDATA
Next SecVer
UNLOCK VERTEXDATA
Next FirstVer
Text 10, 55, "Vertex X: "+Str$(VbX#-VaX#)+", Vertex Y: "+Str$(VbY#-VaY#)+", Vertex Z: "+Str$(VaZ#-VbZ#)
`Text 10, 55, "Vertex X: "+Str$(X VECTOR3(6))+", Vertex Y: "+Str$(Y VECTOR3(6))+", Vertex Z: "+Str$(Z VECTOR3(6))
endif
`delete memblocks
Endfunction
The only thing I can deduce is that it's something to do with the vertices. I've tried leaving them as locals, converting them into 3d space, projecting their positions from the center of both spheres - and nada - all I want them to do is have one static object and the other conform to it when it gets close enough.
If it's something easy that I am over looking, someone point me in the right direction 'cause I've sat and just ran through it in my head and it seems to be right - but this is programming

Anyone, really - just give me a heads up.
Jack and Jill went up a hill to fetch a pale of water... but Jill got tired of his s#%& so she shot him.
