sync on
sync rate 60
rem load object "shape.x",1
make object cube 1,10
clone object 2,1
bigger(2,2,0,10)
set object wireframe 2,1 : color object 2,rgb(0,255,0)
do
ax#=wrapvalue(ax#+mousemovey()*0.2)
ay#=wrapvalue(ay#+mousemovex()*0.2)
rotate camera ax#,ay#,0
move camera (upkey()-downkey())*2
sync
loop
function bigger(objet,plusx#,plusy#,plusz#)
make mesh from object 1,objet
make memblock from mesh 1,1
vert=memblock dword(1,8)
dim check(vert) : `si on s'en est deja occupé
dim vertex(0) : `numero des sommets
rem on regarde tous les sommets
for v=0 to vert-1
rem si on l'a pas deja vu
if check(v)=0
check(v)=1
sommets=0
mempos=v*32+12
rem on garde ses positions et ses normales
x#=memblock float(1,mempos)
y#=memblock float(1,mempos+4)
z#=memblock float(1,mempos+8)
nx#=memblock float(1,mempos+12)
ny#=memblock float(1,mempos+16)
nz#=memblock float(1,mempos+20)
vertex(0)=v
rem recherche des sommets confondus
for vv=0 to vert-1
if v<>vv and check(vv)=0
newpos=vv*32+12
newx#=memblock float(1,newpos)
newy#=memblock float(1,newpos+4)
newz#=memblock float(1,newpos+8)
if x#=newx# and y#=newy# and z#=newz#
rem on en trouve un
inc sommets
while array count(vertex(0))<sommets
array insert at bottom vertex(0)
endwhile
check(vv)=1
vertex(sommets)=vv
rem on ajoute les composantes de la normale aux anciennes (on fera la moyenne plus tard)
nx#=nx#+memblock float(1,newpos+12)
ny#=ny#+memblock float(1,newpos+16)
nz#=nz#+memblock float(1,newpos+20)
endif
endif
next vv
rem on calcule la nouvelle position des sommets confondus
newx#=x#+(nx#*plusx#/sommets)
newy#=y#+(ny#*plusy#/sommets)
newz#=z#+(nz#*plusz#/sommets)
rem on applique les changements
for s=0 to sommets
pos=vertex(s)*32+12
write memblock float 1,pos,newx#
write memblock float 1,pos+4,newy#
write memblock float 1,pos+8,newz#
next s
endif
next v
rem on refait le nouvel objet
make mesh from memblock 1,1
delete object objet
make object objet,1,0
rem on supprime tout ce qui ne sert plus a rien
delete mesh 1 : delete memblock 1
undim check()
undim vertex(0)
endfunction
Now, you can change the size for each axis
.
Quote: " Does it also works with complex 3d models?"
Yes it does
Quote: "some faces will start to overlap"
Sure, but I don't think it's really important
.