คุณสามารถนำเข้าเมชที่ปรับแต่งเองเพื่อสร้างทุกอย่างจาก NPC ไปยังเสื้อผ้าแอนิเมชันของเรือใบที่มีชีวิตชีวาม เราใช้การตั้งค่าของ Avatar Importer (ตอนนี้คือ 3D Importer ) เพื่อดึ
ต่อไปนี้คือวิธีการที่เราใช้ ริกกิงและสกิน , PBR (รูปลักษณ์) และ VFX เพื่อสร้างหนึ่งในตัวละครที่ซับซ้อนที่สุดที่เราเรียกว่า "สัตว์" เราต้อ
การติดตั้ง
เมื่อเรากำลังเรียกครีเอทูร์ เราพบว่าดีที่สุดที่จะรุ่นตัวละครในท่าทางกลางเพราะท่านั้นเหมาะสมที่จะยืดในทิศทางหลายอย่าง หากเรารุ่นตัวละครด้วยเส้นผมที่
จากท่าทางกายภาพที่ยืนยันได้เราเพิ่มข้อต่อด้วยความคิดเห็นที่เป็นกลางโดยมุ่งเน้นไปที่พื้นที่ที่ต้องการการเคลื่อนไหวมากที่สุด ข้อต่อน้อยลงเป็นเรื
ข้อต่อส่วนใหญ่อยู่ทางด้านซ้ายของเต็นท์และแมนดิบ ด้วยข้อต่อเหล่านี้เราต้องการการเคลื่อนไหวที่หลากหลายหรือการเคลื่อนไหว
เราพบว่ามีข้อมูลที่เป็นประโยชน์ต่อไปนี้ ดังนั้นตัวอักษรของเราจึงนำเข้าสู่ Studio อย่างถูกต้อง:
- ข้อต่อและกระดูกแต่ละข้อต้องมีชื่อที่ไม่ซ้ำ
- เมชไม่ควรมีชื่อเดียวกับข้อต่อและกระดูก
- เมชไม่ควรมีการเปลี่ยนแปลงก่อนที่จะสกิน/ผูกผ้า; ในคำอื่น เมชควรเป็น 0 และขนาดเครื่องชั่งควรเป็น 1
- เมชชาร์เนอร์ควรหน้าออก (แบบไม่ควรมองเห็นภายใน)
- กระดูกไม่ควรมีตัวชี้วัดใด ๆ ทั้งหมดของข้อต่อควรจะเป็น [1, 1, 1]
สกิน
เมื่อเราจบกะโหลกของสัตว์เราต่อไปขั้นตอนต่อไปคือการเคลือบผิว การเคลือบผิวสามารถเป็นงานที่ยุ่งยากดังนั้นจึงเป็นการดีที่
เราพบว่าแนวทางต่อไปนี้ผลิตผลลัพธ์ที่ดีที่สุดสำหรับการเกล็ดเลือด:
- ผลกระทบที่เกิดขึ้น (หมายถึงผลกระทบที่ส่งผลกระทบต่อส่วนหนึ่งของแบบจำลองเมื่อเคลื่อนที่) ควรเป็นสูงสุด 4 ผลกระทบต่อเวิร์ด
- ชื่อร่วมและชื่อเมช ต้องเป็นชื่อที่ไม่ซ้ำกัน ทั้งในกันและระหว่างกัน
- คอนของใด ๆ ที่คุณต้องการนำเข้าสู่ Studio จะต้องมีผลกระทบต่อการเรียบเรียนของผิวหนัง เช่นไม่มีประสิทธิภาพในการนำเข้ามอเตอร์จะไม่นำเข้ามัน เมื่อเป็นไปได้ให้สกินโมเดลของคุณในตำแหน่งที่เป็นเดิมหรื
นำ Mesh ไปยัง Studio
การนำตัวละครของคุณเข้าสู่ Studio ก่อสร้าง!
เพื่อนำเมชมาสู่ Studio:
ส่งตัวละครจากแอปพลิเคชัน DCC กำลังติดตาม:
- ค่าความปกติทั้งหมด รวมทั้งขนาด และชื่อ
- ตัวละครมีความสัมพันธ์ทั้งหมดและความหนาแน่นของกระดูกและเน็ตเวิร์คทั้งหมด
- เมชมีทั้งหมดภายใต้ 10,000 สามเหลี่ยมสำหรับแต่ละส่วนของเมช
- ขนาดรวมของ Mesh ไม่เกิน 2000 หน่วยในแกนใด ๆ
- ดู ความต้องการของเมช สำหรับรายการความต้องการของแบบ
ใน Importer 3D นำเข้าไฟล์ .fbx หรือ .obj ที่กำหนดเอง
ทำให้สิ่งมีชีวิตเปล่งแสง
เมื่อรุ่นของสัตว์ถูกสร้างขึ้นและไม่ต้องการอีกการนำเข้าใด ๆ โดยตรงไปยัง Studio เราเริ่มรวบรวมวัตถุ SurfaceAppearance วัตถุแสง และเอฟเฟกต์วิดีโอ เราทำเช่นนี้เพื่อให้แน่ใจว่าคุณภาพของรุ่นจะ
เรารู้ว่าเราต้องการให้สัตว์เป็นสีมืด และจุดโฟกัสจะเป็นตาและเท้าของมัน ตรรกะของความเข้าใจสูงจะดึงดูดความสนใจ ดังนั้นการมีไม่กี
วัสดุนีออนไม่เปล่งแสงจริงดังนั้นหลังจากการทดสอบบางส่วนเราเพิ่มชิ้นส่วนที่แยกออกมาเพื่อควบคุมการวางและทิศทางของการปล่อยแสง นี่จะให้แน่ใจว่าแสงถูกนำไปใช้อย่างมีประสิทธิภาพและโคมไฟ
สังเกตว่า SpotLights เพิ่มความสว่างทางสายตาให้กับสัตว์ที่อยู่ใกล้พื้นผิวอื่นหรือผู้เล่น
นอกจากนี้เราต้องการให้เกล็ดเลือดของสัตว์ประหลาดเปล่งเกล็ดเลือดบางอย่างดังนั้นมันจึงจะทิ้งเส้นทางควันเมื่อมันเคลื่อนที่ เนื่
ทำให้ VFX ติดตามตัวละคร
ตำแหน่งเมชของตัวละครผิวหนังไม่ได้รับการปรับปรุงเมื่ออนิเมชั่นสัตว์ประหลาดจึงต้องการวิธีการให้แน่ใจว่า VFX, SFX และไฟทั้งหมดติดตามสัตว์ประหลาดอย่างถูกต้อง เพ
เราวาง LocalScript ใน StarterPlayer ไปยัง StarterPlayerScripts นี้ สิ่งนี้ทำงานในฐานะที่เป็นตัวอัปเดต VFX อย่างเป็นทางการ
สคริปต์ท้องถิ่น-- เพิ่มสแน็ปช็อตนี้ให้กับสคริปต์ท้องถิ่นที่มีอยู่เพื่อทำ PreSimulation-- การเชื่อมต่อlocal RunService = game:GetService("RunService")local vfx = require(workspace.VfxUpdateModule)RunService.PreSimulation:Connect(vfx.updateVfx)สคริปโมดูล-- โมดูลนี้แนบอนุกรมเพื่อให้อัปเดตเป็น-- เล่นอนิเมชัน มันเป็น workaround สำหรับข้อจํากัดปัจจุบัน-- ด้วยข้อต่อและกระดูกและจะไม่จำเป็นเสมอ---- ข้อกําหนดเบื้องต้น:-- เพื่อให้รวม, แบบจำลองต้องการแท็ก "AnimatedVfxModel" และโฟลเดอร์-- แอนิเมชันแต่ละส่วนต้องการ-- ค่าตัวละครที่มีชื่อว่า "AttachedBoneName" ที่อ้างอิงถึงชื่อของ-- กระดูกที่คุณต้องการแนบมัน ชิ้นส่วนควรอยู่ใน-- ตําแหน่งที่ถูกต้องเมื่อเปรียบเทียบกับกระดูกที่ต้องการ---- เพื่อใช้:-- LocalScript จะต้องการโมดูลนี้แล้วจึงเชื่อมต่อ-- VfxUpdateModule.updateVfx ไปยัง RunService.PreSimulation เหตุการณ์local VfxUpdateModule = {}local CollectionService = game:GetService("CollectionService")-- การตั้งค่า - นี่ควรจะทำงานในแต่ละคลายเคลม-- รวบรวม모デルทั้งหมดด้วยแท็กlocal vfxModels = CollectionService:GetTagged("AnimatedVfxModel")local vfxTable = {} -- ที่เราจะเก็บรวบรวมชิ้นส่วนและออเฟ็ตทั้งหมด-- กำหนดตารางสำหรับแต่ละแบบที่จะเก็บรวบรวมวัตถุอันทั้งหมดและออฟเซ็ตfor _, model in vfxModels dovfxTable[model] = {}local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- ค้นหาโฟลเดอร์ VFX-- ค้นหากระดูกผ่านลักษณะและคํานวณความเคลื่อนที่สําหรับแต่ละส่วนfor _,part in vfxParts dolocal name = part:GetAttribute("AttachedBoneName")local bone = model:FindFirstChild(name, true)if bone thenlocal offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)vfxTable[model][part] = {bone, offset}elsewarn("Vfx part refers to bone that could not be found.")endendendprint(vfxTable)-- UPDATE - นี้ควรเชื่อมโยงกับทุก RunService ของลูกค้า-- ผ่านโมเดลทั้งหมดแล้วอัปเดตโมเดลทั้งหมดเพื่อให้ตรงกับโครงกระดูกfunction VfxUpdateModule.updateVfx()for model, vfxParts in vfxTable dofor part, bone in vfxParts dopart.CFrame = bone[1].TransformedWorldCFrame * bone[2]endendendreturn VfxUpdateModuleเราสร้าง VFXUpdateModule ModuleScript เพื่อบอกให้ผู้ใดที่มีเหตุผลด้วย AnimatedVfxModel เพื่ออัปเดตในเหตุการณ์เล่น
เราแท็กกลุ่มของผู้ใช้ด้วย AnimatedVfxModel โดยใช้ เครื่องมือแท็กเรืองแสง ที่อยู่ในแท็บ ดู ในการใช้แท็กจะช่วยให้ 1> VFXUpdateModule1> รู้ว่าต้องมองหา
ในที่สุดเราเพิ่มลักษณะลูกศริษฐ์ AttachedBoneName ลักษณะลูกศริษฐ์ที่ติดตั้งไว้ให้กับส่วนที่เราต้องการอนิเมชั่นและเพิ่มชื่อที่แน่นอนของข้อต่อที่เราต้องการให้ติดตาม
การเรียกแต่งตัวผู้สร้าง
ต่อไป, เราจัดเตรียมแผนที่ PBR (Physically Base Rendered) ของเนื้อผ้า แผนที่เหล่านี้ให้ความเงางามและการเปลี่ยนแปลงพื้นผิวที่หลากหลายเพื่อให้มันดูเหมือนว่ามีจุดบกพร่องขนาดเล็กและข้อบกพ
นี่คือวิธีที่เราสร้างแผนที่เนื้อผิว:
แผนที่เนื้อผ้าสำหรับตัวละครนี้อยู่ทั้งหมดใน "แผ่น" เดียวต่อแผนที่ นี่ทำให้สัตว์มีประสิทธิภาพมากขึ้นและหมายถึงว่าเราต้องจัดการกับแผนที่เนื้อผ้าน้อยลงหรือวัตถุ SurfaceAppearance น้อยลง
สำหรับพื้นที่ที่ต้องการจะเรืองแสงหรือเป็นสีเองตัวเองเช่น "grabby tentacles" เรายังใช้ความโปร่งใสบน SurfaceAppearance เพื่อผสานกับส่วนเหล่านั้น
เราพบว่ามีประโยชน์ในการปฏิบัติตามแนวทางเหล่านี้เมื่อสร้างแผนที่ลักษณะผิว:
- คุณต้องแน่ใจว่าแผนที่ของคุณไม่ใหญ่กว่า 1024×1024
- ช่องสีเขียวของคุณอาจต้องการถูกฟลิปตามแอปพลิเคชันที่คุณทำงานใน
การวาดภาพเครื่องหมาย
การอนิเมชั่นเป็นสิ่งที่ควบคุมได้มากและมีสไตล์ส่วนตัว จับภาพ"กรอบ" ใน DCC ของคุณหรือการใช้ Studio เครื่องมือ Animation Editor ที่มีประสิทธิภาพ
เมื่อเรากล่าวถึงก่อนหน้านี้เราต้องการให้แน่ใจว่าเรามีข้อต่อเพียงพอสำหรับการเคลื่อนไหวของน้ำมันเช่นเดียวกับจำนวนของข้อต่อในร่างกายของคุณ ดัง
เราใช้เทคนิคนี้เพื่อสร้างภาพเคลื่อนไหวของสัตว์ที่รู้สึกเหมือนว่าขาของมันกำลังตอบสนองต่อการเคลื่อนไหวที่ขับเคลื่อนโดยร่างกายของมันเช่นที่แสดงไว้ที่นี่:
หากใช้แอปพลิเคชัน DCC แอนิเมชันเราพบว่าแนวทางต่อไปนี้ทำงานได้ดีที่สุด:
- ตั้งค่าอัตราเฟรมต่อวินาทีเป็นอย่างน้อย 30 ยิงมุมมองบุคคลที่หนึ่ง
- สร้างอนิเมชันของคุณด้วยตัวละครเดียวกับที่คุณใช้มันกับ
- ส่งข้อมูลการเคลื่อนไหวของคุณในรูปแบบไฟล์ .fbx ที่แยกออก
เนื่องจากเราได้อนิเมชันตัวละครอยู่นอกสตูดิโอดังนั้นเราจึงต้องใช้เครื่องมืออนิเมชันเพื่อนำไฟล์อนิเมชัน .fbx มา เครื่องมือนี้ช่วยให้คุณเลือกตัวละครใด ๆ ที่มีข้อต่อหรื
แอนิเมชัน:
ในแท็บ Plugins เลือก Editor อนิเมชั่น
เลือกตัวละครที่คุณต้องการอนิเมชันใน Roblox ตัวละครนั้นควรเป็นตัวละครเดียวกับที่คุณกำลังอนิเมชันใน DCC ภายนอกของคุณ
คลิกปุ่มในส่วนด้านซ้ายบนของหน้าต่างเรเดอร์, เลือกนำเข้าจากแอนิเมชั่น FBX, และค้นหาไฟล์แอนิเมชั่น .fbx ของคุณที่ส่งออก
เมื่อคุณพอใจกับอนิเมชันของคุณคุณสามารถส่งออกไปยังกลุ่มโมเดลของตัวละครที่นำเข้าแล้วให้คุณสามารถใช้โค้ดต่อไปนี้เพื่อดำเนินการอนิเมชัน:
local animationId = "YOUR_ANIMATION_ID"local char = script.Parentlocal animController = char:FindFirstChildWhichIsA("Humanoid") or char:FindFirstChildOfClass("AnimationController")local animation = Instance.new("Animation")animation.AnimationId = "rbxassetid://" .. tostring(animationId)local animTrack = animController:LoadAnimation(animation)animTrack:Play(0, 1, 1)
ผลสรุป
หลังจากการปรับแต่งสี ความสว่าง และประกายอื่น ๆ อีกสองสามข้อให้มันดูเหมือนมีรัศมีที่แข็งแกร่งให้มองออกไปข้างหน้าต่าง นี่คือผลลัพธ์สุดท้ายในสถานีอวกาศ!