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

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

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

ส่วนถัดไปจะพูดถึงวิธีที่เราใช้ rigging และ skinning, PBR (ผิว ลักษณะ) และ VFX ในการสร้างหนึ่งในตัวละครที่ซับซ้อนกว่าที่เราเรียกว่า "Creature" เราต้องการให้มันส่องแสง, แผ่แสงบางอย่าง, มีเส้นทางของควันอนุภาค, และการเคลื่อนไหวที่หน่วยเหลือในการทำให้มีการเคลื่อนไหวที่คล่องแคล่วที่เกี่ยวข้องกับการทำผิวด้วยร่างกายที่มีข้อต่อเพียงพอในการสร้างคลื่นที่น่าเชื่อถือของหนวดของมัน

Creature Banner

Rig

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

จากท่าตรวจสอบที่เป็นกลาง เราได้เพิ่มข้อต่ออย่างประหยัด โดยมุ่งเน้นไปที่พื้นที่ที่ต้องการการเคลื่อนไหวมากที่สุด ข้อต่อน้อยลงยิ่งดี เพราะคุณจะต้องจัดการกับพวกเขาเมื่อทำผิวตัวละครของคุณ และคุณจะมีน้อยลงในการควบคุมเมื่อคุณทำให้พวกเขาเคลื่อนไหว ในสกรีนช็อตก่อนหน้านี้ Creature ดูเหมือนมีข้อต่อมากมายอยู่ที่กลาง แต่ร่างกายหลักมีเพียงข้อต่อเดียวเท่านั้น

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

Creature Front, Maya

เราเห็นว่าคำแนะนำต่อไปนี้มีประโยชน์ เพื่อให้การนำเข้าขนาดของตัวละครถูกต้องใน Studio:

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

Skin

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

การทำผิวไม่ดี
การทำผิวเรียบ

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

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

นำเข้าขนาดรูปแบบไปยัง Studio

การนำเข้าตัวละครที่กำหนดเองของคุณใน Studio เป็นหนึ่งในส่วนที่น่าตื่นเต้นที่สุดของกระบวนการ เพราะคุณได้เห็นการสร้างสรรค์ของคุณในประสบการณ์ที่คุณกำลังสร้าง!

เมื่อนำเข้าขนาดรูปแบบไปยัง Studio:

  1. ส่งออกตัวละครจากแอปพลิเคชัน DCC และตรวจสอบสิ่งต่อไปนี้:

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

    Creature Imported Into Studio

ทำให้สิ่งมีชีวิตส่องแสง

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

Glowing Creature Example

เรารู้ว่าเราต้องการให้ Creature มีสีเข้ม และจุดที่ให้ความสำคัญคือดวงตาและหนวด "ที่จับได้" ของมัน จุดที่มีการเปรียบเทียบสูงมักมีแนวโน้มดึงดูดความสนใจ ดังนั้นการมีจุดที่แข็งแรงบางจุดช่วยทำให้ผู้ชมรู้ว่าจะให้ความสำคัญกับอะไร Studio รองรับวัสดุเรืองแสงที่ส่องสว่างเองดังนั้นในระยะแรกเราจึงแยกดวงตาออกเพื่อให้เป็นวัสดุของตนเองจากตัวละครที่เหลือ เราทำสิ่งที่คล้ายกันสำหรับหนวดเพื่อให้พวกมันส่องแสงที่ปลายเท่านั้น

Creature Eyes in Studio

วัสดุเรืองแสงไม่ผลิตแสงจริง ดังนั้นหลังจากการทดลองบางอย่างเราจึงเพิ่มส่วนแยกเพื่อควบคุมการวางและทิศทางของการออกซึ่งอันดับนี้ช่วยให้แน่ใจว่าแสงมีการควบคุมในลักษณะที่ช่วยเพิ่มประกายของดวงตาและยังส่งแสงออกจากแหล่งที่มาของมันเอง

Point Light in Studio

โปรดสังเกตว่า SpotLights เพิ่มความน่าสนใจให้กับ Creature ใกล้พื้นผิวอื่นๆ หรือผู้เล่น

Creature Light Example

นอกจากนี้เราอยากให้หนวดของ Creature ปล่อยอนุภาคออกมา ดังนั้นมันจึงทิ้งไว้เบื้องหลังเป็นเส้นทางควันที่มันเคลื่อนไหว เนื่องจากหนวดมีความยาวมาก การเพิ่ม ParticleEmitter ลงในหนวดทั้งหมดจะทำให้อนุภาคออกจากหนวดทั้งหมดแทนที่จะเป็นปลาย เพื่อจัดการกับสิ่งนี้ เราใช้ส่วนเล็กๆ ที่วางใกล้ปลายของหนวดเพื่อให้เราสามารถควบคุมขนาดการปล่อย, การวาง, และทิศทางของอนุภาคได้

