คำอธิบายโปรแกรม mmdpaimaya v2.0โค้ดสำหรับแปลงโมเดลไปมาระหว่าง MMD และมายา (Autodesk Maya)
โค้ดใส่ไว้ใน github >>
https://github.com/phyblas/mmdpaimayaลิงก์สำหรับโหลด >>
https://github.com/phyblas/mmdpaimaya/archive/master.zipโมเดลใน MMD มากมายสามารถโหลดได้ฟรี แต่การจะนำมาใช้ในมายานั้นไม่ใช่เรื่องง่าย ต้องมีโค้ดเฉพาะสำหรับใช้อ่าน ดังนั้นจึงได้ลองพยายามเขียนขึ้นมาเอง
ก่อนหน้านี้มีโค้ดสำหรับทำคล้ายๆกันแบบนี้อยู่แล้ว แต่รู้สึกว่ายังไม่สมบูรณ์จึงได้ตัดสินใจทำเองขึ้นมาใหม่ เริ่มทำตั้งแต่ มกราคม 2017 แต่ในช่วงแรกยังไม่ค่อยดี มีข้อผิดพลาดอยู่มาก ก็ค่อยๆปรับปรุงจนเริ่มสมบูรณ์ขึ้นมา
เวอร์ชันแรกสุดของโปรแกรมเปิดให้โหลดใช้กันตั้งแต่กุมภาพันธ์ 2017 ดังที่เขียนไปใน
https://phyblas.hinaboshi.com/20170221แต่ในระยะแรกนั้นแค่นำเข้าโมเดล MMD เข้ามาในมายาเท่านั้น แต่ตอนนี้กลายเป็นเวอร์ชัน 2 ได้เพิ่มความสามารถในการแปลงโมเดลจากในมายาไปเป็นไฟล์ .pmx ลงไป
คำอธิบายการใช้งานเป็นภาษาญี่ปุ่นอ่านได้ที่
https://qiita.com/phyblas/items/53161a1d83ec3d81f649สำหรับหน้านี้จะเป็นคำอธิบายเป็นภาษาไทย
ความสามารถโค้ดถูกเขียนขึ้นเพื่อใช้นำเข้าโมเดล MMD จากไฟล์ .pmd, .pmx และ .x เข้ามาใส่ในโปรแกรมมายา
หรือดึงโมเดลจากมายามาสร้างเป็นไฟล์ .pmx เพื่อใช้ใน MMD
ส่วนประกอบของโปรแกรมไฟล์ที่แจกประกอบด้วย ๕ โฟลเดอร์
ในจำนวนนั้น ๔ โฟลเดอร์คือมอดูลเสริมที่จำเป็นต้องใช้ซึ่งยืมมาใช้เพื่อเป็นส่วนประกอบในโปรแกรม ไม่ได้เป็นส่วนที่เขียนขึ้นเองแต่อย่างใด ได้แก่
- pymeshio สำหรับเปิดอ่านข้อมูลจากไฟล์ .pmd และ .pmx
- pykakasi สำหรับแปลงภาษาญี่ปุ่นเป็นโรมาจิ (
รายละเอียด)
- jctconv สำหรับแปลงอักษรคาตาคานะครึ่งตัวเป็นเต็มตัว (
รายละเอียด)
- pkg_resources ถูกเรียกใช้โดย pykakasi
ส่วนโฟลเดอร์ mmdpaimaya คือส่วนของโค้ดที่เขียนขึ้นมาเอง
เวอร์ชันของมายาที่ใช้โค้ดนี้ถูกทดสอบแล้วว่าใช้งานได้ในมายา 2015,2016,2017,2018 ทั้งภายใน windows และ mac
การเตรียมการก่อนใช้งานให้นำโฟลเดอร์ทั้ง ๕ ไปไว้ในโฟลเดอร์สำหรับใส่สคริปต์ไพธอนในมายา
โฟลเดอร์ที่ว่านั้นมีชื่อว่า scripts ซึ่งตำแหน่งที่อยู่จะต่างกันไปตามเวอร์ชันและระบบปฏิบัติการ รายละเอียดได้อธิบายไว้ในนี้
http://phyblas.blog.jp/maso05.htmlไฟล์หรือโฟลเดอร์ที่ถูกนำไปวางไว้ในนั้นจะสามารถถูกเรียกใช้จากโปรแกรมมายาในฐานะเป็นมอดูลได้
การใช้งานเมื่อจะใช้งานให้นำเอาโค้ดที่อยู่ในไฟล์ roem.py มารันในสคริปต์อีดิเตอร์ในมายา
หรือก็คือแค่พิมพ์ตามนี้ในสคริปต์อีดิเตอร์แล้วกดรัน
import mmdpaimaya.natang
natang_sang = mmdpaimaya.natang.roem()
หรือหากต้องการให้ใช้งานสะดวกขึ้นอีกก็ให้นำโค้ดไปเซฟใส่เชลฟ์ไว้เลย ทุกครั้งที่ต้องการใช้ก็แค่กดปุ่ม
วิธีการตามที่เขียนไว้ใน
http://phyblas.blog.jp/maso29.htmlหากโค้ดใช้งานได้ไม่มีปัญหาอะไรก็จะมีหน้าต่างขึ้นมาดังนี้
เมื่อเริ่มหน้าต่างโปรแกรมขึ้นมาจะเห็นว่าด้านบนมีอยู่สองแท็บให้เลือก แท็บซ้ายสำหรับนำเข้าข้อมูลจาก MMD มามายาส่วนแท็บขวาสำหรับส่งออกโมเดลในมายาไปเป็น .pmx
ตรงแถบมุมขวาบนเป็นตัวเลือกภาษา สามารถเลือกได้ ๓ ภาษาคือไทย, ญี่ปุ่น และ จีน
ในแต่ละแท็บจะมีช่องให้เลือกไฟล์อยู่ด้านบนสุด และมีอะไรให้เลือกปรับแต่งหลายอย่าง
ค่าต่างๆเหล่านี้ค่าตั้งต้นจะดึงมาจากไฟล์ khatangton.txt ในโฟลเดอร์เดียวกับกับโค้ด ทุกครั้งที่กดสร้างโมเดลไปค่าจะถูกบันทึกเอาไว้ทำให้ค่าเหมือนกับที่ใช้ล่าสุดทุกครั้ง
แต่หากทำไฟล์ khatangton.txt หายไป หรือมีข้อผิดพลาดทำให้อ่านไม่ได้ขึ้นมา ไฟล์จะถูกสร้างขึ้นมาใหม่เอง
แท็บ mmd > mayaใช้สำหรับดึงข้อมูลจากไฟล์ .pmd, .pmx หรือ .x มาใส่ในมายา
ชื่อของโหนดต่างๆจะถูกตั้งโดยดึงชื่อจากในโมเดลเดิม โดยหากชื่อไหนที่เป็นภาษาญี่ปุ่นจะถูกแปลงเป็นโรมาจิโดย pykakasi อาจมีได้ชื่อแปลกๆไม่ถูกต้องอยู่บ้าง แต่ไม่มีวิธีอื่นเพราะชื่อโหนดในมายาถูกบังคับให้ใช้อักษรโรมัน ๒๖ ตัวและ _ เท่านั้น
เมื่อสร้างเสร็จโดยไม่มีข้อผิดพลาดอะไรหน้าต่างก็จะถูกปิด แล้วโมเดลก็จะมาปรากฏตัวในฉาก
ปรับขนาดโมเดลช่องปรับแต่งอันแรกสุดและเป็นอันเดียวที่ให้พิมพ์ค่าก็คือส่วนของขนาด หน่วยของขนาดจะเป็นจำนวนเท่าของขนาดเดิม
โดยทั่วไปแล้วขนาดมาตรฐานของโมเดลใน MMD จะเป็นขนาดที่ให้มิกุมีความสูง 20 หน่วย แต่ส่วนสูงจริงๆของมิกุคือ 158 ซม. หรือก็คือประมาณ 160 ซม.
นั่นหมายความว่าหากในมายาเราจะใช้สัดส่วนเป็น ซม. ก็ควรจะใส่ขนาดเป็น 8 และหากจะใช้เป็นเมตรก็ควรใส่เป็น 0.08 เป็นต้น
เทียบขนาด 8x|1x|0.08x
(
Tda式初音ミク デフォ服ver)
โมเดลที่มีการสร้างกระดูกไว้จะปรับขนาดในภายหลังได้ลำบาก ดังนั้นควรเลือกขนาดให้ถูกต้องตั้งแต่แรก
แยกโพลิกอนตามวัสดุส่วนช่องที่ให้ติ๊กว่าจะแยกโพลิกอนตามวัสดุหรือไม่นั้นมีไว้สำหรับโมเดลที่เป็นพวกเครื่องประดับหรือฉาก เพราะพวกฉากต่างๆเช่นพวกเมืองหรือห้องมักจะประกอบไปด้วยสิ่งของต่างๆมารวมอยู่ด้วยกัน บางทีเราอาจต้องการแยกแต่ละอย่างออกจากกัน หรืออยากลบบางส่วนออก
แต่ว่าโมเดลใน MMD มักใส่โพลิกอนทั้งหมดในโมเดลรวมกันหมดไม่ได้แยก ทำให้การจะแยกสิ่งของแต่ละอย่างออกจากกันนั้นค่อนข้างลำบาก
วิธีที่ดูจะง่ายที่สุดในการแยกก็คือแยกตามวัสดุ เพราะสิ่งของคนละส่วนมักใช้วัสดุคนละอย่างกันอยู่แล้ว เพียงแต่ว่าก็เป็นแค่การแบ่งคร่าวๆเท่านั้น ยังไงก็ต้องมาปรับดูอีกที ถึงอย่างนั้นการแยกเอาไว้ก่อนก็ช่วยให้คัดกรองส่วนประกอบง่ายขึ้นมาก
หากติ๊กว่าจะแยกโพลิกอนแล้วจะไม่สามารถสร้าง blend shape และกระดูกได้ เพราะมันจะไม่สามารถทำได้อยู่แล้ว ดังนั้นการแยกโพลิกอนจึงน่าจะใช้กับเฉพาะฉากหรือเครื่องประดับที่อยู่นิ่ง ไม่ใช้กับตัวละครที่ต้องการเคลื่อนไหว
โพลิกอนที่แยกออกมาจะเป็นคนละโหนดกันแต่จะถูกรวมเป็นกลุ่มเดียว
ตัวอย่าง ดาบในภาพนี้สามารถแยกโพลิกอนส่วนที่เป็นตัวดาบกับปลอกดาบออกมาจากกันได้อย่างง่ายดาย
(
法の剣)
สร้าง blend shapeเบลนด์เชปคือส่วนที่ทำให้เกิดการขยับเปลี่ยนแปลงเล็กๆน้อยๆบนผิวโมเดล ส่วนใหญ่จะใช้กับการแสดงใบหน้า แต่ก็มีใช้กับอย่างอื่นด้วย
สำหรับใน MMD จะเรียกว่ามอร์ฟ (morph) ซึ่งที่จริงแล้วมอร์ฟยังครอบคลุมความสามารถหลายอย่างเช่นการเปลี่ยนแปลงสีหรือความโปร่งใสในวัสดุของผิวด้วย
แต่ว่าเบลนด์เชปในมายาไม่ได้รองรับการเปลี่ยนแปลงของวัสดุ ดังนั้นจึงสามารถแปลงเฉพาะมอร์ฟที่เป็นการขยับจุดเท่านั้น
กรณีโมเดลมีมอร์ฟที่ไม่สามารถแปลงได้จะมีข้อความเตือนขึ้นมาเพื่อให้รู้
สามารถดูและควบคุมเบลนด์เชปได้ใน
- สำหรับมายา 2016 ลงมา > Windows (ウィンドウ) > Animation Editor (アニメーション エディタ) > Blend Shape (ブレンド シェイプ)
- สำหรับมายา 2017 > Windows (ウィンドウ) > Animation Editor (アニメーション エディタ) > Shape Editor (シェイプ エディタ)
ตัวอย่าง ปรับปากและตากับคิ้วให้มิกุยิ้มได้
(
ゆきはね式ミク イージスβ2)
สร้างกระดูกและ IKสำหรับโมเดลที่เป็นตัวละครจำเป็นจะต้องมีกระดูกเพื่อใช้ในการเคลื่อนไหวร่างกาย
(
Racing Miku 2015)
กระดูกทั้งหมดจะถูกสร้างตามข้อมูลของกระดูกทั้งหมดที่มีในโมเดล แม้แต่กระดูกที่ไม่สามารถควบคุมได้โดยตรงตอนอยู่ในโปรแกรม MMD ด้วย เช่นพวกเส้นผมและกระโปรง
ใน MMD นั้นเส้นผมและกระโปรงถูกควบคุมด้วยฟิสิกส์เพื่อให้เคลื่อนที่พริ้วไหวไปเอง แต่ความสามารถในส่วนนั้นไม่ได้ถูกดึงมาใช้ในนี้ ดังนั้นหากต้องการให้ขยับก็ต้องมาควบคุมกระดูกตรงนี้เอง
ช่องที่ติ๊กให้สร้าง IK นั้นยังไม่สมบูรณ์และไม่แนะนำให้ใช้เท่าไหร่ เพียงแต่ว่าได้พยายามสร้างเอาไว้แล้วก็เลยเสียดายที่จะลบทิ้งเท่านั้น ใครจะลองใช้ดูก็ได้
ที่จริงการดึง IK จากข้อมูลโมเดล MMD เดิมนั้นอาจไม่ค่อยจำเป็นสักเท่าไหร่นัก เพราะในมายามีคำสั่งที่ใช้การได้ดีมากอย่างหนึ่ง นั่นคือ HumanIK เป็นคำสั่งที่เอาไว้ควบคุมตัวละครที่มีลักษณะเป็นมนุษย์โดยสร้าง IK ที่จำเป็นขึ้นมาโดยอัตโนมัติ
ในที่นี้จะไม่อธิบายรายละเอียดเกี่ยวกับ HumanIK เพราะมีรายละเอียดค่อนข้างมาก อาจลองไปศึกษาดูเองได้ แต่ในตัวโปรแกรมได้แนบไฟล์แม่แบบ mmdhik.xml ที่ใส่ชื่อของข้อต่อต่างๆที่ถูกแปลงเป็นโรมาจิในโปรแกรมนี้เอาไว้ สามารถใช้ได้
วัสดุถ้าเลือกว่าจะใส่วัสดุก็จะมีการดึงข้อมูลวัสดุของโมเดลมาใช้ โดยสร้างโหนดของวัสดุและเท็กซ์เจอร์ขึ้นมา
ชนิดของวัสดุมีให้เลือก ๔ ชนิดคือ blinn, phong, lambert และ aiStandard หรือ aiStandardSurface
เพียงแต่ว่า aiStandard หรือ aiStandardSurface จะใช้ได้ต่อเมื่อติดตั้งตัวเรนเดอร์อาร์โนลด์เอาไว้เท่านั้น ซึ่งหากเป็นมายา 2017 ขึ้นไปควรจะมีติดตั้งในตัวอยู่แล้ว
หากไม่มีอาร์โนลด์อยู่ก็จะไม่มีตัวเลือกนี้ขึ้นมาด้วย
เนื่องจากในมายา 2018 มีการเปลี่ยนแปลงพื้นผิวที่ใช้สำหรับอาร์โนลด์ คือถ้าเป็นในมายา 2017 ลงมาจะใช้เป็น aiStandard แต่ถ้าเป็นมายา 2018 ขึ้นไปจะใช้ aiStandardSurface ดังนั้นจึงตั้งให้เปลี่ยนต่างไปตามรุ่นด้วย
โดยพื้นฐานแล้วที่แนะนำให้ใช้มากที่สุดคือ blinn แต่หากจะเรนเดอร์ด้วยอาร์โนลด์ก็ควรใช้ aiStandard หรือ aiStandardSurface
กรณีที่เลือกไม่ใส่วัสดุก็จะได้โมเดลที่ใส่สีมาตรฐานให้ทั้งตัว ดูแล้วอาจคล้ายรูปปั้นหิน
(
Animasa X Pikadude 初音ミク)
วัสดุที่นำมาใช้จะไม่ได้ดึงเอาความสามารถของสเฟียร์แม็ป (sphere map) มาใส่ด้วย
สเฟียร์แม็ป คือไฟล์เท็กซ์เจอร์ชนิด .spd .spa ซึ่งใช้คูณหรือบวกเข้ากับเท็กซ์เจอร์พื้นฐาน มักใช้เพื่อทำให้วัสดุเกิดความมันวาว
เนื่องจากยังไม่พบวิธีที่จะนำมาใช้ในมายาได้ จึงทำให้วัสดุที่ใช้เท็กซ์เหล่านี้อาจแสดงผลสีแปลกออกไปดูไม่สมบูรณ์แบบ
การปรับ alpha mapค่าอัลฟาคือค่าความโปร่งใสของแต่ละจุดในภาพ โดยทั่วไปไฟล์บางชนิดเช่น bmp หรือ png จะมีค่าอัลฟาอยู่ด้วยนอกเหนือไปจากค่าสี
หากเลือกว่าจะทำอัลฟาแม็ป โปรแกรมจะหาดูว่ามีวัสดุที่อาจต้องทำอัลฟาแม็ปอยู่หรือไม่ หากทำได้ก็จะทำ
ตัวอย่าง เช่นโมเดลอันนี้ เทียบภาพระหว่างทำอัลฟาแม็ปกับไม่ได้ทำ
(
初音オミク2回目修正版)
แต่ก็มีโมเดลบางตัวที่ควรทำอัลฟาแม็ปเฉพาะวัสดุบางอัน หากทำอัลฟาแม็ปให้กับวัสดุที่ไม่จำเป็นก็จะทำให้เกิดการแสดงผลแปลกๆในวิวพอร์ต ดังนั้นจึงได้เขียนโปรแกรมให้สามารถเลือกทำอัลฟาเฉพาะบางอันได้
เพียงแต่ว่าการแสดงผลแปลกๆนี้จะเกิดขึ้นเฉพาะในวิวพอร์ต แต่จะไม่มีปัญหาเวลาเรนเดอร์ ดังนั้นจะทำอัลฟาให้หมดไว้ก่อนเลยก็ไม่เป็นปัญหา
แยกไฟล์ภาพแสดงค่า alphaปกติแล้วใน MMD มักใช้ไฟล์ที่มีค่าอัลฟาอยู่ในตัวมาเป็นเท็กซ์เจอร์เพื่อทำให้บางส่วนมีความโปร่งใส แต่การใช้ไฟล์แบบนั้นในมายาบางครั้งก็ก่อให้เกิดปัญหาที่ไม่คาดคิดได้ ดังนั้นจึงได้เขียนความสามารถนี้เผื่อเอาไว้เพื่อสร้างไฟล์ที่เก็บค่าอัลฟาแยกต่างหาก
อย่างไรก็ตามการจะเปิดใช้ความสามารถนี้ได้ต้องมีมอดูล PIL อยู่ในไพธอนที่ใช้ในมายา แต่การลง PIL นั้นมีความยุ่งยากจึงไม่ขออธิบายในนี้ หากใครจำเป็นต้องใช้ความสามารถนี้ สามารถลองไปค้นหาวิธีลงได้
หากมายาของใครไม่มี PIL อยู่ ตรงส่วนตัวติ๊กนี้จะเป็นสีเทาและไม่สามารถกดเลือกได้
กรณีใช้กับไฟล์ .xที่กล่าวมาข้างต้นนั้นคือสำหรับโมเดลในไฟล์ .pmd และ .pmx เป็นหลัก แต่หากใช้กับ .x จะมีความต่างกันเล็กน้อยเนื่องจากใช้โค้ดต่างกัน
ผลที่ได้จะมีความแตกต่างกันดังนี้
- ไม่สามารถสร้าง blend shape และกระดูกได้
- alpha map จะเลือกได้แค่ทำทั้งหมดหรือไม่ทำเลยเท่านั้น หากเลือกทำบางส่วนก็จะทำทั้งหมดอยู่ดี
- อาจมีโอกาสเจอบั๊กมากกว่า
- มาตราส่วนของไฟล์ .x มักจะต่างจาก .pmd หรือ .pmx อยู่ 10 เท่า ดังนั้นอาจต้องใส่ขนาดเพิ่มเป็น 10 เท่า
แท็บ maya > mmdสำหรับแปลงโมเดลที่อยู่ในมายาออกมาเป็นไฟล์ .pmx
ปรับขนาดในทางตรงกันข้ามกับตอนนำเข้าโมเดล สำหรับการส่งออกนั้นหากใช้หน่วยเป็น ซม. ก็ควรใส่เป็น 0.125 ถ้าใช้หน่วยเมตรก็ใส่ 12.5
สร้างกระดูกเลือกว่าจะให้เอากระดูกที่ติดอยู่กับโมเดลไปด้วยหรือไม่ แต่ IK จะไม่ได้นำไปใช้ด้วย
สร้าง morphเลือกว่าจะให้สร้างมอร์ฟขึ้นมาจากเบลนด์เชปที่มีอยู่ในตัวโมเดลหรือไม่
ใช้วัสดุหากเลือกไม่ใช้วัสดุจะเป็นสีเทาทั้งตัว
คัดลอกเท็กซ์เจอร์ถ้าติ๊กว่าเอา จะทำการคัดลอกไฟล์เท็กซเจอร์ไปยังโฟลเดอร์เดียวกับไฟล์ .pmx
ถ้าไม่ก๊อปไปด้วยจะไม่เห็นเท็กซ์เจอร์
โหมดและไฟล์ของ sphใส่ชื่อไฟล์และเลือกโหมดของสเฟียร์แม็ปที่จะใช้กับวัสดุทุกตัว
ส่วนที่ยังไม่สมบูรณ์ความสามารถบางส่วนจาก MMD ยังไม่สามารถดึงเข้ามาใช้ในมายาได้ทั้งหมด ยังต้องลองปรับปรุงต่อไป
ตัวอย่างข้อบกพร่องที่ยังอาจต้องพัฒนาต่อไป เช่น
- ไม่สามารถใส่ฟิสิกส์ การขยับของเส้นผมและกระโปรงยังต้องปรับเอง
- ไม่สามารถใส่สเฟียร์แม็ป ส่วนที่ทำให้วัสดุดูมันวาว
- เบลนด์เชปไม่ได้ทำมอร์ฟอื่นๆที่ไม่ใช่มอร์ฟขยับจุด
- กระดูกบางส่วนขยับแล้วยังมีอาการแปลกๆ
- ไฟล์เท็กซ์เจอร์บางชนิดที่ใช้ใน MMD ไม่สามารถใช้ในมายา หรือใช้แล้วไม่สมบูรณ์ ทำให้สีอาจดูผิดเพี้ยนไปได้
- ฯลฯ
สำหรับกรณีที่เจอข้อผิดพลาดขณะอ่านไฟล์ pmd หรือ pmx แล้วขึ้นว่า "extended uv is not supported" ให้เอาไฟล์มาเปิดใน pmd editor แล้วดูที่ช่อง 追加UV数 ถ้าไม่ใช่ 0 ให้ปรับเป็น 0
สำหรับในส่วนของการสร้างไฟล์ pmx บางครั้งไฟล์ที่ได้ออกมาหากนำไปเปิดใน MMD ทันทีแล้วจะมีปัญหาขึ้นมา สามารถแก้ได้ด้วยการนำไปเปิดใน pmd editor แล้วบันทึกทับไปใหม่
ขอขอบคุณโค้ดโปรแกรมนี้ถูกเขียนโดยได้แรงบันดาลใจและแนวคิดมาจาก
-
PmxIO ของคุณ Yomogi
-
mmd-transporter ของคุณ GRGSIBERIA
ตัวอย่างการใช้งานคลิปที่ใช้โมเดล MMD แล้วเรนเดอร์ด้วยมายา
-
https://www.youtube.com/watch?v=7iixZmr8rAo-
https://www.facebook.com/1081618448523592โมเดล MMD ที่สร้างด้วยมายา
http://3d.nicovideo.jp/u/phyblasติดต่อสอบถามหากมีปัญหาสงสัยถามได้ในเพจที่ facebook
https://www.facebook.com/ikamiso