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

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

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

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

Creature Banner

แถ่น

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

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

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

Creature Front, Maya

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

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

สกิน

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

ผิวไม่ดี
>

ผิวเรียบเนียน

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

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

นำเมทช์ไปยังสตูดิโอ

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

เพื่อนําเมทช์ไปยัง Studio:

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

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

    Creature Imported Into Studio

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

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

Glowing Creature Example

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

Creature Eyes in Studio

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

Point Light in Studio

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

Creature Light Example

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

Particle Example

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

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

  1. เราวางต่อไปนี้ LocalScript ใน StarterPlayerStarterPlayerScripts ซึ่งจะทำงานอัปเดต VFX โดยพื้นฐาน

    สคริปต์ท้องถิ่น

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

    -- โมดูลนี้แนบชิ้นส่วนไปยังแอนิเมชั่นเพื่อให้อัปเดตเป็น
    -- การเล่นแอนิเมชัน เป็นวิธีแก้ไขข้อจํากัดปัจจุบัน
    -- ด้วยข้อต่อและกระดูกและจะไม่จำเป็นเสมอไป
    --
    -- ข้อกําหนดเบื้องต้น:
    -- เพื่อรวมโมเดลต้องมีแท็ก "AnimatedVfxModel" และไดเรกทอรี
    -- แอนิเมชันแต่ละส่วนต้องการ
    -- คุณสมบัติที่เรียกว่า "ชื่อกระดูกที่ติดอยู่" ซึ่งส่งถึงชื่อของ
    -- กระดูกที่คุณต้องการติดตั้ง ชิ้นส่วนควรอยู่ในแล้ว
    -- ตำแหน่งที่ถูกต้องเมื่อเทียบกับกระดูกที่ต้องการ
    --
    -- เพื่อใช้:
    -- สคริปท้องถิ่นควรต้องการโมดูลนี้จากนั้นเชื่อมต่อ
    -- VfxUpdateModule.updateVfx ไปยังอีเวนต์ RunService.PreSimulation
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- ตั้งค่า - ควรทำงานบนแต่ละไคลเอนต์เพียงครั้งเดียว
    -- รวบรวมโมเดลทั้งหมดที่มีแท็ก
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- ที่เราจะเก็บชิ้นส่วนและค่าออฟเซ็ตทั้งหมด
    -- กำหนดโต๊ะให้แต่ละโมเดลที่จะบรรจุส่วน vfx ทั้งหมดและค่าออฟเซ็ต
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- ค้นหาโฟลเดอร์ theVFX
    -- ค้นหากระดูกผ่านคุณสมบัติและคำนวณค่าส่วนลบสำหรับแต่ละส่วน
    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)
    -- อัปเดต - ควรเชื่อมโยงกับ RunService.PreSimulation ของลูกค้าทุกราย
    -- ผ่านไปทุกรุ่นแล้วอัปเดตส่วนทั้งหมดบนรุ่นเพื่อให้ตรงกับ bonecframe
    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 โดยใช้ เครื่องมือแท็ก ซึ่งสามารถเข้าถึงได้จากแท็บ ดูการใช้แท็กช่วยให้ VFXUpdateModule รู้ว่าต้องมองหาวัตถุใดเป็นเด็ก VFX คนแรกและใช้การอัปเดต

    VFX In Studio Example
  4. ในที่สุดเราเพิ่มคุณสมบัติที่กําหนดเอง ชื่อกระดูกที่ติดอยู่ ติดตาม

เทกเจอร์สิ่งมีชีวิต

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

Creature Texturing Comparison

นี่คือวิธีที่เราสร้างแผนที่พื้นผิวของเทกเจอร์ที่ปรากฏ:

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

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

    Illumination Example

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

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

อนิเมทสิ่งมีชีวิต

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

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

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

Creature Animation Example

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

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

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

เพื่อนำเข้าแอนิเมชัน:

  1. ในแท็บ อวตาร ของแถบเครื่องมือ เปิด ตัวแก้ไขแอนิเมชัน

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

  3. คลิกปุ่ม ในส่วนด้านซ้ายบนของหน้าต่างเอเดอร์, เลือก นำเข้าจากแอนิเมชัน FBX , และค้นหาไฟล์อนิเมชัน .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