Karakter Kustom

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Anda dapat mengimpor mesh kustom untuk membuat segala sesuatu mulai dari NPC hingga kain animasi dari perahu layar. Kami menggunakan pengaturan kustom dari Importer untuk membawa masuk karakter kustom yang lebih eksotis, seperti makhluk lubang hitam misterius dan droid layanan yang ramah, meskipun tidak menyadari.

Bagian berikut membahas bagaimana kami menggunakan rigging dan skinning, PBR (penampilan permukaan), dan VFX untuk membangun salah satu karakter kami yang lebih rumit yang kami beri nama "Creature." Kami ingin karakter ini bersinar, memancarkan cahaya, memiliki jejak asap partikel, dan gerakan yang cair yang melibatkan skinning rig dengan cukup banyak sendi untuk menciptakan gelombang tentakel yang meyakinkan.

Spanduk Creature

Rig

Ketika kami melakukan rigging pada Creature, kami menemukan bahwa yang terbaik adalah memodelkan karakter dalam pose netral, karena pose tersebut paling cocok untuk membengkok ke berbagai arah. Jika kami memodelkan Creature dengan tentakelnya sudah melingkar, itu akan menyebabkan peregangan jika kami menganimasi tentakelnya untuk membengkok ke arah yang berlawanan. Tangkapan layar berikut menunjukkan Creature dalam keadaan alaminya:

Dari pose netral, kami menambahkan sendi secara ekonomis, fokus pada area yang membutuhkan banyak gerakan. Semakin sedikit sendi semakin baik, karena Anda harus mengelolanya saat melakukan skinning pada karakter Anda, dan Anda akan memiliki lebih sedikit yang harus dikendalikan saat menganimasi mereka. Dalam tangkapan layar sebelumnya, Creature terlihat memiliki banyak sendi di tengah, tetapi tubuh utamanya hanya memiliki satu sendi.

Sebagian besar sendi lainnya berada di dekat tentakel dan rahang. Dengan tentakel, kami ingin banyak gerakan sekunder, atau gerakan yang berlapis, untuk menciptakan efek meyakinkan bahwa semuanya bergerak sendiri. Namun, massa tengah tentakel begitu dekat satu sama lain sehingga terasa sia-sia untuk membuat sendi untuk semuanya, baik dari segi kinerja maupun usaha untuk menganimasi. Jadi sebaliknya, kami memperlakukan massa tengah sebagai satu tentakel besar dengan "ekor" kecil di mana ujungnya meninggalkan massa tengah.

Creature Depan, Maya

Kami menemukan pedoman berikut berguna, sehingga mesh karakter diimpor dengan benar ke dalam Studio:

  • Setiap sendi dan tulang harus memiliki nama yang unik.
  • Mesh tidak boleh memiliki nama yang sama dengan sendi dan tulang.
  • Mesh seharusnya tidak memiliki transformasi sebelum skinning/mengikat; dengan kata lain, transformasi harus 0 dan skala harus 1.
  • Normal mesh harus menghadap ke luar (model tidak boleh terlihat terbalik).
  • Kerangka tidak boleh memiliki faktor skala; semua sendi harus [1, 1, 1].

Skin

Ketika kami menyelesaikan kerangka Creature, langkah berikutnya adalah melakukan skin pada mesh. Skinning bisa menjadi tugas yang melelahkan, jadi untuk mempermudah, sebaiknya Anda akrab dengan berbagai pengaturan skinning awal dari aplikasi DCC Anda untuk menemukan yang Anda suka. Karena ini adalah karakter organik, kami melakukan skinning dengan banyak falloff di setiap sendi dan tumpang tindih di antara mereka. Dengan cara ini, pembengkokan terasa halus dan tidak tajam. Tangkapan layar berikut menunjukkan skinning yang buruk dan skinning yang halus secara berturut-turut:

Skinning Buruk
Skinning Halus

Kami menemukan pedoman berikut menghasilkan hasil terbaik untuk skinning:

  • Pengaruh skinning (artinya mereka mempengaruhi bagian model saat bergerak) sebaiknya maksimum 4 pengaruh per vertex.
  • Nama sendi dan mesh perlu unik, baik di dalam satu sama lain maupun di antara satu sama lain.
  • Setiap sendi yang ingin Anda impor ke dalam Studio harus memiliki beberapa pengaruh pada skinning model, jika tidak, mesin tidak akan mengimpornya. Kapan pun memungkinkan, lakukan skin pada model Anda dalam pose asli atau "bind".

Impor mesh ke Studio

Mengimpor karakter kustom Anda ke dalam Studio adalah salah satu bagian yang lebih menarik dari proses ini, karena Anda dapat melihat kreasi Anda dalam permainan yang Anda bangun!

