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 menciptakan 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, walaupun tidak menyadari.

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

Banner Makhluk

Rig

Saat kami merigging Makhluk, kami menemukan bahwa lebih baik untuk memodelkan karakter dalam pose netral, karena pose tersebut paling sesuai untuk membengkok dalam berbagai arah. Jika kami memodelkan Makhluk dengan tentakel yang sudah melengkung, itu akan mengarah pada peregangan jika kami menganimasikan tentakel untuk membengkok ke arah yang berlawanan. Screenshot berikut menunjukkan Makhluk dalam keadaan alaminya:

Dari pose netral, kami menambahkan sendi secara ekonomis, memfokuskan pada area yang membutuhkan banyak gerakan. Semakin sedikit sendi lebih baik, karena Anda harus mengelolanya saat skinning karakter Anda, dan Anda akan memiliki lebih sedikit yang harus dikendalikan saat Anda menganimasi mereka. Dalam screenshot sebelumnya, Makhluk terlihat memiliki banyak sendi di tengah, tetapi tubuh utama hanya memiliki satu sendi.

Sebagian besar sendi lainnya terletak di tentakel dan mandibel. Dengan tentakel, kami menginginkan banyak gerakan sekunder, atau gerakan yang terlapis, untuk menciptakan efek meyakinkan bahwa semua sedang bergerak sendiri. Namun, massa tengah tentakel begitu dekat satu sama lain sehingga terasa sia-sia untuk membuat sendi untuk semua dari mereka, baik dari segi kinerja maupun usaha untuk menganimasinya. Jadi sebagai gantinya, kami memperlakukan massa tengah sebagai satu tentakel besar dengan "ekor" kecil di mana ujungnya meninggalkan massa tengah.

Makhluk Depan, Maya

Kami menemukan pedoman berikut berguna, agar 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 sebaiknya tidak memiliki transformasi sebelum skinning/ikatan; dengan kata lain, transformasi harus 0 dan skala harus 1.
  • Normal mesh harus menghadap ke luar (model tidak boleh tampak terbalik).
  • Kerangka tidak boleh memiliki faktor skala; semua sendi harus [1, 1, 1].

Skin

Setelah kami menyelesaikan kerangka Makhluk, langkah selanjutnya adalah skinning mesh. Skinning bisa menjadi tugas yang melelahkan, jadi untuk mempermudah, sebaiknya familliar dengan pengaturan skinning awal yang berbeda dari aplikasi DCC Anda untuk menemukan yang Anda suka. Karena ini adalah karakter organik, kami mengikankannya dengan banyak falloff pada setiap sendi dan tumpang tindih di antara mereka. Dengan cara ini, pembengkokan terasa mulus dan tidak tajam. Screenshot berikut menunjukkan skinning yang buruk dan skinning yang halus masing-masing:

Skinning Buruk
Skinning Halus

Kami menemukan pedoman berikut menghasilkan hasil terbaik untuk skinning:

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

Impor mesh ke Studio

Mengimpor karakter kustom Anda ke dalam Studio adalah salah satu bagian paling menarik dari proses ini, karena Anda dapat melihat ciptaan Anda dalam pengalaman yang Anda bangun!

Untuk mengimpor mesh ke dalam Studio:

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

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

    Makhluk Diimpor ke Studio

Buat makhluk bersinar

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

Contoh Makhluk Bersinar

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

Mata Makhluk di Studio

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

Cahaya Titik di Studio

Perhatikan bahwa SpotLights menambahkan daya tarik visual pada Makhluk yang dekat dengan permukaan lain atau pemain.

Contoh Cahaya Makhluk

Selain itu, kami ingin tentakel Makhluk 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 Makhluk menganimasi, jadi kami memerlukan metode untuk memastikan bahwa VFX, SFX, dan lampu semua mengikuti Makhluk dengan benar. Untuk mencapai ini, kami membuat skrip pengontrol VFX dan menggunakan CollectionService untuk memberi tahu bagian yang berisi VFX di mana tulang makhluk berada dan untuk mengikutinya.

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

    Skrip Lokal

    -- Tambahkan cuplikan ini ke skrip lokal yang ada yang membuat
    -- koneksi PreSimulation
    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 kerja sekitar untuk batasan saat ini
    -- dengan Joints dan Bones dan tidak akan selalu diperlukan.
    --
    -- Prereqs:
    -- Untuk dimasukkan, model perlu memiliki tag "AnimatedVfxModel", dan sebuah folder
    -- dari semua bagian yang ingin Anda sinkronkan dengan animasi. Setiap bagian perlu
    -- sebuah atribut yang disebut "AttachedBoneName" yang merujuk pada nama
    -- tulang yang ingin Anda sambungkan. Bagian juga seharusnya sudah berada dalam
    -- posisi yang benar relatif terhadap tulang yang diinginkan.
    --
    -- Untuk Menggunakan:
    -- Skrip Lokal harus mengambil modul ini, lalu menghubungkan
    -- VfxUpdateModule.updateVfx ke acara RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- PENYETELAN - ini harus dijalankan sekali di setiap klien.
    -- Kumpulkan semua model dengan tag
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- di mana kami akan menyimpan semua bagian dan offset
    -- Tetapkan tabel untuk setiap model yang akan menyimpan 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 ke tulang yang tidak dapat ditemukan.")
    end
    end
    end
    print(vfxTable)
    -- PERBARUI - Ini harus terhubung ke RunService.PreSimulation setiap klien
    -- Lalui 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 memberitahu objek-objek yang diberi tag sesuai dengan AnimatedVfxModel untuk memperbarui pada acara play.

  3. Kami memberi tag 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.

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

Tekstur makhluk

Selanjutnya, kami menyiapkan peta tekstur PBR (Physically Based Rendered). Bitmap yang kuat ini memberikan makhluk kilau yang bervariasi dan variasi permukaan agar terlihat memiliki banyak benjolan kecil dan ketidaksempurnaan. Efek visual ini membantu menjual penampilan Makhluk saat lebih dekat dengan pemain.

Perbandingan Tekstur Makhluk

Berikut cara kami membuat peta tekstur penampilan permukaan:

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

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

    Contoh Penerangan

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

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

Animasikan makhluk

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 banyak sendi untuk gerakan yang cair serta cukup anggota badan, sehingga animasi makhluk terasa alami dan "terlapis." Pelapisan, juga dikenal sebagai gerakan sekunder, adalah sesuatu yang Anda lihat dalam kehidupan sehari-hari — ketika Anda melemparkan lengan Anda, setiap sendi berreaksi terhadap impuls awal dari lengan atas Anda, dan setiap sendi di tubuh Anda tidak bergerak atau beristirahat pada waktu yang sama.

Kami menggunakan teknik ini untuk menganimasi Makhluk agar merasa seolah-olah anggota tubuh bereaksi terhadap gerakan yang didorong oleh tubuhnya seperti yang ditunjukkan di sini:

Contoh Animasi Makhluk

Jika menggunakan aplikasi DCC eksternal untuk animasi, kami menemukan pedoman berikut bekerja paling 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 apa pun dengan sendi atau motor dan menggerakkannya melalui titik di timeline.

Untuk mengimpor animasi:

  1. Di tab Avatar toolbar, klik Clip Editor.

  2. Pilih karakter yang dirigging yang ingin Anda animasikan di Roblox. Karakter tersebut harus sama dengan yang Anda rigging di aplikasi DCC eksternal Anda.

  3. Klik tombol di bagian kiri atas jendela editor, pilih Import From FBX Animation, dan temukan 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!

Render Makhluk 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.