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 meshes khusus untuk membuat segalanya dari NPC ke pakaian animasi kapal layar. Kami menggunakan pengaturan khusus Avatar Importer (sekarang 3D Importer ) untuk membawa lebih banyak karakter khusus, seperti makhluk lubang hitam misterius dan droid layanan yang ramah, jika tidak sadar.

Bagian berikut menjelajahi cara kami menggunakan rigging dan skinning , PBR (penampilanpermukaan) , dan VFX untuk membangun salah satu karakter kami yang paling kompleks yang kami sebut "Creature." Kami inginnya bersinar, mengeluarkan beberapa cahaya, memiliki jejak partikel asap, dan gerakan cair yang melibatkan penggabungan

Creature Banner

Peralatan

Ketika kami menyiapkan Karakter, kami menemukan bahwa lebih baik untuk menggunakan posisi karakter dalam posisi netral, karena posisi itu lebih cocok untuk membungkuk dalam beberapa arah. Jika kami menyiapkan Karakter dengan tentakelnya yang sudah dikurung, itu akan mengakibatkan menyiapkan jika kami animasi tentakel untuk membungkuk dalam arah yang berlawanan. Berikut ad

Dari posisi netral, kami menambahkan persyaratan bersama secara ekonomis, fokus pada daerah yang memerlukan banyak gerakan. Semakin sedikit persyaratan bersama yang Anda miliki, semakin baik, karena Anda harus mengelolanya saat menykinasi karakter Anda, dan Anda akan memiliki lebih sedikit untuk dikendalikan saat Anda menganimasi mereka. Dalam screenshot sebelumnya, Creature tampak

Sebagian besar dari joint lainnya berada di arah tentakel dan mandibel. Dengan tentakel, kami ingin banyak gerakan sekunder, atau gerakan yang disusun, untuk menciptakan efek yang menyakinkan bahwa mereka semua bergerak memiliki. Namun, massa tengah tentakel sangat dekat bersama-sama sehingga merasa sia-s

Creature Front, Maya

Kami menemukan panduan berikut berguna, sehingga jaringan karakter Anda导入 dengan benar ke Studio:

  • Gerakan dan tulang individu harus memiliki nama yang unik.
  • Meshes tidak boleh memiliki nama yang sama dengan join dan tulang.
  • Meshes seharusnya tidak memiliki transformasi sebelum skinning / binding; dengan kata lain, transformasi harus 0 dan skala harus 1.
  • Normal mesh harus menghadapi ke luar (model tidak boleh tampak ke dalam).
  • Skeleton seharusnya tidak memiliki faktor skala; semua join harus [1, 1, 1].

Kulit

Ketika kami selesai dengan skeleton Kreatur, langkah berikutnya adalah menykinisasi meshes. Skinning dapat menjadi tugas yang memakan waktu, jadi untuk membuat hal ini lebih mudah, adalah baiknya Anda familiar dengan berbagai pengaturan awal skinning dari aplikasi DCC Anda untuk menemukan yang Anda

Kulit Buruk
Mulus Skinning

Kami menemukan panduan berikut yang menghasilkan hasil terbaik untuk skinning:

  • Pengaruh skinnning (berarti mereka mempengaruhi bagian dari model saat digerakkan) harus menjadi maksimum 4 pengaruh per vé.
  • Nama bersama dan meshes harus unik, baik dalam satu sama lain maupun antara satu sama lain.
  • Setiap persyaratan bersama yang ingin Anda impor ke Studio harus memiliki beberapa pengaruh pada kulit model, jika tidak, mesin tidak akan mengimpornya. Setiap kali mungkin, kulit model Anda dalam posisi asli atau "ikat".

Mengimpor Mesh ke Studio

Mengimpor karakter khusus Anda ke Studio adalah salah satu bagian paling menarik dari proses ini, karena Anda dapat melihat kreasi Anda dalam pengalaman yang Anda membangun kota!

