An-Cadsolutions      Imgsystems

Kirjoittaja Aihe: Motion Builder Scriptaus Tunteita  (Luettu 203 kertaa)

xcx

  • Administrator
  • *****
  • Viestejä: 2278
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Motion Builder Scriptaus Tunteita
« : Elokuu 18, 2010, 10:13:57 pm »
Nyt on työn alla hiukan isompi Motion Builder pulikka, joten ajattelin samalla hiukan keräillä tuntemuksia MoBu Python naksuttelusta.

Ihan ensin kommentoidaan hiukan scripti editoria, joka MoBussa on turvallisen kehnoa laatua, kuten yleensäkin näiden softien omat editorit ovat. MoBussa on kuitenkin välisivut ja värikoodaus, mutta siinä se sitten onkin. Eclipse ja siihen PyDev laajennus toki antaa paljon enemmän featureita, mutta siinä joutuu sitten loikkimaan kahden softan välillä, joka on aina keljua touhua.

Itse MoBun scriptaaminen on varsin simppeliä aloittaa. Ei tarvitse tehdä mitään erikoista, sen kun vain kirjoittaa scriptin ja ajaa sen. MoBun mukana tulee mini Python, mutta jos koneessa on Python asennettuna niin MoBu käyttää sitä. Pythonin asentaminen on varsin hyvä ajatus heti kärkeen, itse käytän versiota 2.6.

Hiukan highlightteja
 - Erittäin ikävästi MoBu jäädyttää pääsoftan, kun scriptattu ikkuna avautuu. Scripti ikkunoita ei voi myöskään olla useampia, joka on erittäin tylsää.
 - Supporttia ei ole .NET:lle tai millekään muulle kielelle, kuin Pythonille.
 - MoBun oma UI API Pythonille on varsin rajallinen, mutta riittää kuitenkin useimpiin tarpeisiin. Pythonin kautta voidaan toki käyttää Pythonille saatavia UI pulikoita, mutta jos mielii käyttää MoBun ui sälää niin on pysyttävä MoBun tarjonnassa.
 - Ulkoisten ohjelmien ajaminen on Pythonin kautta toki mahdollista, joka on varsin tärkeää tiettyjen systeemien integroinnissa, kuten Perforcen.
 - XML kaman käsittely onnistuu, joskin käyttämäni ElementTree ei taida supportaa namespaceja. Pitää tätä tutkia vielä lisää, mutta Pythonille on moniakin eri XML parsereita.
 - Python API on varsin kattava ja tuntuu riittävältä. Story trackeihin ja subtrackeihin pääsee hyvin käsiksi, myös characteriin ja normi scene sälään. Keyframeja saa edattuja ja luotua samoin obuja. Ainakin kaikki perusasiat on koplattavissa scriptillä. Itse en ole vielä törmännyt mihinkään mitä ei saisi scriptillä hyplistellä.
 - Pythonin moduulit ei aina tunnu latautuvan uudestaan vaikka scriptin uudestaan ajaisikin. Ja pitää käyttää hämmentävää reload( module ) komentoa. Tässä kohtaa on jotain mitä en Pythonista tiedä. Jostain syystä Python katsoo ettei tätä moduulia tarvitse ladata uudestaan :). Pitää sitäkin hiukan lueskella, että mitä se Python oikein touhuaa pellin alla. Sille löytynee joku järkevä selitys.
 - Pythonista itsestään voi olla montaa mieltä ja itse olen sitä mieltä, ettei sitä olisi ikinä pitänyt keksiä. Kuitekin on silti tunnustettava, että se tuntuu varsin kehittyneeltä scriptikieleltä. Varsinkin minuun teki vaikutuksen hyvinkin kehittynyt oliopohjaisuus. Kuitenkin pieni ärsytys on jokaisella methodilla on oltava ekana parametrina saman luokan instanssi. Onneksi sitä ei tarvitse huomioida kutsuttaessa, mutta se tuntuu turhalta apinan hommalta kirjoittaa joka methodiin :).
 - Yllättäen ihastuin imp moduuliin. Oli varsin mukavaa ladata moduuli ajon aikana ja saada siihen oma handle. Tavallisesti scriptikielessä olisi vain pitänyt ladata koko roska globaaliin scopeen ja taistella sitten nimi konfliktien kanssa. Pythonissa kuitenkin sai mukavasti ladattua rojua ajon aikana siististi.
 - Jos tavallisesti olet tottunut tekemään packagen vain tekemällä kansion ja heittämällä scriptit sinne ja kutsut niitä sitten folder.script. Niin pythonissa kansioon pitää laittaa __init__.py tiedosto :). Ihmettelin pitkään miksi moduuli ei lataannu ennen, kuin alennuin lukemaan dokuja :).
Technical Artist - Remedy Games
http://www.verajankorva.com

xcx

  • Administrator
  • *****
  • Viestejä: 2278
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: Motion Builder Scriptaus Tunteita
« Vastaus #1 : Elokuu 18, 2010, 11:07:19 pm »
Pieni lukuhetki auttoi ymmärtämään miksi moduulit ei lataannu uudestaan.

Python lataa moduulin vain kerran niin kauan kuin Python tulkki on auki. Jos muuttaa moduulin lähdekoodia niin Python ei sitä osaa tunnistaa eikä lataa moduulia uudestaan, joten se pitää ladata erikseen eri komennolla. Sinänsä ihan järkevääkin, että tulkki ei suotta lataa samaa filua uudestaan, mutta ikävää devausvaiheessa, jossa lähdekoodi kaiken aikaa muuttuu. Tietääkö joku saako tulkin esim. johonkin debug moodiin tai jotain jossa moduulit aina ladattaisiin uudestaan?
« Viimeksi muokattu: Elokuu 18, 2010, 11:18:31 pm kirjoittanut xcx »
Technical Artist - Remedy Games
http://www.verajankorva.com

xcx

  • Administrator
  • *****
  • Viestejä: 2278
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: Motion Builder Scriptaus Tunteita
« Vastaus #2 : Elokuu 19, 2010, 04:48:51 pm »
XMLn kirjoittamista tänään.

XMLn kirjoittamiseen minidom tuntuu mukavan simppeliltä. Tosin teksti formatointi jättää toivomisen varaa, mutta palikka tekee kuitenkin toimivaa XML dataa. Tavallisesti XML:n kirjoittaminen vaatii jonkin verran asetusten säätämistä, mutta minidom Pythonissa antaa hyvin simppelin tien. Kenties joissain tapauksissa minidom on liiankin yksinkertaistettu, mutta perus xml tiedosto syntyy kivuttomasti. Motion Builder ei aiheuta aiheessa mitään ongelmaa ja perus filedialogit löytyy MoBun pyfbsdk moduulista.
Technical Artist - Remedy Games
http://www.verajankorva.com

xcx

  • Administrator
  • *****
  • Viestejä: 2278
  • Sukupuoli: Mies
    • Profiili
    • Verajankorva.com
    • Sähköposti
Vs: Motion Builder Scriptaus Tunteita
« Vastaus #3 : Elokuu 23, 2010, 11:22:32 am »
ElementTree ja XPath, jos aikaisemmin sanoin, että ElementTree on ihan jees niin otan sanani takaisin. ElementTree näyttäisi tukevan XPathia hyvin heikoisti ja vähänkin monimutkaisempi XPath query ei vaan toimi esim. address[street='katu123']/Name ei toimi.
Technical Artist - Remedy Games
http://www.verajankorva.com