สะพานดาซทูมายา
ปลั๊กอิน Daz Studio ที่ใช้ Daz Bridge Library ช่วยให้สามารถถ่ายโอนตัวละครและอุปกรณ์ประกอบฉากของ Daz Studio ไปยัง Maya
- เจ้าของ: Daz 3D – @Daz3d
- ใบอนุญาต: Apache License เวอร์ชัน 2.0 - ดู
LICENSE
และ NOTICE
สำหรับข้อมูลเพิ่มเติม - การเปิดตัวอย่างเป็นทางการ: Daz to Maya Bridge
- โครงการอย่างเป็นทางการ: github.com/daz3d/DazToMaya
สารบัญ
- เกี่ยวกับสะพาน
- ข้อกำหนดเบื้องต้น
- วิธีการติดตั้ง
- วิธีใช้
- วิธีการสร้าง
- วิธีการพัฒนา
- โครงสร้างไดเร็กทอรี
1. เกี่ยวกับสะพาน
นี่เป็นเวอร์ชันอัปเดตของ DazToMaya Bridge ดั้งเดิมที่เขียนใหม่ในภาษา C++ โดยใช้ Daz Bridge Library เป็นรากฐาน ซึ่งช่วยให้สามารถแชร์ซอร์สโค้ดและคุณสมบัติเดียวกันกับบริดจ์อื่นๆ เช่น DazToUnreal และ DazToBlender Bridges
สะพาน Daz To Maya ประกอบด้วยสองส่วน: ปลั๊กอิน Daz Studio ซึ่งจะส่งออกเนื้อหาไปยัง Maya และโมดูล Maya เพื่อนำเข้าเนื้อหาและช่วยสร้างรูปลักษณ์ของเนื้อหา Daz Studio ดั้งเดิมใน Maya ขึ้นมาใหม่
2. ข้อกำหนดเบื้องต้น
- แอปพลิเคชั่น Daz Studio เวอร์ชันที่รองรับ
- แอปพลิเคชัน Maya เวอร์ชันที่เข้ากันได้
- ระบบปฏิบัติการ:
- Windows 7 หรือใหม่กว่า
- macOS 10.13 (High Sierra) หรือใหม่กว่า
3. ฉันจะติดตั้ง Daz To Maya Bridge ได้อย่างไร
แดซ สตูดิโอ:
- คุณสามารถติดตั้ง Daz To Maya Bridge ได้โดยอัตโนมัติผ่าน Daz Install Manager สิ่งนี้จะเพิ่มตัวเลือกเมนูใหม่โดยอัตโนมัติภายใต้ไฟล์ -> ส่งไปที่ -> Daz To Maya
- หรือคุณสามารถติดตั้งด้วยตนเองโดยการดาวน์โหลดบิลด์ล่าสุดจากหน้าเผยแพร่ Github และทำตามคำแนะนำที่นั่นเพื่อติดตั้งลงใน Daz Studio
มายา:
- ปลั๊กอิน Daz Studio มาพร้อมกับตัวติดตั้งสำหรับโมดูล Maya Bridge จากกล่องโต้ตอบ Daz To Maya Bridge ขณะนี้มีส่วนในส่วนการตั้งค่าขั้นสูงสำหรับการติดตั้งโมดูล Maya
- คลิกปุ่ม “ติดตั้งปลั๊กอิน...” คุณจะเห็นหน้าต่างป๊อปอัปเพื่อเลือกโฟลเดอร์ที่จะติดตั้งโมดูล Maya โฟลเดอร์เริ่มต้นควรเป็นตำแหน่งเริ่มต้นสำหรับปลั๊กอินและโมดูลของ Maya
- บน Windows เส้นทางในการติดตั้งโมดูลควรเป็น “Documentsmayamodules” บน Mac เส้นทางควรเป็น “/Users//Library/Preferences/Autodesk/maya/modules”
- สำหรับการตั้งค่า Maya ส่วนใหญ่ คุณควรจะสามารถคลิก "เลือกโฟลเดอร์" ได้ จากนั้นคุณจะเห็นกล่องโต้ตอบยืนยันว่าการติดตั้งปลั๊กอินสำเร็จหรือไม่
- หาก Maya กำลังทำงานอยู่ คุณจะต้องรีสตาร์ทเพื่อให้โมดูล Daz To Maya Bridge โหลด
- ใน Maya คุณควรเห็นแท็บ “DazToMaya” ในแถบเครื่องมือ Maya Shelf คลิกแท็บนี้เพื่อค้นหาตัวเลือก DazToMaya
- หากคุณปิดใช้งานแท็บใน Maya Shelf คุณอาจต้องคลิกไอคอน "ฟันเฟือง" และเลือก "แท็บชั้นวาง" เพื่อค้นหาและเลือกแท็บ "DazToMaya"
- จากแท็บ DazToMaya ของ Shelf คุณควรเห็นไอคอนสำหรับ "DAZ IMPORT" คุณติดตั้ง Daz To Maya Bridge เสร็จแล้ว!
- หากคุณได้รับข้อผิดพลาดขณะพยายามคลิกไอคอน "DAZ IMPORT" ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง PyMEL แล้ว
4. ฉันจะใช้สะพานมายาได้อย่างไร?
- เปิดตัวละครของคุณใน Daz Studio
- ตรวจสอบให้แน่ใจว่าเสื้อผ้าหรือเส้นผมติดอยู่กับลำตัวหลัก
- จากเมนูหลัก เลือกไฟล์ -> ส่งไปที่ -> Daz To Maya หรือคุณอาจเลือกไฟล์ -> ส่งออกแล้วเลือก "ไฟล์ Maya Ascii" หรือ "ไฟล์ Maya Binary" จากตัวเลือกแบบเลื่อนลงบันทึกเป็นประเภท
- กล่องโต้ตอบจะปรากฏขึ้น: เลือกประเภทการแปลงที่คุณต้องการทำ "Static Mesh" (ไม่มีโครงกระดูก), "Skeletal Mesh" (ตัวละครหรือข้อต่อ), "Animation" หรือ "Environment" (mesh ทั้งหมดในฉาก) .
- หากต้องการเปิดใช้งานระดับ Morphs หรือ Subdivision ให้คลิกช่องทำเครื่องหมายเพื่อเปิดใช้งานตัวเลือกนั้น จากนั้นคลิกปุ่ม "Choose Morphs" หรือ "Bake Subdivisions" เพื่อกำหนดค่าการเลือกของคุณ
- คลิกยอมรับ จากนั้นรอให้ป๊อปอัปโต้ตอบแจ้งให้คุณทราบเมื่อจะเปลี่ยนไปใช้ Maya
- จาก Maya คลิกไอคอน “DAZ IMPORT” จากชั้นวางเครื่องมือ DazToMaya เพื่อเปิดหน้าต่างข้อความ DazToMaya Bridge
- เลือก “นำเข้าอัตโนมัติ”
มอร์ฟ:
- หากคุณเปิดใช้ตัวเลือกส่งออก Morphs จะมีโหนด "Morphs" ในแผงเครื่องมือจัดทำโครงร่าง เลือกโหนดนี้แล้วคุณจะเห็นแถบเลื่อน morph ปรากฏในแผง "ตัวแก้ไขแอตทริบิวต์" ใต้หัวข้อ "คุณลักษณะพิเศษ"
แอนิเมชั่น:
- หากต้องการใช้ตัวเลือกประเภทเนื้อหา "แอนิเมชัน" ฟิกเกอร์ของคุณต้องใช้แอนิเมชันบนระบบ "ไทม์ไลน์" ของ Daz Studio
- หากคุณใช้แอนิเมชั่นแบบ “aniMate” หรือ “aniBlocks” คุณจะต้องคลิกขวาในแผง “aniMate” และเลือก “Bake To Studio Keyframes”
- เมื่อแอนิเมชั่นของคุณอยู่ในระบบ “ไทม์ไลน์” คุณสามารถเริ่มการถ่ายโอนได้โดยใช้ไฟล์ -> ส่งไปยัง -> Daz To Maya
- ตอนนี้ภาพเคลื่อนไหวที่ถ่ายโอนควรจะใช้งานได้ผ่านอินเทอร์เฟซ Maya Animation
การสนับสนุนแผนก:
- Daz Studio ใช้เทคโนโลยี Catmull-Clark Subdivision Surface ซึ่งเป็นวิธีทางคณิตศาสตร์ในการอธิบายพื้นผิวที่เรียบไร้ขอบเขตในลักษณะที่มีประสิทธิภาพมาก เช่นเดียวกับวิธีการอธิบายวงกลมที่ราบเรียบอนันต์ด้วยรัศมีเพียงอย่างเดียว จริงๆ แล้วตาข่ายความละเอียดพื้นฐานของรูปดาซนั้นเป็นข้อมูลทางคณิตศาสตร์ในสมการที่อธิบายพื้นผิวที่เรียบไร้ขอบเขต สำหรับซอฟต์แวร์ที่รองรับ Catmull-Clark Subdivision และ morphs ตามพื้นผิวของแผนกย่อย (หรือที่เรียกว่า HD Morphs) จะไม่สูญเสียคุณภาพหรือรายละเอียดโดยการส่งออก mesh ความละเอียดพื้นฐาน (ระดับแผนกย่อย 0) จากนั้นใช้ Catmull-Clark ดั้งเดิม ฟังก์ชั่นการแบ่งเขต
- สำหรับซอฟต์แวร์ที่ไม่รองรับ Catmull-Clark Subdivision หรือ HD Morphs อย่างสมบูรณ์ เราสามารถ "อบ" ระดับรายละเอียดการแบ่งย่อยเพิ่มเติมลงใน mesh เพื่อให้ใกล้เคียงกับรายละเอียดของพื้นผิวดั้งเดิมมากขึ้น อย่างไรก็ตาม การอบแต่ละระดับการแบ่งย่อยเพิ่มเติมต้องใช้เวลา CPU หน่วยความจำ และพื้นที่จัดเก็บข้อมูลเพิ่มขึ้นแบบทวีคูณ หากคุณไม่มีพีซีระดับไฮเอนด์ เป็นไปได้ว่าระบบของคุณอาจขาดแคลนหน่วยความจำและหยุดทำงานหากคุณตั้งค่าระดับการแบ่งย่อยที่ส่งออกสูงกว่า 2
- เมื่อคุณเปิดใช้งานตัวเลือก Bake Subdivision ในบริดจ์ Daz To Maya เนื้อหาจะถูกโอนไปยัง Maya ในรูปแบบเมชมาตรฐานที่มีการนับจุดยอดที่มีความละเอียดสูงกว่า
5. วิธีการสร้าง
การตั้งค่าและการกำหนดค่าระบบบิลด์ทำได้ผ่าน CMake เพื่อสร้างไฟล์โปรเจ็กต์สำหรับ Windows หรือ Mac การกำหนดค่า CMake ต้องการ:
- Modern CMake (ทดสอบกับ 3.27.2 บน Win และ 3.27.0-rc4 บน Mac)
- Daz Studio 4.5+ SDK (จาก DIM)
- Fbx SDK 2020.1 (วิน) / Fbx SDK 2015.1 (mac)
- โอเพ่นซับดิฟ 3.4.4
(โปรดทราบว่าคุณต้องใช้ไลบรารีบิวด์ Qt 4.8.1 ที่มีอยู่ใน Daz Studio SDK การใช้ไลบรารี Qt ภายนอกจะส่งผลให้เกิดข้อผิดพลาดของบิลด์และความไม่เสถียรของโปรแกรม)
ดาวน์โหลดหรือโคลนพื้นที่เก็บข้อมูล DazToMaya github ไปยังเครื่องของคุณ ไลบรารี Daz Bridge เชื่อมโยงเป็นโมดูลย่อย git ไปยังที่เก็บ DazBridge คุณอาจต้องใช้ git submodule init
และ git submodule update
เพื่อโคลน Daz Bridge Library อย่างถูกต้อง ทั้งนี้ขึ้นอยู่กับไคลเอนต์ git ของคุณ
กระบวนการตั้งค่าบิวด์ได้รับการออกแบบให้รันด้วย CMake gui ในเซสชันแบบโต้ตอบ หลังจากตั้งค่าโฟลเดอร์ซอร์สโค้ดและโฟลเดอร์เอาท์พุตแล้ว ผู้ใช้สามารถคลิกกำหนดค่าได้ CMake จะหยุดในระหว่างกระบวนการกำหนดค่าเพื่อแจ้งให้ผู้ใช้ทราบเส้นทางต่อไปนี้:
- DAZ_SDK_DIR – โฟลเดอร์รูทของ Daz Studio 4.5+ SDK ต้องเป็นเวอร์ชันที่ซื้อจาก Daz Store และติดตั้งผ่าน DIM เวอร์ชันอื่นๆ จะไม่ทำงานกับโปรเจ็กต์ซอร์สโค้ดนี้ และส่งผลให้เกิดข้อผิดพลาดและความล้มเหลวในการสร้าง ตัวอย่าง: C:/Users/Public/Documents/My DAZ 3D Library/DAZStudio4.5+ SDK
- DAZ_STUDIO_EXE_DIR - โฟลเดอร์ที่มีไฟล์ปฏิบัติการ Daz Studio ตัวอย่าง: C:/Program Files/DAZ 3D/DAZStudio4
- FBX_SDK_DIR – โฟลเดอร์รูทที่มีโฟลเดอร์ย่อย “include” และ “lib” ตัวอย่าง: C:/Program Files/Autodesk/FBX/FBX SDK/2020.0.1
- OPENSUBDIV_DIR - โฟลเดอร์รูทที่มีโฟลเดอร์ "opensubdiv", "examples", "cmake" โดยถือว่าโฟลเดอร์เอาท์พุตถูกตั้งค่าเป็นโฟลเดอร์ย่อยชื่อ “build” และไฟล์ไลบรารีสแตติก osdCPU.lib หรือ libosdCPU.a ถูกสร้างขึ้นที่: /build/lib/Release/osdCPU.lib หรือ /build/lib/Release/libosdCPU .ก. คุณสามารถดูไลบรารีที่สร้างไว้ล่วงหน้าสำหรับ Mac และ Windows ได้ที่ https://github.com/danielbui78/OpenSubdiv/releases ซึ่งมีตำแหน่งที่ถูกต้องสำหรับการรวมและสร้างไบนารีไลบรารีคงที่ของ Release ที่สร้างไว้ล่วงหน้า หากคุณไม่ได้ใช้เวอร์ชันที่คอมไพล์แล้ว คุณต้องตรวจสอบให้แน่ใจว่าตำแหน่งที่ถูกต้องสำหรับพาธโฟลเดอร์ OPENSUBDIV_INCLUDE และพาธของไฟล์ OPENSUBDIV_LIB
เมื่อป้อนเส้นทางเหล่านี้ลงใน CMake gui อย่างถูกต้องแล้ว คุณสามารถคลิกปุ่มกำหนดค่าได้ และกระบวนการกำหนดค่าควรดำเนินการต่อจนเสร็จสิ้น ไฟล์โครงการจะถูกสร้างขึ้นและสามารถเปิดโครงการได้ โปรดทราบว่าเครื่องมือสร้างและไลบรารี Qt 4.8 เวอร์ชันที่กำหนดเองจะรวมอยู่ใน DAZ_SDK_DIR หากมีการติดตั้ง Qt เวอร์ชันอื่นในระบบของคุณและ CMake มองเห็นได้ อาจก่อให้เกิดข้อผิดพลาดในการค้นหา Qt เวอร์ชันที่ถูกต้องที่ให้มาใน DAZ_SDK_DIR และทำให้เกิดข้อผิดพลาดและความล้มเหลวในการสร้าง
ไฟล์โปรเจ็กต์ที่ได้ควรมี "DzBridge-Maya", "DzBridge Static" และ "MayaModule ZIP" เป็นเป้าหมายของโปรเจ็กต์ ไฟล์ไบนารี DLL/DYLIB ที่สร้างโดย "DzBridge-Maya" ควรเป็นปลั๊กอิน Daz Studio ที่ใช้งานได้ "MayaModule ZIP " โปรเจ็กต์ประกอบด้วยสคริปต์อัตโนมัติที่รวมไฟล์ Maya Module ไว้ในไฟล์ zip และเตรียมมันสำหรับการฝังลงในไบนารี DLL/DYLIB ปลั๊กอิน Daz Studio หลัก
6. วิธีการแก้ไขและพัฒนา
ซอร์สโค้ดปลั๊กอิน Daz Studio มีอยู่ในโฟลเดอร์ DazStudioPlugin
จุดเข้าคลาส C++ หลักสำหรับปลั๊กอินคือ "DzBlenderAction" (.cpp/.h) ซอร์สโค้ดและทรัพยากรของ Maya Module มีอยู่ในโฟลเดอร์ /Maya/MAYA_APP_DIR/modules/DazToMaya
ข้อมูลอ้างอิง Daz Studio SDK API และ Qt API สามารถพบได้ในแพ็คเกจ "DAZ Studio SDK Docs" บน Windows หน้าหลักของเอกสารนี้ได้รับการติดตั้งตามค่าเริ่มต้นเป็น: C:UsersPublicDocumentsMy DAZ 3D LibraryDAZStudio4.5+ SDKdocsindex.html
DZ_BRIDGE_NAMESPACE : สะพาน DazToMaya ได้มาจากคลาสพื้นฐานใน Daz Bridge Library ที่อยู่ภายใน DZ_BRIDGE_NAMESPACE (ดูที่ bridge.h) ปลั๊กอิน Daz Bridge อย่างเป็นทางการเวอร์ชันที่เผยแพร่ก่อนหน้านี้ใช้เนมสเปซที่กำหนดเองเพื่อแยกชื่อคลาสที่แชร์ออกจากปลั๊กอินแต่ละตัว แม้ว่าในทางทฤษฎีสิ่งนี้จะทำงานเพื่อป้องกันการชนกันของเนมสเปซสำหรับแพลตฟอร์มที่ยึดติดกับเนมสเปซ C ++ แต่ก็อาจไม่ถือเป็นจริงสำหรับการใช้งานบางอย่างของ Qt และโมเดลการเขียนโปรแกรมเมตาอ็อบเจ็กต์ Qt ซึ่งถูกใช้อย่างหนักโดย Daz Studio และปลั๊กอิน Bridge โดยเฉพาะอย่างยิ่งเนมสเปซ C ++ อาจไม่แยกโค้ดในการใช้งาน Qt ของ Mac OS เมื่อคำนึงถึงข้อจำกัดเหล่านี้ ฉันจึงตัดสินใจลบคำแนะนำในการเปลี่ยนชื่อ DZ_BRIDGE_NAMESPACE เพื่อปรับปรุงและลดความซับซ้อนในการปรับใช้สำหรับนักพัฒนาปลั๊กอินบริดจ์ที่มีศักยภาพ
ในการเชื่อมโยงและแชร์คลาส C++ ระหว่างปลั๊กอินนี้และ Daz Bridge Library จะใช้มาโคร CPP_PLUGIN_DEFINITION()
แบบกำหนดเองแทนมาโคร DZ_PLUGIN_DEFINITION มาตรฐานและไฟล์ .DEF ปกติ (ดู Bridge.h) หมายเหตุ: การใช้มาโคร DZ_PLUGIN_DEFINITION และการใช้ไฟล์ DEF จะปิดใช้งานการส่งออกคลาส C ++ ในคอมไพเลอร์ Visual Studio
7. โครงสร้างไดเร็กทอรี
ภายในไดเร็กทอรี Maya คือลำดับชั้นของไดเร็กทอรีย่อยที่สอดคล้องกับตำแหน่งบนเครื่องเป้าหมาย ส่วนของลำดับชั้นมีความสอดคล้องกันระหว่างแพลตฟอร์มที่รองรับ และควรจำลองแบบทุกประการในขณะที่ส่วนอื่นๆ ทำหน้าที่เป็นตัวยึดตำแหน่งสำหรับตำแหน่งที่แตกต่างกันไปขึ้นอยู่กับแพลตฟอร์มของเครื่องเป้าหมาย
ชื่อไดเร็กทอรีตัวยึดตำแหน่งที่ใช้ในที่เก็บนี้คือ:
ชื่อ | หน้าต่าง | ระบบปฏิบัติการ macOS |
---|
appdir_common | ไดเร็กทอรีที่มีไฟล์ปฏิบัติการหลัก (.exe) สำหรับแอปพลิเคชันเป้าหมาย ลำดับชั้นย่อยเป็นเรื่องปกติระหว่างสถาปัตยกรรม 32 บิตและ 64 บิต | ไดเร็กทอรีที่มีชุดแอปพลิเคชันหลัก (.app) สำหรับแอปพลิเคชันเป้าหมาย ลำดับชั้นย่อยเป็นเรื่องปกติระหว่างสถาปัตยกรรม 32 บิตและ 64 บิต |
มายา_APP_DIR | ไดเร็กทอรีที่แสดงถึงไดเร็กทอรีแอปพลิเคชัน Maya ส่วนตัวของคุณ - ดูเอกสารประกอบของ Maya | เหมือนกันทั้งสองแพลตฟอร์ม |
MAYA_SCRIPT_PATH | เส้นทางการค้นหาสคริปต์ MEL - ดูเอกสารประกอบของ Maya | เหมือนกันทั้งสองแพลตฟอร์ม |
โครงสร้างไดเรกทอรีเป็นดังนี้:
-
Maya
: ไฟล์ที่เกี่ยวข้องกับฝั่ง Maya ของสะพาน-
MAYA_APP_DIR
: ดูตารางด้านบน-
...
: ลำดับชั้นย่อยที่เหลืออยู่
-
DazStudioPlugin
: ไฟล์ที่เกี่ยวข้องกับฝั่ง Daz Studio ของสะพาน DazToMaya-
Resources
: ไฟล์ข้อมูลที่จะฝังลงในปลั๊กอิน Daz Studio และสคริปต์สนับสนุนเพื่ออำนวยความสะดวกในขั้นตอนการสร้างนี้
-
dzbridge-common
: ไฟล์จาก Daz Bridge Library ที่ใช้โดย DazStudioPlugin-
Extras
: สคริปต์เสริมและไฟล์สนับสนุนเพื่อช่วยในกระบวนการแปลง โดยเฉพาะอย่างยิ่งสำหรับเอ็นจิ้นเกมและแอปพลิเคชันแบบเรียลไทม์อื่น ๆ
-
Test
: สคริปต์และผลลัพธ์ที่สร้างขึ้น (รายงาน) ที่ใช้สำหรับการทดสอบการประกันคุณภาพ