Untuk mengimpor meshes ke Studio:

  1. Ekspor karakter dari aplikasi DCC dan pastikan mengikuti:

    • Semua normal, skala, dan nama benar.
    • Karakter memiliki semua tingkatan dan tulang bersama dan semua meshes.
    • Meshes semuanya di bawah 10.000 segi untuk setiap bagian dari meshes.
    • Ukuran total Mesh tidak lebih dari 2000 unit di sumbu mana pun.
    • Lihat Persyaratan Mesh untuk daftar spesifikasi model lengkap.
    Creature in DCC Tool
  2. Dalam Importer 3D, impor file .fbx atau .obj yang disesuaikan.

    Creature Imported Into Studio

Membuat Creature Glow

Setelah model Creature stabil dan tidak memerlukan ekspor langsung ke Studio, kami mulai menggabungkan objek SurfaceAppearance, lampu, dan efek visual. Kami melakukan ini untuk memastikan bahwa kualitas model itu cukup baik sebelum melanjutkan untuk menempatkan dan mengedit aspek apa pun dari itu.

Glowing Creature Example

Kami tahu kami ingin Creature menjadi gelap, dan fokus poin untuk menjadi mata dan tentakelnya. Tinggi poin kontras cenderung menarik perhatian, jadi memiliki beberapa yang kuat menjamin pengunjung tahu apa yang harus fokus. Studio mendukung bahan neon yang bersinar, jadi di awal kami mengpisahkan mata keluar sehingga mereka bis

Creature Eyes in Studio

Bahan neon tidak mengeluarkan cahaya nyata, jadi setelah beberapa tes, kami menambahkan bagian terpisah untuk mengontrol posisi dan arah sinar emisi. Ini memastikan bahwa penerangan itu diarahkan dengan cara untuk meningkatkan cahaya mata dan juga proyeksikan sumber cahaya mereka sendiri.

Point Light in Studio

Perhatikan bahwa SpotLights menambahkan visual flare ke Kreatur dekat dengan permukaan lain atau seorang pemain.

Creature Light Example

Selain itu, kami ingin tentakel Creature menghasilkan beberapa partikel, jadi itu akan meninggalkan jejak asap saat bergerak. Karena tentakel sangat panjang, menambahkan ParticleEmitter ke seluruh tentakel akan membuat partikel bermunculan dari seluruh tentakel bukan dari ujung. Untuk melawan ini, kami

Particle Example

Membuat VFX Ikuti Karakter

Posisi malah karakter berkilau tidak diperbarui ketika animasi Creature, jadi kami memerlukan metode untuk memastikan bahwa VFX, SFX, dan lampu semuanya mengikuti Creature dengan benar. Untuk melakukan ini, kami menciptakan script kontrol VFX dan menggunakan CollectionService untuk menginformasikan bagian yang berisi VFX di mana tulang kreatur dan untuk mengikuti mereka.

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

    Skrip Lokal

    -- Tambahkan snippet 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 menambahkan bagian ke animasi sehingga mereka diperbarui sebagai
    -- animasi bermain. Ini adalah workaround untuk keterbatasan saat ini
    -- dengan Joints dan Tulang dan tidak akan selalu diperlukan.
    --
    -- Prerequisites:
    -- Untuk dimasukkan, model memerlukan label "AnimatedVfxModel" dan direktori
    -- dari semua bagian yang ingin Anda sinkronisasi dengan animasi. Setiap bagian memerlukan
    -- 属性 bernama "AttachedBoneName" yang mengacu pada nama
    -- tulang yang ingin Anda lampirkan. Bagian juga harus sudah ada di dalam
    -- posisi yang benar relatif terhadap tulang yang diinginkan.
    --
    -- Untuk Menggunakan:
    -- LocalScript harus mengharuskan modul ini, lalu hubungkan
    -- VfxUpdateModule.updateVfx ke acara RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- SETUP - ini seharusnya dijalankan setiap klien.
    -- Kumpulkan semua model dengan label
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- di mana kami akan menyimpan semua bagian danoffset
    -- Akan menetapkan tabel untuk setiap model yang akan menampung semua bagian vfx danOffset
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Temukan folder VFX
    -- Temukan tulang melalui属性 dan hitungOffset 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("Vfx part refers to bone that could not be found.")
    end
    end
    end
    print(vfxTable)
    -- UPDATE - Ini seharusnya dihubungkan dengan RunService setiap klien.
    -- Pergi melalui semua model, lalu update 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 menciptakan VFXUpdateModule ModuleScript untuk memberi tahu setiap objek yang ditandai dengan benar dengan AnimatedVfxModel untuk diperbarui pada acara bermain.

  3. Kami menandai kumpulan model yang diperlukan dengan AnimatedVfxModel menggunakan Editor Tag , yang dapat diakses dari tab Tampilan. Menggunakan tag memungkinkan 1> VFXUpdateModule1> untuk mengetahui objek mana yang harus dicari sebagai anak pertama VFX dan menerapkan update.

    VFX In Studio Example
  4. Akhirnya, kami menambahkan AttachedBoneName 属性 khusus ke bagian yang kami inginkan untuk dianimasi dan menambahkan nama yang tepat dari joint yang kami inginkan untuk diikuti.

