Hi there.
When we export an object from any 3D program, the center of the object, is not the center of the 3D space. Even exporting just a box, if we don't position the box in coordinates 0,0,0 then it will rotate with a wrong pivot.
Here's an example of a box with an offset center made in Dbpro.
autocam off
sync on
sync rate 60
make object sphere 1,1
make object box 2,5,5,5
offset limb 2,0,20,0,0
position camera -30,30,-30
point camera 0,0,0
do
set cursor 0,0
print "press spacekey to rote box in 3D space"
print "press controlkey to yrotate object"
if spacekey() then rt#=rt#+2:yrotate object 2,rt#
if controlkey() then rtt#=rtt#+5 :rotate limb 2,0,0,rtt#,0
sync
loop
To make Barry Pythagoras example, we could make it all in Dbpro...something like this:
autocam off
sync on
rem MAKING THE MAIN MESH ************************************************************
for i= 1 to 3
make object box i,3,20,1
offset limb i,0,0,8,0
next i
zrotate object 2,-15
zrotate object 3,15
move object up 1,0.5
perform csg difference 1,2:delete object 2
perform csg difference 1,3:delete object 3
scale object 1,70,200,0.01
offset limb 1,0,0,1,0 rem reseting position to 0,1,0
make mesh from object 1,1 :delete object 1 rem getting the mesh for the final object
`*************************************************************************************
`WE HAVE 45 LIMBS, SO WE DIVIDE 360/45 = 8
for i=1 to 45
make object i,1,1
zrotate object i,i*8
move object up i,8
next i
`NOW WE MAKE A MESH OF EVERY OBJECT AND ADD AS LIMBS TO ANOTHER OBJECT
rem empty object
make object triangle 100, 0,0,0, 0,0,0, 0,0,0 rem empty object
for i= 1 to 45
make mesh from object i,i
add limb 100,i,i
offset limb 100,i,object position x(i),object position y(i),0
delete object i
next i
position camera 0,0,60
point camera 0,0,0
make light 1
position light 1,0,0,100
lm=1
do
ink rgb(255,255,0),0
set cursor 0,0
print "Press Spacekey to change limb"
print
print "LIMB ",lm
print limb position x(100,lm)
print limb position y(100,lm)
print limb position z(100,lm)
if spacekey() then lm=lm+1:sleep 300 :if lm>45 then lm=1
color object 100,rgb(255,255,0)
color limb 100,lm,rgb(255,0,0)
sync
loop
We have to texture every limb, the same that we do in any 3D program.
Cheers.
I'm not a grumpy grandpa
