φυβλαςのβλογ
phyblas的博客



maya python เบื้องต้น บทที่ ๑: บทนำ
เขียนเมื่อ 2016/03/10 15:35
แก้ไขล่าสุด 2023/04/27 14:13

ออโตเดสก์ มายา (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)



ลองเริ่มต้นโดยการพิมพ์โค้ดตามนี้ลงไปแล้วกดรัน (สิ่งที่อยู่หลังเครื่องหมาย # เป็นคอมเมนต์ ไม่ต้องลอกหรือพิมพ์ตามไปด้วยก็ได้)

import maya.cmds as mc # นำเข้ามอดูลชุดคำสั่งหลักของมายาไพธอน
mc.optionVar(fv=('gridSize',100)) # ปรับขอบเขตของเส้นกริดเป็น 100
mc.optionVar(fv=('gridSpacing',10)) # ปรับระยะห่างของเส้นกริดหลักเป็น 10
mc.optionVar(fv=('gridDivisions',10)) # ปรับจำนวนเส้นกริดย่อยเป็น 10
mc.grid(s=100,sp=10,d=10) # ปรับค่าเส้นกริดที่แสดงผลในหน้าจอ
mc.displayColor('gridAxis',1) # ปรับสีของแกนหลักเป็นสีดำ
mc.displayColor('gridHighlight',2) # ปรับสีของเส้นกริดใหญ่เป็นสีเทาเข้ม
mc.displayColor('grid',3) # ปรับสีของเส้นกริดย่อยเป็นสีเทาอ่อน
mc.savePrefs() # เซฟค่าที่เปลี่ยนแปลงไปทั้งหมด



เสร็จแล้วก็จะพบว่าเส้นกริดทั้งหมดถูกเปลี่ยนให้มีขอบเขตกว้างขึ้น



โค้ดที่ใส่ลงไปนี้เป็นคำสั่งสำหรับเปลี่ยนแปลงเส้นกริด ซึ่งปกติแล้วหากไม่ใช้โค้ดก็สามารถทำได้ด้วยการ ไปดูที่เมนูด้านบน เลือก Display (ディスプレイ) จากนั้นก็จะเห็นอันแรกเป็น Grid (グリッド) ให้กดที่ปุ่มสี่เหลี่ยมด้านขวา จากนั้นก็จะขึ้นหน้าต่างสำหรับปรับแก้ค่าขึ้นมา




เริ่มแรกดูที่หมวดแรก ขนาด (サイズ, Size)
- ความยาวและความกว้าง (長さと幅, Length and Width) ค่าตั้งต้นเป็น 12 แต่ตอนนี้ถูกปรับเป็น 100
- ระยะระหว่างเส้นกริด (グリッド ラインの間隔, Grid Lines Every) ค่าตั้งต้นเป็น 5 แต่ตอนนี้ถูกปรับเป็น 10
- ซับดิวิชัน (サブディビジョン, Subdivisions) ค่าตั้งต้นเป็น 5 แต่ตอนนี้ถูกปรับเป็น 10

จากนั้นดูในหมวดสี (カラー, Color) ประกอบไปด้วย
- แกน (軸, Axes) คือเส้นที่ตำแหน่ง x=0 และ z=0
- เส้นกริดและหมายเลข (グリッド ラインと番号, Grid Lines & Numbers) คือเส้นกริดหลัก
- เส้นซับดิวิชัน (サブディビジョン ライン, Subdivision Lines) คือเส้นกริดย่อย

สีของเส้นกริดกับเส้นซับดิวิชันนั้นค่าเริ่มต้นเป็นสีเดียวกัน ในที่นี้เราปรับให้ต่างกันเพื่อจะได้แยกออกชัดเจน แบบนี้แล้วจะดูง่ายขึ้น

เมื่อปรับแล้วก็จะได้เส้นกริดที่ห่างกันทีละ 10 หน่วย และทุก 100 หน่วยเป็นสีเข้ม



อนึ่ง เมื่อรันเสร็จโค้ดทั้งหมดที่รันจะหายไปจากตรงส่วนที่พิมพ์แต่ไปโผล่ด้านบน ซึ่งเป็นส่วนแสดงผล พร้อมทั้งมีผลลัพธ์ที่เกิดจากโค้ดแสดงออกมาด้วย

หากอยากให้โค้ดกลับมาก็สามารถกด ctrl+z (ใน mac เป็น command+z) เพื่อนำกลับมา

หรือหากใช้เมาส์ลากคลุมข้อความแล้วค่อยกดรันจะเป็นการรันเฉพาะส่วนของข้อความที่คลุม และพอรันเสร็จข้อความก็จะไม่หายไปด้วย

สำหรับโค้ด ๙ บรรทัดนี้ จะยังไม่ขออธิบายรายละเอียดในตอนนี้ เพียงแต่ยกมาให้เป็นตัวอย่างให้เห็นถึงการทำงานของโค้ด และต้องการตั้งให้เป็นค่าเริ่มต้นที่เหมาะสมกับบทเรียน

ในการทำงานกับมายา เพื่อให้เห็นภาพชัดเจนเส้นกริดเป็นสิ่งที่มีความสำคัญมากอย่างหนึ่ง แต่เนื่องจากค่าเริ่มต้นนั้นตั้งเส้นกริดมาค่อนข้างน้อย ไม่สะดวกต่อการใช้งานจึงจำเป็นต้องปรับสักหน่อย

บทต่อๆจากนี้ไปก็จะใช้เส้นกริดในลักษณะนี้ตลอด ดังนั้นจึงยกโค้ดนี้มาใส่ไว้ในบทแรก

สรุปคร่าวๆคือ การเขียนโค้ดสามารถทำในสิ่งเดียวกันกับที่ทำผ่านแผงตั้งค่าต่างๆได้ แต่จะสะดวกกว่าตรงที่ถ้าหากต้องการทำสิ่งเดิมซ้ำ หรือต้องการให้คนอื่นทำบางอย่างที่เหมือนกับที่เราเคยทำแล้ว ก็แค่ลอกโค้ดแล้วรันเท่านั้น



ในบทนี้จะยังไม่อธิบายเกี่ยวกับวิธีการเขียนโค้ด แต่จะขอยกโค้ดจากบทอื่นๆมาเป็นตัวอย่าง ให้ลอกโค้ดตามนี้แล้วรันดูจะได้ผลตามในภาพ ส่วนรายละเอียดเกี่ยวกับโค้ดอ่านได้ตามบทที่วงเล็บไว้ด้านหลัง

ลองรันโค้ดดูทีละอัน พอรันเสร็จแล้วจะได้ผลตามที่แสดง จากนั้นก็อาจกด ctrl+z เพื่อย้อนกลับ แล้วก็ลองรันโค้ดอันต่อๆไป

- สร้างวัตถุหลายๆอันจากการวนซ้ำ (บทที่ ๔)
z=-50
while(z<=50):
    x=-50
    while(x<=50):
        if((x%20>5 and x%20<15) or (z%20>5 and z%20<15)):
            mc.polySphere(r=2,sx=8,sy=8)
            y=25-(x**2+z**2)/50.
            mc.move(x,y,z)
        x+=2
    z+=2


- สร้างรูปทรงแล้วนำมาประกอบกัน (บทที่ ๘)
t = [[2,0,0],[0,2,0],[0,0,2],[-2,0,0],[0,-2,0],[0,0,-2]]
i=0
while(i<6):
    mc.polyPyramid(ax=t[i],w=2,ns=4)
    mc.move(t[i][0],t[i][1],t[i][2])
    i+=1


- ทำภาพเคลื่อนไหว (บทที่ ๑๕)
import math
A=10.
f=1.
k=0.5
for z in range(-40,41):
    chue = mc.polySphere(r=1,n='w%d'%z)
    mc.move(0,0,z)
    mc.expression(o=chue[0],s='ty = exp(-%f*time)*%f*cos(2*%f*%f*(time-tz/20));'%(k,A,math.pi,f))


- ดัดแปลงรูปทรงต่างๆและนำมารวมกลุ่มกันอย่างเป็นระบบ (บทที่ ๑๘)
g = []
g += mc.polyCone(r=5,h=12,ch=0,n='kradong')
mc.rotate(-15,0,0)
mc.move(0,6,-2)
g += mc.polySphere(r=5,ch=0,n='lamtua')
mc.scale(1,0.3,1)
g += mc.polySphere(r=0.8,ch=0,n='tasai')
mc.move(2,0,4)
g += mc.polySphere(r=0.8,ch=0,n='takhwa')
mc.move(-2,0,4)
for r in [0,10,20,30,150,160,170,180]:
    g += mc.polySphere(r=0.7,ch=0,n='kha1')
    mc.scale(3,1,1)
    mc.move(6,0,0)
    mc.rotate(0,-r,0,p=[0,0,0])
mc.group(g,n='pusechuan')


- วาดกราฟสามมิติ (บทที่ ๒๑)
import math
mc.polyPlane(w=40,h=40,sx=40,sy=40)
for i in range(mc.polyEvaluate(v=1)):
    t = mc.xform('.vtx[%d]'%i,t=1,q=1)
    mc.move(math.sin(0.2*math.pi*(t[0]**2+t[2]**2)**0.5)*3,'.vtx[%d]'%i,y=1)


- ปั้นโพลิกอนเป็นรูปทรงต่างๆ (บทที่ ๒๔)
mc.polySphere(r=10,sx=16,sy=16)
mc.polyExtrudeFacet('.f[96:127]',ltz=6,sy=0)
mc.polyExtrudeFacet('.f[240:255]',pvt=[0,15,0],s=[0,0,0])
mc.polyExtrudeFacet('.f[176:223]',lsx=0,lsy=0,ltz=2,kft=0)
mc.polyExtrudeFacet('.f[67]','.f[71]','.f[75]','.f[79]',pvy=-10,sy=0,ltz=5)
mc.select('.f[128:175]')
mc.polyExtrudeFacet(off=0.5,kft=0)
mc.polyExtrudeFacet(ltz=-1)


- ใส่สีสัน (บทที่ ๒๗) ***เพื่อให้แสดงสีบนหน้าจอได้จำเป็นต้องกดเลข 6 บนคีย์บอร์ดก่อน
import math
mc.polySphere(r=10,sx=18,sy=18,n='songklom')
for i in range(mc.polyEvaluate(f=1)):
    bb = mc.xform('songklom.f[%d]'%i,bb=1,q=1)
    x = (bb[3]+bb[0])/2
    y = (bb[4]+bb[1])/2
    z = (bb[5]+bb[2])/2
    if(z!=0): longi = math.atan(x/z)
    else: longi = 0
    ph = mc.shadingNode('blinn',asShader=1)
    mc.setAttr(ph+'.c',(10+y)/20,(10-y)/20,0.5+0.5*math.sin(longi*4),typ='double3')
    mc.select('songklom.f[%d]'%(i))
    mc.hyperShade(a=ph)


และอื่นๆอีกมากมาย



อ้างอิง

<< บทที่แล้ว      บทถัดไป >>
หน้าสารบัญ


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

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> เขียนโปรแกรม >> python >> mayapython
-- คอมพิวเตอร์ >> 3D >> maya

ไม่อนุญาตให้นำเนื้อหาของบทความไปลงที่อื่นโดยไม่ได้ขออนุญาตโดยเด็ดขาด หากต้องการนำบางส่วนไปลงสามารถทำได้โดยต้องไม่ใช่การก๊อปแปะแต่ให้เปลี่ยนคำพูดเป็นของตัวเอง หรือไม่ก็เขียนในลักษณะการยกข้อความอ้างอิง และไม่ว่ากรณีไหนก็ตาม ต้องให้เครดิตพร้อมใส่ลิงก์ของทุกบทความที่มีการใช้เนื้อหาเสมอ

目录

从日本来的名言
模块
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
机器学习
-- 神经网络
javascript
蒙古语
语言学
maya
概率论
与日本相关的日记
与中国相关的日记
-- 与北京相关的日记
-- 与香港相关的日记
-- 与澳门相关的日记
与台湾相关的日记
与北欧相关的日记
与其他国家相关的日记
qiita
其他日志

按类别分日志



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  查看日志

  推荐日志

ตัวอักษรกรีกและเปรียบเทียบการใช้งานในภาษากรีกโบราณและกรีกสมัยใหม่
ที่มาของอักษรไทยและความเกี่ยวพันกับอักษรอื่นๆในตระกูลอักษรพราหมี
การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
การใช้ unix shell เบื้องต้น ใน linux และ mac
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