Menguraikan Kreatur

Selanjutnya, kami menyiapkan peta tekstur PBR (Physically Base Rendered). Bitmap ini kuat memberikan kecahayaan dan perbedaan permukaan yang beragam untuk membuatnya terlihat seperti memiliki banyak goresan dan kesalahan kecil. Efek visual ini membantu menjual penampilan Kreatur saat ia lebih dekat dengan pemain.

Creature Texturing Comparison

Inilah cara kami membuat peta tekstur kesan permukaan:

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

  2. Untuk area yang perlu bersinar atau terilluminasi sendiri, seperti "tentakel grabby," kami juga menggunakan transparansi di SurfaceAppearance untuk bercampur dengan bagian tersebut.

    Illumination Example

    Kami menemukan berguna untuk mengikuti panduan ini saat membuat peta tekstur permukaan:

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

Meng Animasi Mahluk

Animasi sangat subjektif dan memiliki gaya pribadi. Opsi termasuk ambilgerakan, "key frame" animasi tangan di aplikasi DCC Anda, atau menggunakan Editor Animasi Studio yang kuat.

Seperti yang kami sebutkan sebelumnya, kami ingin memastikan kami memiliki cukup joint untuk gerakan cair serta cukup banyak limb, jadi animasi makhluk ini merasa alami dan "berbentuk." Layering, juga dikenal sebagai gerakan sekunder, adalah sesuatu yang Anda lihat dalam kehidupan sehari-hari - ketika Anda melempar lengan Anda keluar, setiap joint reaksi

Kami menggunakan teknik ini untuk meng Animasi Kreatur seperti limbik reaksi terhadap gerakan yang dipengaruhi oleh tubuhnya seperti yang ditunjukkan di sini:

Creature Animation Example

Jika menggunakan aplikasi DCC eksternal untuk animasi, kami menemukan panduan berikut bekerja lebih baik:

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

Karena kami menganimasikan karakter di luar Studio, kami perlu menggunakan Editor Animasi untuk mengimpor file animasi .fbx . Editor memungkinkan Anda untuk memilih avatar dengan join atau motor, dan menyetelnya melalui poin dalam waktu pemotretan.

Untuk mengimpor animasi:

  1. Di tab Plugin, pilih Editor Animasi.

    Animation Editor In Studio
  2. Pilih karakter yang diperlambat yang ingin Anda animasikan di Roblox. Karakter ini harus sama dengan karakter yang Anda animasikan di aplikasi DCC eksternal Anda.

  3. Klik tombol di bagian atas kiri dari jendela editor, pilih Importer dari Animasi FBX, dan temukan file ekspor .fbx Anda.

    Animation Import Example 1 Animation Import Example 2
  4. Ketika Anda senang dengan animasi Anda, Anda dapat mengekspornya untuk menemukan ID animasi, yang dapat Anda gunakan kemudian dalam naskah Roblox untuk mengeksekusinya. Misalnya, Anda dapat menambahkan Script ke grup model karakter yang diimpor dan menggunakan kode berikut untuk mengeksekusinya:

    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)

Hasil akhir

Setelah beberapa penyesuaian warna, kecerahan cahaya, dan beberapa efek partikel lainnya untuk memberikan efek halo yang lebih kuat di depan jendela, inilah hasil akhir di stasiun ruang angkasa!

Final Creature Rendering