Untuk mengimpor mesh ke dalam Studio:

  1. Ekspor karakter dari aplikasi DCC dan pastikan hal berikut:

    • Semua normal, skala, dan nama sudah benar.
    • Karakter memiliki semua hierarki sendi dan tulang serta semua mesh.
    • Mesh semuanya di bawah 10.000 segitiga untuk setiap bagian dari mesh.
    • Ukuran total mesh tidak lebih dari 2000 unit di sumbu mana pun.
    • Lihat Persyaratan Mesh untuk daftar lengkap spesifikasi model.
    Creature di Alat DCC
  2. Di Importer, impor file kustom .fbx atau .obj.

    Creature Diimpor ke Studio

Buat creature bersinar

Setelah model Creature stabil dan tidak memerlukan impor lebih lanjut ke dalam Studio, kami mulai menyusun objek SurfaceAppearance, lampu, dan efek visual. Kami melakukan ini untuk memastikan bahwa kualitas model cukup baik sebelum melanjutkan untuk menempatkan dan mengedit aspek mana pun darinya.

Contoh Creature Bersinar

Kami tahu kami ingin Creature menjadi gelap, dan titik fokusnya adalah mata dan tentakel "grabby" nya. Titik kontras tinggi cenderung menarik perhatian, jadi memiliki beberapa yang kuat memastikan pemirsa tahu apa yang harus difokuskan. Studio mendukung material neon yang memancarkan cahaya sendiri, jadi sejak awal kami memisahkan mata agar bisa menjadi material sendiri dari sisa karakter. Kami melakukan hal serupa untuk tentakel, sehingga mereka hanya bersinar di ujungnya.

Mata Creature di Studio

Material neon tidak memancarkan cahaya nyata, jadi setelah beberapa pengujian, kami menambahkan bagian terpisah untuk mengontrol penempatan dan arah emisi cahaya. Ini memastikan pencahayaan diarahkan sedemikian rupa untuk meningkatkan cahaya mata dan juga memproyeksikan sumber cahaya sendiri.

Cahaya Titik di Studio

Perhatikan bahwa SpotLights menambahkan kilau visual pada Creature yang dekat dengan permukaan lain atau pemain.

Contoh Cahaya Creature

Selain itu, kami ingin tentakel Creature memancarkan beberapa partikel, sehingga meninggalkan jejak asap saat bergerak. Karena tentakel sangat panjang, menambahkan ParticleEmitter ke seluruh tentakel akan membuat partikel memancarkan dari seluruh tentakel alih-alih dari ujungnya. Untuk mengatasi ini, kami menggunakan bagian kecil yang diposisikan dekat ujung tentakel, sehingga kami dapat mengontrol ukuran emisi, penempatan, dan arah partikel.

Contoh Partikel

Buat VFX mengikuti karakter

Posisi mesh karakter yang telah di-skin tidak diperbarui saat Creature dianimasi, jadi kami membutuhkan metode untuk memastikan VFX, SFX, dan lampu semuanya mengikuti Creature dengan benar. Untuk mencapai ini, kami membuat skrip pengontrol VFX dan menggunakan CollectionService untuk memberi tahu bagian yang berisi VFX di mana tulang creature berada dan untuk mengikutinya.

  1. Kami menempatkan LocalScript berikut di StarterPlayerStarterPlayerScripts. Ini pada dasarnya menjalankan fungsi pembaruan VFX.

    Skrip Lokal
    -- Tambahkan potongan ini ke skrip lokal yang sudah ada yang membuat PreSimulation
    -- koneksi
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Skrip Modul
    -- Modul ini melampirkan bagian ke animasi sehingga diperbarui saat
    -- animasi diputar. Ini adalah solusi untuk keterbatasan saat ini
    -- dengan Joints dan Bones dan tidak selalu akan diperlukan.
    --
    -- Prasyarat:
    -- Untuk disertakan, model perlu memiliki tag "AnimatedVfxModel", dan folder
    -- dari semua bagian yang ingin Anda sinkronkan dengan animasi. Setiap bagian perlu
    -- memiliki atribut yang disebut "AttachedBoneName" yang merujuk pada nama tulang yang
    -- ingin Anda lampirkan. Bagian juga harus sudah berada di posisi yang benar
    -- relatif terhadap tulang yang diinginkan.
    --
    -- Cara Menggunakan:
    -- Skrip Lokal harus memerlukan modul ini, lalu menghubungkan
    -- VfxUpdateModule.updateVfx ke event RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- SETUP - ini harus dijalankan sekali di setiap klien.
    -- Kumpulkan semua model dengan tag
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- tempat kami akan menyimpan semua bagian dan offset
    -- Tetapkan tabel untuk setiap model yang akan menampung semua bagian vfx dan offset
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Temukan folder VFX
    -- Temukan tulang melalui atribut dan hitung offset untuk setiap bagian.
    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("Bagian Vfx merujuk pada tulang yang tidak dapat ditemukan.")
    end
    end
    end
    print(vfxTable)
    -- UPDATE - Ini harus terhubung ke setiap klien RunService.PreSimulation
    -- Melalui semua model, lalu perbarui semua bagian pada model untuk mencocokkan 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. Kami membuat VFXUpdateModule ModuleScript untuk memberi tahu objek yang ditandai dengan benar dengan AnimatedVfxModel untuk diperbarui pada event play.

  3. Kami memberi tag pada grup model yang diperlukan dengan AnimatedVfxModel menggunakan bagian Tags dari propertinya. Menggunakan tag memungkinkan VFXUpdateModule untuk mengetahui objek mana yang harus dicari sebagai anak VFX pertama dan menerapkan pembaruan.

    VFX Di Studio Contoh
  4. Akhirnya, kami menambahkan atribut kustom AttachedBoneName ke bagian yang ingin kami animasi dan menambahkan nama tepat dari sendi yang ingin kami ikuti.

