ออโตเดสก์ มายา (Autodesk Maya) ถือเป็นโปรแกรมจัดการภาพสามมิติที่ได้รับความนิยมสูงทั้งในวงการอนิเมะและการออกแบบ
ตัวโปรแกรมถูกออกแบบมาให้ครอบคลุมการทำงานต่างๆมากมายตั้งแต่สร้างภาพสามมิติไปจนถึงทำภาพเคลื่อนไหว มีรายละเอียดมากมายและซับซ้อน
การควบคุมต่างๆโดยทั่วไปแล้วทำผ่านหน้าจอควบคุมซึ่งถูกออกแบบมาอย่างดีให้ใช้งานทำอะไรต่างๆได้สะดวกและสามารถปรับแต่งอะไรได้มากมาย
อย่างไรก็ตามการใช้งานแค่เพียงผ่านหน้าจอควบคุมนั้นก็มีข้อจำกัดอยู่ ไม่สามารถใช้ทำงานบางอย่างได้ หรืออาจทำได้ไม่สะดวกนัก ตรงส่วนนี้อาจจำเป็นต้องอาศัยวิธีการในระดับที่สูงขึ้นไป
การควบคุมโปรแกรมโดยอาศัยการเขียนโค้ดเป็นสิ่งที่จะมาช่วยให้ก้าวข้ามขีดจำกัดนี้
ข้อดีอย่างหนึ่งของโปรแกรมมายาคือมีระบบที่รองรับการสั่งการโปรแกรมด้วยการเขียนโค้ด
สำหรับงานบางประเภทผู้ใช้อาจสามารถทำงานได้โดยไม่ต้องยุ่งกับเรื่องการเขียนโค้ด เลย ที่จริงแล้วมายาเป็นโปรแกรมที่สามารถใช้งานได้โดยแค่กระทำกับหน้าจอโดยตรง และหน้าต่างคำสั่งควบคุมต่างๆโดยที่ไม่จำเป็นต้องพิมพ์โค้ดอะไรเลย ดังนั้นจึงอาจมีคนไม่น้อยที่ใช้มายาจนคล่องโดยที่ไม่เคยยุ่งกับโค้ดเลย
ถ้าเช่นนั้นแล้ว มีความจำเป็นอะไรที่จะต้องมาเขียนโค้ดเพื่อใช้งานโปรแกรมมายา?
นั่นก็เพราะงานบางประเภทหากสามารถเขียนโค้ดได้ก็จะทำให้งานง่ายขึ้นอย่างมาก ลองยกตัวอย่างข้อดีของการเขียนโค้ด
- การเขียนโค้ดสามารถจัดการกับสิ่งที่ต้องมีการทำซ้ำโดยมีรูปแบบที่ตายตัวได้ เช่น ด้วยการใช้ for หรือ while เป็นต้น
- สิ่งที่สร้างขึ้นจากโค้ดสามารถระบุค่าตัวเลขให้เป็นตามที่ต้องการได้ง่ายกว่า สามารถได้ผลที่แม่นยำกว่าการใช้เมาส์ควบคุมบนหน้าจอ
- หากสร้างทุกสิ่งขึ้นด้วยการเขียนโค้ดล้วนๆแล้วเราจะรู้ทุกกระบวนขั้นตอนการ สร้างอย่างละเอียด สามารถย้อนกลับมาดูได้ ในขณะที่ถ้าสร้างด้วยหน้าจอกับหน้าต่างควบคุมอาจเห็นแค่ภาพปัจจุบัน หากให้ย้อนกระบวนการทำใหม่ก็อาจไม่สามารถทำได้ดังเดิม
- สามารถทำงานใหม่ที่มีรูปแบบการดำเนินงานใกล้เคียงกับงานเดิมได้โดยแค่แก้ดัดแปลงโค้ดบางส่วน ไม่จำเป็นต้องเริ่มใหม่ตั้งแต่ต้น
- สามารถเชื่อมโยงกับโปรแกรมอื่นเพื่อทำงานได้กว้างมากขึ้น
- สามารถเขียนโค้ดเพื่อสร้างอินเทอร์เฟซผู้ใช้ในแบบของตัวเองซึ่งอาจอำนวยความสะดวกสำหรับงานที่ตัวเองต้องการใช้
- หากเขียนได้ดีสามารถสร้างเป็นปลั๊กอินที่สร้างอะไรบางอย่างจำเพาะที่เหมาะสำหรับงานตัวเอง และยังอาจแจกจ่ายให้คนอื่นได้ด้วย
ภาษาที่สามารถใช้เขียนโค้ดในโปรแกรมนี้โดยหลักแล้วมีอยู่ ๒ ภาษา คือภาษาไพธอน (Python) และอีกภาษาคือ MEL (Maya Embedded Language)
ภาษา MEL คือภาษาที่ถูกสร้างขึ้นมาเพื่อใช้สั่งการในโปรแกรมมายาโดยเฉพาะ โครงสร้างถูกออกแบบมาให้เข้ากับตัวโปรแกรม
ส่วนภาษาไพธอนนั้นเป็นภาษาระดับสูงที่กำลังเริ่มได้รับความนิยมมากขึ้นเรื่อยๆในยุคหลังๆ ถูกใช้ในงานต่างๆมากมายไม่จำกัดแค่ในมายา
ไพธอนถูกเพิ่มเข้ามาให้สามารถใช้ในมายาได้ในภายหลังตั้งแต่มายารุ่น 8.5 (ปี 2007) เพื่อให้สามารถใช้ได้เช่นกัน
ไม่ว่าจะใช้ภาษาไหนก็สามารถใช้งานคำสั่งแทบทุกอย่างในโปรแกรมมายาได้แทบไม่ต่างกัน แต่ในที่นี้จะเลือกใช้ภาษาไพธอนเป็นหลัก
สาเหตุที่จะเลือกใช้ไพธอนนั้น เพราะดีกว่าในหลายๆแง่ เช่น
- มีโครงสร้างที่เข้าใจง่ายกว่า มีคำสั่งหรือรูปแบบการเขียนที่อำนวยความสะดวกมากกว่า
- มีความเป็นสากลมากกว่า เนื่องจากถูกใช้ในโปรแกรมอื่นโดยทั่วไป คนที่เคยใช้ไพธอนทำอย่างอื่นมาจนชินแล้วพอมาใช้มายาก็ใช้ได้ไม่ยาก หรือหากเริ่มฝึกใช้ไพธอนจากมายาจนคล่องแล้วสามารถเอาไปทำอะไรได้อีกหลาย อย่าง ในขณะที่ MEL เป็นภาษาเฉพาะใช้แค่ในมายา ต้องมาฝึกใหม่หมด
- มีมอดูลชุดคำสั่งเสริมที่ช่วยในการคำนวณหรือจัดการข้อมูลที่หลากหลายกว่า
- มีหลากหลายวิธีในการเขียน พลิกแพลงได้มากกว่า
นอกจากนี้แล้วภาษา C++ ก็เป็นอีกภาษาที่สามารถใช้ได้เช่นกัน แต่ต่างจาก MEL และไพธอนตรงที่ C++ จะไม่สามารถสั่งการโปรแกรมโดยตรงได้ ต้องทำผ่านโปรแกรมอื่นอีกต่อ วิธีการใช้จะยุ่งยากกว่า แม้ว่าจะมีข้อดีบางอย่างเหนือกว่า ในที่นี้จะขอไม่พูดถึง
MEL และไพธอนเป็นภาษาที่แตกต่างกันออกไปอย่างมาก แต่สามารถทำในสิ่งเดียวกันได้ เช่นใน MEL จะสั่งการโดยใช้คำสั่งต่างๆซึ่งมีชื่อต่างกันออกไป แต่ไพธอนสั่งการโปรแกรมโดยใช้ฟังก์ชัน
ฟังก์ชันในที่นี้คือฟังก์ชันคำสั่งที่สร้างขึ้นสำหรับใช้งานในมายาโดยเฉพาะ โดยส่วนใหญ่แล้วจะมีชื่อเหมือนกับคำสั่งในภาษา MEL
บทความทั้งหมดที่จะเขียนต่อไปนี้เป็นเรื่องของการใช้โปรแกรมมายาด้วยการเขียนโค้ดเป็นหลัก จะไม่มีการพูดถึงคำสั่งเบื้องต้นของมายา
พื้นฐานทั้งเรื่องการเขียนโปรแกรม และการใช้โปรแกรมมายานั้น มีแหล่งอ้างอิงที่อื่นเขียนเยอะและละเอียดกว่ามากอยู่แล้ว เช่น
http://www.mesise.com/maya
ส่วนพื้นฐานภาษาไพธอนนั้นอาจไม่จำเป็นต้องมีมาก่อนก็ได้ เนื้อหาออกแบบมาให้สามารถอ่านได้แม้จะไม่เคยรู้ภาษาไพธอนมาก่อน อย่างไรก็ตามจะไม่ได้เก็บรายละเอียดมาก เพราะจะไปเน้นที่การประยุกต์เข้ากับมายามากกว่า
ดังนั้นหากใครต้องการศึกษาพื้นฐานไพธอนก่อนก็สามารถอ่านได้ที่
https://phyblas.hinaboshi.com/saraban/python
อย่างไรก็ตามเนื้อหานี้เป็นไพธอนเวอร์ชัน 3.x ในขณะที่เวอร์ชันที่ใช้ในมายาคือไพธอน 2.7 ดังนั้นอาจมีเนื้อหาบางส่วนที่ไม่เหมือนกัน
ในกรณีนี้จึงอาจควรอ่านบทความนี้เพื่อให้เข้าใจความต่างระหว่างไพธอน 3.x และ 2.x ควบคู่ไปด้วย
https://phyblas.hinaboshi.com/20151217
แต่หากต้องการอ่านเนื้อหาที่เป็นไพธอน 2 ล้วนๆโดยไม่ต้องมาคอยพะวงเรื่องความแตกต่างก็อาจลองหาตามเว็บที่เขียนมานานแล้ว เช่น
https://sites.google.com/site/dotpython
แต่ที่จริงแล้วความแตกต่างระหว่างไพธอน 2 และ 3 นั้นกระทบต่อการใช้งานในมายาค่อนข้างน้อย
และโค้ดทั้งหมดที่ใส่ไว้ในบทความนี้ออกแบบในลักษณะที่ใช้ได้ทั้งในไพธอน 2 และ 3 ไม่ต่างกัน ต่อให้ในอนาคตมายาหันมาใช้ไพธอน 3 แทนก็ยังสามารถนำโค้ดไปใช้ได้โดยไม่ต้องแก้
ดังนั้นข้อมูลเพิ่มเติมเกี่ยวกับพื้นฐานมายาและไพธอนให้อ่านจากเว็บอ้างอิง ส่วนบทความนี้จะสอนแค่การประยุกต์ใช้ไพธอนในมายาเท่านั้น
มายาเป็นโปรแกรมที่มีหลายเวอร์ชัน ความหลากหลายอาจแบ่งออกเป็น ๓ อย่าง ได้แก่
- ปีที่ออก ~~ มายาออกรุ่นใหม่ทุกปี โดยทั่วไปแล้วจะใช้ชื่อรุ่นเป็นปีถัดจากปีที่ออกจริง เช่นมายาที่ออกในปี 2015 มีชื่อว่า maya2016
- ระบบปฏิบัติการที่ใช้ ~~ มายาสามารถใช้ได้ทั้ง windows ทั้ง mac และ linux แต่ละอันจะมีรายละเอียดบางอย่างที่ต่างกันออกไป
- ภาษา ~~ มายาสามารถเลือกใช้ได้หลายภาษา เช่นอังกฤษ จีน ญี่ปุ่น
ซึ่งความหลากหลายนี้อาจทำให้มีรายละเอียดในการใช้งานที่ต่างกันออกไป ที่จะมีผลน้อยสุดคือเรื่องของภาษา เพราะแค่เปลี่ยนข้อความที่แสดงผลทางหน้าจอเท่านั้น เนื้อในไม่ได้ต่างออกไป
ภาพตัวอย่างทั้งหมดจะใช้มายารุ่น 2016 ภาษาญี่ปุ่นใน mac เป็นหลัก
แต่เพื่อให้คนที่ใช้ภาษาอังกฤษสามารถดูแล้วเข้าใจตามไปด้วยได้ในที่นี้จะพยายาม เขียนระบุ ๒ ภาษาควบคู่กันไปเท่าที่จะทำได้ ภาษาที่ใช้ไม่มีผลต่อโปรแกรม สามารถเลือกใช้ภาษาตามที่ตัวเองถนัด
แม้ข้อความจะต่างไปตามภาษา แต่ตำแหน่งปุ่มต่างๆเหมือนกันหมด สามารถดูภาพแล้วทำตามได้
เริ่มจากเปิดโปรแกรมขึ้นมา เปิดมาหน้าจอของมายาจะเป็นแบบนี้ แต่ละเครื่องอาจมีความแตกต่างกันขึ้นกับเวอร์ชันและการปรับแต่งเพิ่มเติม
(คลิกเพื่อดูภาพใหญ่)
อย่างไรก็ตามองค์ประกอบโดยรวมควรจะยังเหมือนกันอยู่ และเนื้อหาที่จะพูดถึงนั้นเป็นส่วนของการเขียนโค้ดเป็นหลัก ซึ่งมีผลน้อย
การรันโค้ดไพธอนในมายานั้นมีอยู่ ๒ วิธีด้วยกัน คือรันจากคอมมานด์ไลน์ (コマンドライン, command line) และรันจากสคริปต์อีดิเตอร์ (スクリプトエディタ, script editor)
คอมมานด์ไลน์นั้นโดยปกติแล้วจะอยู่ด้านล่างสุดของหน้าจอ โปรแกรม เป็นช่องที่สามารถพิมพ์ข้อความลงไปได้ ให้ลองสังเกตดูทางซ้ายของช่องพิมพ์ข้อความจะเห็นมีคำว่า MEL หรือไม่ก็ Python ถ้าหากใครที่เป็น MEL อยู่ก็ให้เลือกกดเพื่อเปลี่ยนเป็น Python
การรันโค้ดทำได้โดยการพิมพ์โค้ดแล้วกด enter
การพิมพ์โค้ดลงในคอมมานด์ไลน์นั้นมีข้อดีคือรวดเร็ว ทำได้ทันที แต่ข้อเสียคือสามารถพิมพ์คำสั่งได้เพียงทีละบรรทัดเท่านั้น หากต้องการเขียนโปรแกรมยาวๆจะต้องใช้สคริปต์อีดิเตอร์
สคริปต์อีดิเตอร์สามารถเปิดได้โดยคลิกที่ปุ่มด้านมุมขวาล่างดังในรูป
เมื่อเปิดขึ้นมาหน้าต่างจะแบ่งเป็นสองส่วน ด้านบนคือส่วนที่แสดงผลลัพธ์การรันโปรแกรม ส่วนด้านล่างคือพื้นที่พิมพ์โค้ดโปรแกรม
ส่วนพิมพ์โค้ดจะเห็นว่ามีแท็บย่อยอยู่สองอันคือ MEL กับ Python ให้เลือกที่ Python
การรันโค้ดทำได้โดยการกดที่เครื่องหมายลูกศรสามเหลี่ยมที่หันไปทางขวาซึ่งอยู่ ด้านบน หรือไม่ก็กด ctrl+enter (ถ้าเป็นใน mac ต้องกด command+enter)
ลองเริ่มต้นโดยการพิมพ์โค้ดตามนี้ลงไปแล้วกดรัน (สิ่งที่อยู่หลังเครื่องหมาย # เป็นคอมเมนต์ ไม่ต้องลอกหรือพิมพ์ตามไปด้วยก็ได้)