ตัวละครที่กำหนดเอง

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

คุณสามารถนำเข้าเมชที่ปรับแต่งเองเพื่อสร้างทุกอย่างจาก NPC ไปยังเสื้อผ้าแอนิเมชันของเรือใบที่มีชีวิตชีวาม เราใช้การตั้งค่าของ Avatar Importer (ตอนนี้คือ 3D Importer ) เพื่อดึ

ต่อไปนี้คือวิธีการที่เราใช้ ริกกิงและสกิน , PBR (รูปลักษณ์) และ VFX เพื่อสร้างหนึ่งในตัวละครที่ซับซ้อนที่สุดที่เราเรียกว่า "สัตว์" เราต้อ

Creature Banner

การติดตั้ง

เมื่อเรากำลังเรียกครีเอทูร์ เราพบว่าดีที่สุดที่จะรุ่นตัวละครในท่าทางกลางเพราะท่านั้นเหมาะสมที่จะยืดในทิศทางหลายอย่าง หากเรารุ่นตัวละครด้วยเส้นผมที่

จากท่าทางกายภาพที่ยืนยันได้เราเพิ่มข้อต่อด้วยความคิดเห็นที่เป็นกลางโดยมุ่งเน้นไปที่พื้นที่ที่ต้องการการเคลื่อนไหวมากที่สุด ข้อต่อน้อยลงเป็นเรื

ข้อต่อส่วนใหญ่อยู่ทางด้านซ้ายของเต็นท์และแมนดิบ ด้วยข้อต่อเหล่านี้เราต้องการการเคลื่อนไหวที่หลากหลายหรือการเคลื่อนไหว

Creature Front, Maya

เราพบว่ามีข้อมูลที่เป็นประโยชน์ต่อไปนี้ ดังนั้นตัวอักษรของเราจึงนำเข้าสู่ Studio อย่างถูกต้อง:

  • ข้อต่อและกระดูกแต่ละข้อต้องมีชื่อที่ไม่ซ้ำ
  • เมชไม่ควรมีชื่อเดียวกับข้อต่อและกระดูก
  • เมชไม่ควรมีการเปลี่ยนแปลงก่อนที่จะสกิน/ผูกผ้า; ในคำอื่น เมชควรเป็น 0 และขนาดเครื่องชั่งควรเป็น 1
  • เมชชาร์เนอร์ควรหน้าออก (แบบไม่ควรมองเห็นภายใน)
  • กระดูกไม่ควรมีตัวชี้วัดใด ๆ ทั้งหมดของข้อต่อควรจะเป็น [1, 1, 1]

สกิน

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

Skinning ที่ไม่ดี
เรียบเนียนผิว

เราพบว่าแนวทางต่อไปนี้ผลิตผลลัพธ์ที่ดีที่สุดสำหรับการเกล็ดเลือด:

  • ผลกระทบที่เกิดขึ้น (หมายถึงผลกระทบที่ส่งผลกระทบต่อส่วนหนึ่งของแบบจำลองเมื่อเคลื่อนที่) ควรเป็นสูงสุด 4 ผลกระทบต่อเวิร์ด
  • ชื่อร่วมและชื่อเมช ต้องเป็นชื่อที่ไม่ซ้ำกัน ทั้งในกันและระหว่างกัน
  • คอนของใด ๆ ที่คุณต้องการนำเข้าสู่ Studio จะต้องมีผลกระทบต่อการเรียบเรียนของผิวหนัง เช่นไม่มีประสิทธิภาพในการนำเข้ามอเตอร์จะไม่นำเข้ามัน เมื่อเป็นไปได้ให้สกินโมเดลของคุณในตำแหน่งที่เป็นเดิมหรื

นำ Mesh ไปยัง Studio

การนำตัวละครของคุณเข้าสู่ Studio ก่อสร้าง!

เพื่อนำเมชมาสู่ Studio:

  1. ส่งตัวละครจากแอปพลิเคชัน DCC กำลังติดตาม:

    • ค่าความปกติทั้งหมด รวมทั้งขนาด และชื่อ
    • ตัวละครมีความสัมพันธ์ทั้งหมดและความหนาแน่นของกระดูกและเน็ตเวิร์คทั้งหมด
    • เมชมีทั้งหมดภายใต้ 10,000 สามเหลี่ยมสำหรับแต่ละส่วนของเมช
    • ขนาดรวมของ Mesh ไม่เกิน 2000 หน่วยในแกนใด ๆ
    • ดู ความต้องการของเมช สำหรับรายการความต้องการของแบบ
    Creature in DCC Tool
  2. ใน Importer 3D นำเข้าไฟล์ .fbx หรือ .obj ที่กำหนดเอง

    Creature Imported Into Studio

ทำให้สิ่งมีชีวิตเปล่งแสง

เมื่อรุ่นของสัตว์ถูกสร้างขึ้นและไม่ต้องการอีกการนำเข้าใด ๆ โดยตรงไปยัง Studio เราเริ่มรวบรวมวัตถุ SurfaceAppearance วัตถุแสง และเอฟเฟกต์วิดีโอ เราทำเช่นนี้เพื่อให้แน่ใจว่าคุณภาพของรุ่นจะ

Glowing Creature Example

เรารู้ว่าเราต้องการให้สัตว์เป็นสีมืด และจุดโฟกัสจะเป็นตาและเท้าของมัน ตรรกะของความเข้าใจสูงจะดึงดูดความสนใจ ดังนั้นการมีไม่กี

Creature Eyes in Studio

วัสดุนีออนไม่เปล่งแสงจริงดังนั้นหลังจากการทดสอบบางส่วนเราเพิ่มชิ้นส่วนที่แยกออกมาเพื่อควบคุมการวางและทิศทางของการปล่อยแสง นี่จะให้แน่ใจว่าแสงถูกนำไปใช้อย่างมีประสิทธิภาพและโคมไฟ

Point Light in Studio

สังเกตว่า SpotLights เพิ่มความสว่างทางสายตาให้กับสัตว์ที่อยู่ใกล้พื้นผิวอื่นหรือผู้เล่น

Creature Light Example

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

Particle Example

ทำให้ VFX ติดตามตัวละคร

ตำแหน่งเมชของตัวละครผิวหนังไม่ได้รับการปรับปรุงเมื่ออนิเมชั่นสัตว์ประหลาดจึงต้องการวิธีการให้แน่ใจว่า VFX, SFX และไฟทั้งหมดติดตามสัตว์ประหลาดอย่างถูกต้อง เพ

  1. เราวาง 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 do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- ค้นหาโฟลเดอร์ VFX
    -- ค้นหากระดูกผ่านลักษณะและคํานวณความเคลื่อนที่สําหรับแต่ละส่วน
    for _,part in vfxParts do
    local name = part:GetAttribute("AttachedBoneName")
    local bone = model:FindFirstChild(name, true)
    if bone then
    local offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)
    vfxTable[model][part] = {bone, offset}
    else
    warn("Vfx part refers to bone that could not be found.")
    end
    end
    end
    print(vfxTable)
    -- UPDATE - นี้ควรเชื่อมโยงกับทุก RunService ของลูกค้า
    -- ผ่านโมเดลทั้งหมดแล้วอัปเดตโมเดลทั้งหมดเพื่อให้ตรงกับโครงกระดูก
    function VfxUpdateModule.updateVfx()
    for model, vfxParts in vfxTable do
    for part, bone in vfxParts do
    part.CFrame = bone[1].TransformedWorldCFrame * bone[2]
    end
    end
    end
    return VfxUpdateModule
  2. เราสร้าง VFXUpdateModule ModuleScript เพื่อบอกให้ผู้ใดที่มีเหตุผลด้วย AnimatedVfxModel เพื่ออัปเดตในเหตุการณ์เล่น

  3. เราแท็กกลุ่มของผู้ใช้ด้วย AnimatedVfxModel โดยใช้ เครื่องมือแท็กเรืองแสง ที่อยู่ในแท็บ ดู ในการใช้แท็กจะช่วยให้ 1> VFXUpdateModule1> รู้ว่าต้องมองหา

    VFX In Studio Example
  4. ในที่สุดเราเพิ่มลักษณะลูกศริษฐ์ AttachedBoneName ลักษณะลูกศริษฐ์ที่ติดตั้งไว้ให้กับส่วนที่เราต้องการอนิเมชั่นและเพิ่มชื่อที่แน่นอนของข้อต่อที่เราต้องการให้ติดตาม

การเรียกแต่งตัวผู้สร้าง

ต่อไป, เราจัดเตรียมแผนที่ PBR (Physically Base Rendered) ของเนื้อผ้า แผนที่เหล่านี้ให้ความเงางามและการเปลี่ยนแปลงพื้นผิวที่หลากหลายเพื่อให้มันดูเหมือนว่ามีจุดบกพร่องขนาดเล็กและข้อบกพ

Creature Texturing Comparison

นี่คือวิธีที่เราสร้างแผนที่เนื้อผิว:

  1. แผนที่เนื้อผ้าสำหรับตัวละครนี้อยู่ทั้งหมดใน "แผ่น" เดียวต่อแผนที่ นี่ทำให้สัตว์มีประสิทธิภาพมากขึ้นและหมายถึงว่าเราต้องจัดการกับแผนที่เนื้อผ้าน้อยลงหรือวัตถุ SurfaceAppearance น้อยลง

  2. สำหรับพื้นที่ที่ต้องการจะเรืองแสงหรือเป็นสีเองตัวเองเช่น "grabby tentacles" เรายังใช้ความโปร่งใสบน SurfaceAppearance เพื่อผสานกับส่วนเหล่านั้น

    Illumination Example

    เราพบว่ามีประโยชน์ในการปฏิบัติตามแนวทางเหล่านี้เมื่อสร้างแผนที่ลักษณะผิว:

    • คุณต้องแน่ใจว่าแผนที่ของคุณไม่ใหญ่กว่า 1024×1024
    • ช่องสีเขียวของคุณอาจต้องการถูกฟลิปตามแอปพลิเคชันที่คุณทำงานใน

การวาดภาพเครื่องหมาย

การอนิเมชั่นเป็นสิ่งที่ควบคุมได้มากและมีสไตล์ส่วนตัว จับภาพ"กรอบ" ใน DCC ของคุณหรือการใช้ Studio เครื่องมือ Animation Editor ที่มีประสิทธิภาพ

เมื่อเรากล่าวถึงก่อนหน้านี้เราต้องการให้แน่ใจว่าเรามีข้อต่อเพียงพอสำหรับการเคลื่อนไหวของน้ำมันเช่นเดียวกับจำนวนของข้อต่อในร่างกายของคุณ ดัง

เราใช้เทคนิคนี้เพื่อสร้างภาพเคลื่อนไหวของสัตว์ที่รู้สึกเหมือนว่าขาของมันกำลังตอบสนองต่อการเคลื่อนไหวที่ขับเคลื่อนโดยร่างกายของมันเช่นที่แสดงไว้ที่นี่:

Creature Animation Example

หากใช้แอปพลิเคชัน DCC แอนิเมชันเราพบว่าแนวทางต่อไปนี้ทำงานได้ดีที่สุด:

  • ตั้งค่าอัตราเฟรมต่อวินาทีเป็นอย่างน้อย 30 ยิงมุมมองบุคคลที่หนึ่ง
  • สร้างอนิเมชันของคุณด้วยตัวละครเดียวกับที่คุณใช้มันกับ
  • ส่งข้อมูลการเคลื่อนไหวของคุณในรูปแบบไฟล์ .fbx ที่แยกออก

เนื่องจากเราได้อนิเมชันตัวละครอยู่นอกสตูดิโอดังนั้นเราจึงต้องใช้เครื่องมืออนิเมชันเพื่อนำไฟล์อนิเมชัน .fbx มา เครื่องมือนี้ช่วยให้คุณเลือกตัวละครใด ๆ ที่มีข้อต่อหรื

แอนิเมชัน:

  1. ในแท็บ Plugins เลือก Editor อนิเมชั่น

    Animation Editor In Studio
  2. เลือกตัวละครที่คุณต้องการอนิเมชันใน Roblox ตัวละครนั้นควรเป็นตัวละครเดียวกับที่คุณกำลังอนิเมชันใน DCC ภายนอกของคุณ

  3. คลิกปุ่มในส่วนด้านซ้ายบนของหน้าต่างเรเดอร์, เลือกนำเข้าจากแอนิเมชั่น FBX, และค้นหาไฟล์แอนิเมชั่น .fbx ของคุณที่ส่งออก

    Animation Import Example 1 Animation Import Example 2
  4. เมื่อคุณพอใจกับอนิเมชันของคุณคุณสามารถส่งออกไปยังกลุ่มโมเดลของตัวละครที่นำเข้าแล้วให้คุณสามารถใช้โค้ดต่อไปนี้เพื่อดำเนินการอนิเมชัน:

    Animation Script Example

    local animationId = "YOUR_ANIMATION_ID"
    local char = script.Parent
    local 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)

ผลสรุป

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

Final Creature Rendering