At this site I want to introduce some of my 3ds max old basic plugins. This are just basic examples how you can make plugins with max script and create your category in 3ds max. This max script plugins I made long time ago with max 9 as I was a student. I will be very happy, if you see my models at this site and turbosquid.
List of some 3ds max plugins:
Plane
plugin simpleObject Plane
name:"Plane"
category:"Turbo3dModels"
classID:#(0xe855567c, 0xbcd73b8b)
(
parameters main rollout:params
(
width type:#float ui:width default:1
hight type:#float ui:hight default:1
)
rollout params "Plane"
(
spinner width "Width" range:[0,90,1]
spinner hight "Hight" range:[0,90,1]
)
on buildMesh do (
vert_array = #()
face_array = #()
v1 = [ 1*width , 1*hight , 0]
v2 = [-1*width , 1*hight , 0]
v3 = [ 1*width , -1*hight , 0]
v4 = [-1*width , -1*hight , 0]
append vert_array v1
append vert_array v2
append vert_array v3
append vert_array v4
append face_array [1,2,3]
append face_array [3,2,4]
setMesh mesh verts:vert_array faces:face_array
)
tool create
(
on mousePoint click do
(
case click of
(
1: coordsys grid (nodeTM.translation = gridPoint)
)
)
on mouseMove click do
(
case click of
(
2: ((width = abs(gridDist.x))
(hight = abs(gridDist.y)))
3: (#stop)
)
)
)
)
Segmented Plane
plugin simpleObject SegmentedPlane
name:"SegmentedPlane"
category:"Turbo3dModels
"
classID:#(0xe855567c, 0xbcd73b8b)
(
parameters main rollout:params
(
seg_width type:#integer ui:seg_width default:3
seg_hight type:#integer ui:seg_hight default:3
width type:#float ui:width default:1
hight type:#float ui:hight default:1
)
rollout params "SegmentedPlane"
(
spinner seg_hight "seg_hight" range:[2,100,10] type:#integer
spinner seg_width "seg_width" range:[2,100,10] type:#integer
spinner width "Width" range:[-1000,1000,1] type:#float
spinner hight "Hight" range:[-1000,1000,1] type:#float
)
on buildMesh do (
vert_array = #()
face_array = #()
for i=0 to seg_width by 1 do
(
for j=0 to seg_hight by 1 do
(
v = [ (i*width)/seg_width, (j*hight)/seg_hight , 0 ]
print v
append vert_array v
)
)
if (width > 0 and hight > 0) or (width < 0 and hight < 0) then (
for i=0 to seg_width-1 by 1 do
(
for j=1 to seg_hight by 1 do
(
append face_array [i*(seg_hight+1)+j, (i+1)*(seg_hight+1)+j, (i+1)*(seg_hight+1)+j+1]
append face_array [i*(seg_hight+1)+j, (i+1)*(seg_hight+1)+j+1, i*(seg_hight+1)+j+1]
)
)
) else (
for i=0 to seg_width-1 by 1 do
(
for j=1 to seg_hight by 1 do
(
append face_array [i*(seg_hight+1)+j, i*(seg_hight+1)+j+1, (i+1)*(seg_hight+1)+j+1]
)
)
)
setMesh mesh verts:vert_array faces:face_array
)
tool create
(
on mousePoint click do
(
case click of
(
1: coordsys grid (nodeTM.translation = gridPoint)
)
)
on mouseMove click do
(
case click of
(
2: ( (width = gridDist.x)
(hight = gridDist.y) )
3: (#stop)
)
)
)
)
Box
plugin simpleObject NewBox
name:"Box"
category:"Turbo3dModels
"
classID:#(0x4ef2985b, 0x5eda3ff0)
(
parameters main rollout:params
(
width type:#float ui:width default:1
hight type:#float ui:hight default:1
lenght type:#float ui:lenght default:1
)
rollout params "Box"
(
spinner width "Width" range:[0,90,1]
spinner hight "Hight" range:[0,90,1]
spinner lenght "Lenght" range:[-90,90,1]
)
on buildMesh do (
vert_array = #()
face_array = #()
v1 = [ 1*width , 1*hight , 0]
v2 = [-1*width , 1*hight , 0]
v3 = [ 1*width , -1*hight , 0]
v4 = [-1*width , -1*hight , 0]
v5 = [ 1*width , 1*hight , 1*lenght]
v6 = [-1*width , 1*hight , 1*lenght]
v7 = [ 1*width , -1*hight , 1*lenght]
v8 = [-1*width , -1*hight , 1*lenght]
append vert_array v1
append vert_array v2
append vert_array v3
append vert_array v4
append vert_array v5
append vert_array v6
append vert_array v7
append vert_array v8
if lenght > 0 then (
append face_array [2,1,3]
append face_array [2,3,4]
append face_array [3,7,4]--
append face_array [8,4,7]--
append face_array [7,3,1]
append face_array [5,7,1]
append face_array [5,6,8]--
append face_array [5,8,7]--
append face_array [2,5,6]
append face_array [1,2,5]
append face_array [4,8,6]--
append face_array [2,4,6]--
) else (
append face_array [1,2,3]
append face_array [3,2,4]
append face_array [7,3,4]--
append face_array [4,8,7]--
append face_array [3,7,1]
append face_array [7,5,1]
append face_array [6,5,8]--
append face_array [8,5,7]--
append face_array [5,2,6]
append face_array [2,1,5]
append face_array [8,4,6]--
append face_array [4,2,6]--
)
setMesh mesh verts:vert_array faces:face_array
)
tool create
(
on mousePoint click do
(
case click of
(
1: coordsys grid (nodeTM.translation = gridPoint)
)
)
on mouseMove click do
(
case click of
(
2: ((width = abs(gridDist.x))
(hight = abs(gridDist.y)))
3: ( lenght = gridDist.z )
4: (#stop)
)
)
)
)
Cylinder
plugin simpleObject Cylinder name:"Cylinder" category:"CGR2" classID:#(0xeb2ad4f, 0x190a419f) ( parameters main rollout:params ( segments type:#integer ui:segments default:5 radius type:#float ui:radius default:1.0 height type:#float ui:height default:1.0 ) rollout params "Zilinder" ( spinner segments "Segments " range:[2,500,10] type:#integer spinner height "height " range:[-100,100,0] type:#float spinner radius "Radius " range:[0,100,0] type:#float ) on buildMesh do ( segm = segments + 1 vert_array = #() face_array = #() for i=0 to 1 by 1 do( append vert_array [0, i*height , 0] for j=0 to segments by 1 do( winkel = (j * (360.01 / segments) ) vx = cos(winkel) * radius vy = i*height vz = sin(winkel) * radius append vert_array [vx, vy, vz] ) ) if height > 0 then ( for i=1 to segments by 1 do( append face_array[1,i+1,i+2 ] ) for i=1 to segments by 1 do( append face_array[i+1, i+segments+3, i+2 ] append face_array[i+2, i+segments+3, i+segments+4 ] ) for i=1 to segments by 1 do( append face_array[segments + i + 3, segments + 3 , segments + i + 4 ] ) ) else ( for i=1 to segments by 1 do( append face_array[i+1,1,i+2 ] ) for i=1 to segments by 1 do( append face_array[i+segments+3, i+1, i+2 ] append face_array[i+segments+3, i+2, i+segments+4 ] ) for i=1 to segments by 1 do( append face_array[segments + 3, segments + i + 3 , segments + i + 4 ] ) ) setMesh mesh verts:vert_array faces:face_array ) tool create ( on mousePoint click do ( case click of ( 1: coordsys grid (nodeTM.translation = gridPoint) ) ) on mouseMove click do ( case click of ( 2: (radius = gridDist.x) 3: (height = gridDist.y) 4: (#stop) ) ) ) )
Sphere
plugin simpleObject Bal name:"Bal" category:"CGR2" classID:#(0xeb2ad4f, 0x190a419f) ( parameters main rollout:params ( segments type:#integer ui:segments default:5 radius type:#float ui:radius default:1 rings type:#integer ui:rings default:4 ) rollout params "Ball" ( spinner segments "Segments " range:[3,500,10] type:#integer spinner rings "Rings " range:[3,10000,0] type:#integer spinner radius "Radius " range:[0,10000,0] type:#float ) on buildMesh do ( segm = segments + 1 if segm > 2 then ( vert_array = #() face_array = #() anzahlPunkte = segments * rings for i=0 to rings - 1 by 1 do( ringRadius = sin(i * 180 / (rings - 1)) * radius ringY =cos(i * 180 / (rings - 1)) * radius for j=0 to segm - 1 by 1 do( winkel = (j * 360) / (segm - 1) vx =cos(winkel) * ringRadius vy = ringY vz = sin(winkel) * ringRadius append vert_array [vx, vy, vz] ) ) for i=1 to rings-1 by 1 do( ring = 0 seg = 0 for j=1 to segm - 1 by 1 do( if i == rings - 1 then ( ring = 0 ) else ( ring = i ) if j == segm then ( seg = 0 ) else ( seg = j ) append face_array[ ring*segm+seg,(ring+1)*segm+seg+1, (ring+1)*segm+seg] append face_array[ ring*segm+seg,ring*segm+seg+1,(ring+1)*segm+seg+1] ) ) for i=0 to rings by 1 do( for j=0 to segments by 1 do( ring = 0 if i == rings - 1 then ( ring = 0 ) else ( ring = i ) seg = 0 if j == segments - 1 then ( seg = 0 ) else ( seg = j ) ) ) ) setMesh mesh verts:vert_array faces:face_array ) tool create ( on mousePoint click do ( case click of ( 1: coordsys grid (nodeTM.translation = gridPoint) ) ) on mouseMove click do ( case click of ( 2: (radius = abs(gridDist.x)) 3: (#stop) ) ) ) )
Haus
plugin simpleObject Hasus name:"Haus" category:"CGR2" classID:#(0x3e2cb992, 0x65416766) ( parameters main rollout:params ( width type:#float ui:width default:1 hight type:#float ui:hight default:1 lenght type:#float ui:lenght default:1 dach type:#float ui:dach default:1 ) rollout params "Haus" ( spinner width "Width" range:[0,90,1] spinner hight "Hight" range:[0,90,1] spinner lenght "Lenght " range:[0,90,1] spinner dach "Dach " range:[0,90,1] ) on buildMesh do ( vert_array = #() face_array = #() v1 = [ 1*width, 1*hight, -1*lenght] v2 = [-1*width, 1*hight, -1*lenght] v3 = [-1*width, 1*hight, 1*lenght] v4 = [ 1*width, 1*hight, 1*lenght] v5 = [ 1*width, -1*hight, -1*lenght] v6 = [-1*width, -1*hight, -1*lenght] v7 = [-1*width, -1*hight, 1*lenght] v8 = [ 1*width, -1*hight, 1*lenght] v9 = [ 0, 0 , 2*lenght] append vert_array v1 append vert_array v2 append vert_array v3 append vert_array v4 append vert_array v5 append vert_array v6 append vert_array v7 append vert_array v8 append vert_array v9 append face_array [1,2,3] append face_array [3,4,1] append face_array [1,2,6] append face_array [1,6,5] append face_array [1,4,5] append face_array [5,4,8] append face_array [3,6,2]-- append face_array [3,7,6]-- append face_array [6,5,7] append face_array [7,5,8] append face_array [7,4,3] append face_array [8,4,7] --dach append face_array [1,2,9] append face_array [2,3,9] append face_array [3,4,9] append face_array [4,1,9] setMesh mesh verts:vert_array faces:face_array ) tool create ( on mousePoint click do ( case click of ( 1: coordsys grid (nodeTM.translation = gridPoint) ) ) on mouseMove click do ( case click of ( 2: (width = abs(gridDist.x)) 3: (hight = abs(gridDist.y)) 4: (lenght = abs(gridDist.z)) 5: (#stop) ) ) ) )
Crone
plugin simpleObject Crone name:"Crone" category:"CGR2" classID:#(0xeb2ad4f, 0x190a419f) ( parameters main rollout:params ( segments type:#integer ui:segments default:5 radius type:#float ui:radius default:1 rings type:#integer ui:rings default:4 ) rollout params "Crone" ( spinner segments "Segments " range:[2,500,10] type:#integer spinner rings "Rings " range:[0,10000,0] type:#integer spinner radius "Radius " range:[0,10000,0] type:#float ) on buildMesh do ( vert_array = #() face_array = #() anzahlPunkte = segments * rings for i=0 to rings - 1 by 1 do( ringRadius = sin(i * 180 / (rings - 1)) * radius ringY =cos(i * 180 / (rings - 1)) * radius for j=0 to segments - 1 by 1 do( winkel = (j * 360) / (segments - 1) vx =cos(winkel) * ringRadius vy = ringY vz = sin(winkel) * ringRadius append vert_array [vx, vy, vz] ) ) for i=0 to segments - 1 by 1 do( if i == segments - 1 then ( seg = segments+1 ) else ( seg = segments+i+2 ) ) for i=1 to 1 by 1 do( ring = 0 seg = 0 for j=1 to segments - 1 by 1 do( print i print j if i == rings - 1 then ( ring = 0 ) else ( ring = i ) if j == segments then ( seg = 0 ) else ( seg = j ) append face_array[ ring*segments+seg,(ring+1)*segments+seg,(ring+1)*segments+seg+1] ) ) for i=0 to rings by 1 do( for j=0 to segments by 1 do( ring = 0 if i == rings - 1 then ( ring = 0 ) else ( ring = i ) seg = 0 if j == segments - 1 then ( seg = 0 ) else ( seg = j ) ) ) setMesh mesh verts:vert_array faces:face_array ) tool create ( on mousePoint click do ( case click of ( 1: coordsys grid (nodeTM.translation = gridPoint) ) ) on mouseMove click do ( case click of ( 2: (radius = abs(gridDist.x)) 3: (#stop) ) ) ) )
Recent Comments