Particle Example

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

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

  1. เราได้วาง LocalScript ต่อไปนี้ใน StarterPlayerStarterPlayerScripts ซึ่งมันถูกเริ่มใช้งานฟังก์ชันการอัปเดต VFX

    Local Script

    -- เพิ่มโค้ดนี้ลงในสคริปต์ท้องถิ่นที่มีการเชื่อมต่อ PreSimulation อยู่แล้ว
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Module Script

    -- โมดูลนี้แนบส่วนเข้ากับภาพเคลื่อนไหวเพื่อให้มีการอัปเดตตามเวลาที่
    -- การเคลื่อนไหวเล่น มันเป็นทางออกสำหรับข้อจำกัดปัจจุบัน
    -- กับข้อต่อและกระดูกและอาจไม่จำเป็นเสมอไป
    --
    -- ข้อกำหนด:
    -- เพื่อรวม โมเดลต้องมีแท็ก "AnimatedVfxModel" และโฟลเดอร์
    -- ของส่วนทั้งหมดที่คุณต้องการซิงค์กับการเคลื่อนไหว ทุกส่วนต้องมี
    -- แอตทริบิวต์ชื่อ "AttachedBoneName" ที่อ้างถึงชื่อของ
    -- กระดูกที่คุณต้องการติดอยู่ ส่วนต้องอยู่ในตำแหน่งที่ถูกต้องสัมพันธ์กับกระดูกที่ต้องการ
    --
    -- การใช้งาน:
    -- LocalScript ควรเรียกใช้โมดูลนี้ จากนั้นเชื่อมต่อ
    -- VfxUpdateModule.updateVfx กับเหตุการณ์ RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- SETUP - นี้ควรทำครั้งเดียวในแต่ละไคลเอนต์
    -- เก็บรวบรวมโมเดลทั้งหมดที่มีแท็ก
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- ที่เราจะเก็บส่วนพวกนี้และการเคลื่อนที่
    -- กำหนดตารางให้กับแต่ละโมเดลซึ่งจะเก็บส่วน VFX ทั้งหมดและการเคลื่อนที่
    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 อ้างถึงกระดูกที่ไม่สามารถพบได้.")
    end
    end
    end
    print(vfxTable)
    -- UPDATE - นี้ควรเชื่อมโยงกับ RunService.PreSimulation ของแต่ละไคลเอนต์
    -- ผ่านโมเดลทั้งหมด จากนั้นอัปเดตทุกส่วนในโมเดลให้ตรงกับกระดูก
    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 โดยใช้ส่วน Tags ในคุณสมบัติของมัน การใช้แท็กช่วยให้ VFXUpdateModule รู้ว่าควรมองหาโฟลเดอร์ VFX แรกที่ไหนและทำการอัปเดต

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

ทำให้สิ่งมีชีวิตมีพื้นผิว

ถัดไป เราจัดตั้งแผนที่พื้นผิว PBR (Physically Based Rendered) แผนที่ภาพที่มีพลังงานเหล่านี้ให้ความหลากหลายและความเงางามที่ทำให้สิ่งมีชีวิตดูเหมือนกับว่ามีรอยบุบและไม่สม่ำเสมอเล็กน้อย เอฟเฟกต์นี้ช่วยขายลักษณะของ Creature เมื่อมันใกล้กับผู้เล่น

Creature Texturing Comparison

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

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

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

    Illumination Example

    เราพบว่ามันมีประโยชน์ที่จะปฏิบัติตามแนวทางต่อไปนี้เมื่อสร้างแผนที่พื้นผิว:

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

ทำให้สิ่งมีชีวิตเคลื่อนไหว

การเคลื่อนไหวมีความคิดเฉพาะเจาะจงและมีรูปแบบส่วนตัว ซึ่งรวมถึงการจับการเคลื่อนไหว, การสร้างการเคลื่อนไหวด้วยมือในแอปพลิเคชัน DCC ของคุณ หรือการใช้ Animation Editor ที่ทรงพลังของ Studio

อย่างที่เรากล่าวถึงก่อนหน้านี้ เราต้องการให้แน่ใจว่าเรามีข้อต่อเพียงพอสำหรับการเคลื่อนไหวที่คล่องแคล่วและมีขาสำหรับการตรวจสอบการเคลื่อนไหว ของ Creature รู้สึกเป็นธรรมชาติและ "ชั้น" การจัดชั้นหรือการเคลื่อนไหวรองคือสิ่งที่คุณเห็นในชีวิตประจำวัน — เมื่อต้องโยนแขนออก ข้อต่อทุกข้อต้องตอบสนองต่อแรงกระตุ้นเริ่มต้นจากแขนบนของคุณ และข้อต่อทุกข้อตในร่างกายของคุณไม่ได้เคลื่อนไหวหรือพักอยู่ในเวลาเดียวกัน

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

Creature Animation Example

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

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

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

ในการนำเข้าสำหรับอนิเมชัน:

  1. ในแท็บ Avatar ของแถบเครื่องมือ ให้คลิก Clip Editor

  2. เลือกตัวละครที่จัดระเบียบที่คุณต้องการให้เคลื่อนไหวใน Roblox ตัวละครควรเป็นตัวเดียวกันกับที่คุณจัดระเบียบในแอปพลิเคชัน DCC ของคุณ

  3. คลิกปุ่ม ที่มุมซ้ายบนของหน้าต่างโปรแกรมแก้ไข เลือก Import From FBX Animation และค้นหาไฟล์อนิเมชัน .fbx ที่คุณส่งออกมา

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

    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
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