Last active
April 21, 2019 23:17
-
-
Save Arahnoid/bb3641ac749f15076f40 to your computer and use it in GitHub Desktop.
#3dmax
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Randomly jiggle elements within an object | |
-- http://forums.cgsociety.org/archive/index.php?t-1030430.html | |
-- (c) 2012 Created by 3ak (Alexander Loboda) | |
obj = $ | |
jitter = 2.0 | |
numfaces = polyop.getnumfaces obj | |
allfacearr = #{1..numfaces} | |
for i = 1 to numfaces do | |
( | |
if allfacearr[i] then ( | |
elemarr = polyop.getElementsUsingFace obj i | |
allfacearr = allfacearr - elemarr | |
elemarr = elemarr as array | |
vertarr = #{} | |
for j = 1 to elemarr.count do | |
vertarr += polyop.getEdgesUsingVert obj elemarr[j] | |
polyop.moveVert obj vertarr (random [-jitter,-jitter,-jitter] [jitter, jitter, jitter]) | |
) | |
)' | |
-- and here is another quick script that does movement, rotation and scaling of elements of the poly object. | |
-- select your poly object, modify vars in the begining of the script and run it. | |
-- (c) 2012 Created by 3ak (Alexander Loboda) | |
-- To do list: use tm matrices instead | |
obj = $ | |
jitter = 2 | |
minangle = 0.0 | |
maxangle = 360 | |
minscale = 0.5 | |
maxscale = 1.5 | |
numfaces = polyop.getnumfaces obj | |
allfacearr = #{1..numfaces} | |
for i = 1 to numfaces do | |
( | |
if allfacearr[i] then | |
( | |
elemarr = polyop.getElementsUsingFace obj i | |
allfacearr = allfacearr-elemarr | |
elemarr = elemarr as array | |
vertarr = #{} | |
for j = 1 to elemarr.count do | |
( | |
vertarr += polyop.getvertsusingFace obj elemarr[j] | |
) | |
vertarr2 = vertarr as array | |
pivt = [0,0,0] | |
for j = 1 to vertarr2.count do ( pivt += polyop.getvert obj vertarr2[j] ) | |
pivt /= vertarr2.count | |
rot = (angleaxis (random minangle maxangle) (random [-1.0,-1.0,-1.0] [1.0,1.0,1.0])) as quat | |
scl = random minscale maxscale | |
for j = 1 to vertarr2.count do | |
( | |
vert = polyop.getvert obj vertarr2[j] | |
vertlocal = (vert - pivt)*scl | |
vert = (vertlocal*rot)+pivt | |
polyop.setvert obj vertarr2[j] vert | |
) | |
polyop.movevert obj vertarr (random [-jitter,-jitter,-jitter] [jitter, jitter, jitter]) | |
) | |
) | |
fn moveElements oPoly x y z = | |
( | |
if (classOf oPoly != Editable_Poly) do throw "Wrong input in function: moveElements()" | |
faceArr = getFaceSelection oPoly | |
if faceArr do ( | |
elemArr = polyop.getElementsUsingFace obj i | |
faceArr = faceArr - elemArr | |
elemArr = elemArr as array | |
vertArr = #{} | |
for i=1 to elemArr.count do | |
vertArr += polyop.getVertsUsingFace oPoly elemArr[i]; | |
polyop.moveVert oPoly vertArr [x,y,z] | |
) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment