φυβλαςのβλογ
บล็อกของ 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
ภาษา mongol
ภาษาศาสตร์
maya
ความน่าจะเป็น
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
-- บันทึกในฮ่องกง
-- บันทึกในมาเก๊า
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



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

  ค้นหาบทความ

  บทความแนะนำ

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

บทความแต่ละเดือน

2024年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2023年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2022年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2021年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2020年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

ค้นบทความเก่ากว่านั้น

ไทย

日本語

中文