Tekstur creature

Selanjutnya, kami menyiapkan peta tekstur PBR (Physically Based Rendered). Bitmap yang kuat ini memberikan creature kilau yang bervariasi dan variasi permukaan untuk membuatnya terlihat seperti memiliki banyak tonjolan kecil dan ketidaksempurnaan. Efek visual ini membantu menjual penampilan Creature ketika lebih dekat dengan pemain.

Perbandingan Tekstur Creature

Berikut adalah cara kami membuat peta tekstur penampilan permukaan:

  1. Peta tekstur untuk karakter ini semuanya berada di satu "lembar" per peta. Ini membuat creature lebih efisien dan berarti kami harus berurusan dengan lebih sedikit peta tekstur atau objek SurfaceAppearance.

  2. Untuk area yang perlu bersinar atau disinari sendiri, seperti "tentakel grabby," kami juga menggunakan transparansi pada SurfaceAppearance untuk menyatu dengan bagian tersebut.

    Contoh Iluminasi

    Kami menemukan bahwa mengikuti pedoman ini saat membuat peta tekstur penampilan permukaan sangat membantu:

    • Pastikan peta Anda tidak lebih besar dari 1024×1024.
    • Saluran hijau Anda mungkin perlu dibalik tergantung pada aplikasi yang Anda gunakan.

Animasi creature

Menganimasi sangat subjektif dan memiliki gaya pribadi. Opsi termasuk motion capture, animasi "key frame" manual di aplikasi DCC Anda, atau menggunakan Animation Editor yang kuat di Studio.

Seperti yang kami sebutkan sebelumnya, kami ingin memastikan kami memiliki cukup sendi untuk gerakan yang cair serta cukup anggota tubuh, sehingga animasi creature terasa alami dan "berlapis." Pelapisan, juga dikenal sebagai gerakan sekunder, adalah sesuatu yang Anda lihat dalam kehidupan sehari-hari — ketika Anda melemparkan lengan Anda, setiap sendi bereaksi terhadap dorongan awal dari lengan atas Anda, dan setiap sendi di tubuh Anda tidak bergerak atau beristirahat pada saat yang sama.

Kami menggunakan teknik ini untuk menganimasi Creature agar terasa seperti anggota tubuh bereaksi terhadap gerakan yang didorong oleh tubuhnya seperti yang ditunjukkan di sini:

Contoh Animasi Creature

Jika menggunakan aplikasi DCC eksternal untuk animasi, kami menemukan pedoman berikut bekerja dengan baik:

  • Atur frame rate setidaknya 30 FPS.
  • Buat animasi Anda dengan karakter yang sama yang Anda terapkan.
  • Ekspor data animasi Anda sebagai file .fbx terpisah.

Karena kami menganimasi karakter di luar Studio, kami perlu menggunakan Animation Editor untuk mengimpor file animasi .fbx. Editor memungkinkan Anda memilih avatar mana pun dengan sendi atau motor dan menggerakkannya melalui titik-titik di timeline.

Untuk mengimpor animasi:

  1. Di tab Avatar pada toolbar, klik Clip Editor.

  2. Pilih karakter yang sudah di-rig yang ingin Anda animasi di Roblox. Karakter tersebut harus sama dengan yang Anda rig di aplikasi DCC eksternal Anda.

  3. Klik tombol di bagian kiri atas jendela editor, pilih Import From FBX Animation, dan cari file animasi .fbx yang telah Anda ekspor.

    Contoh Impor Animasi 2
  4. Ketika Anda puas dengan animasi Anda, Anda dapat mengekspornya untuk menemukan ID animasi, yang kemudian dapat Anda gunakan dalam skrip Roblox untuk menjalankannya. Misalnya, Anda dapat menambahkan Script ke grup model dari karakter yang diimpor dan menggunakan kode berikut untuk menjalankan animasi:

    Contoh Skrip Animasi
    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)

Hasil akhir

Setelah beberapa penyesuaian akhir pada warna, kecerahan cahaya, dan beberapa efek partikel lagi untuk memberikan efek halo yang lebih kuat di depan jendela, berikut adalah hasil akhir di stasiun luar angkasa!

Rendering Creature Akhir
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.