keskiviikko 21. syyskuuta 2016

sunnuntai 4. syyskuuta 2016

3ds Max: MaxScriptin perusteet

Lähteet: https://youtu.be/HTk8Rh0a5ys ja https://youtu.be/3Z1iGHwpsrk

F11: MaxScript Listener

MacroRecorder -> Enable, jolloin Listener listaa kaikki Maxissa tehdyt toiminnot.

$.handle = on: valitun teapot-mallin handle-objekti laitetaan päälle.

Myös useampi kuin yksi malli voi olla valittuna, jolloin maxscript-käskyt tehdään kaikille malleille, jos koodirivissä on $-merkki.

Tools -> Evaluate All (ctrl + E) suorittaa kirjoitetun skriptin.


Kun kirjoitetaan:

myVariable = on
$.handle = myVariable
$.spout = myVariable

...voidaan muuttuja myVariablea määrittämällä käsitellä kaikkia ko. muuttujaa käyttäviä objekteja.


Melkein kaikkia malleihin liittyviä asioita voi muokata maxscriptin kautta. Kaikki käskyt löytyvät Help-valikosta.

print $ tekee listan kaikista valittuna olevista malleista. Jos $-merkin perään lisää [2], näytetään ainoastaan valinta-arrayn toinen malli.

Esim. $[4].wirecolor = blue muuttaa valinnan neljännen objektin wirecolorin siniseksi.


Kun kirjoitetaan:

for i in 1 to selection.count do
(
    $[i].lid = false
)

...otetaan kunkin valitun teapot-objektin lid-objekti pois päältä.


Kun kirjoitetaan:

for i in 1 to selection.count do
(
    if$[i].lid == true then
    (
        $[i].wirecolor = blue
    )
    else
    (
        $[i].wirecolor = red
    )
)
...muutetaan kunkin valitun objektin wirecolor-väri siniseksi, jos lid-objekti on päällä.

Skriptin saa toolbarin nappulaksi valitsemalla kaikki koodirivit ja siirtämällä ne työkalupalkkiin.

Makrot tallennetaan usermacros-kansioon.


try (closeRolloutFloater RolloutFloaterTemplate) catch() //sulkee vanhan ikkunan, jos skripti suoritetaan uudestaan ja luodaan uusi ikkuna.

rollout RolloutTemplate "Test" //luo Test-nimisen rolloutin.
(
    button myButton "Hey!" //luo painikkeen Hey-tekstillä ko. rolloutiin.

    on myButton pressed do //kun painiketta painetaan...
    (
        box() //...luodaan laatikko.
    )
)

RolloutFloaterTemplate = newrolloutfloater "test" 175 65 //luo test-nimisen 175 x 65 -kokoisen ikkunan
addrollout rolloutTemplate RolloutFloaterTemplate //lisää luodun rolloutin luotuun ikkunaan.


Jos importatessa maxiin objekteja tulee läjä jättimäisiä point helpereitä, jotka pitää tehdä pienemmiksi, niin sen sijaan, että yksitellen muuttaisi kunkin koon, valitaan kaikki ja kirjoitetaan:

$.size = 5 ja evaluoidaan, jolloin kaikkien kooksi tulee 5.

-------------------------

Jos halutaan muuttaa valittuja objekteja esim. niin, että kunkin kokoa muutetaan randomilla, ei riitä, että kirjoittaa $.size = random 2 10, koska tällöin koko valinta muutetaan randomilla saman kokoiseksi. Sen sijaan pitää tehdä for-loop:

for i in 1 to selection.count do
(
    selection[i].size = random 2 10
)

i = the iteration through the loop of objects
1 = one by one
selection.count = valinta ja sen määrä

Jos kirjoitetaan:

showproperties $

...tulostetaan kaikki asetukset, joita voidaan maxscriptillä muuttaa.

Valitun objektin modifierin asetukset saa näkyville, kun kirjoitetaan:

showproperties $.Displace.

Kun kirjoitetaan:

$.Displace.strength = 10

...valitun objektin displace-modifierin strengthiksi laitetaan 10.

Kun kirjoitetaan:

newDisplace = displace strength:10 //muuttuja, jossa Displace-modifierin strengthin arvoksi laitetaan 10
addmodifier $ newDisplace //lisätään valitulle objektille ($) se modifier niillä asetuksilla, joka on newDisplace-muuttujassa.

Kun kirjoitetaan:

newCellural = cellural size:(random 1 20) //muuttuja, jossa on cellular-tekstuuri koolla 1-20
newDisplace = displace strength:10
addmodifier $ newDisplace
newDisplace.map = newCellular //Displace-modifierin mapiksi laitetaan newCellular-muuttuja käskyineen