NPC'lerden bir yelkenli teknenin animasyonlu kumaşına kadar her şeyi oluşturmak için özel dokuları ithal edebilirsiniz.Gizemli kara delik yaratıkları ve dost canlı, farkında olmasa da, hizmet droidleri gibi daha egzotik özel karakterler getirmek için 3D İçe Aktarıcı 'nın özel ayarını kullandık.
Aşağıdaki bölümler, nasıl kullandığımızı gösterir sabitleme ve deri çekme , PBR (yüzey görünümü) ve VFX ile daha karmaşık karakterlerden birini oluşturmak için VFX'i, "Yaratık" adlandırdığımızı ışık yaymak, parçacık dumanından izler bırakmak ve bir sıvı hareketiyle deriyi kesmek için yeterli eklem sayısına sahip bir kasını kesmek. Turkish:Aşağıdaki bölümler, nasıl kullandığımızı gösterir sabitleme ve deri çekme , PBR (yüzey görünümü) ve VFX ile daha karmaşık karakterlerden birini oluşturmak için VFX'i, "Yaratık" adlandırdığımızı ışık yaymak, parçacık dumanından izler bırakmak ve bir sıvı hareketiyle deriyi kesmek için yeterli eklem sayısına sahip bir deriyi kesmek.

Rig Sırası
Yaratığı ayarlarken, karakteri nötr bir pozda modellemenin en iyi olduğunu bulduk, çünkü bu poz, çok yönlü bükülmeye en uygun olanıdır.Yaratığın zaten kıvrılmış kollarıyla modellemişsek, kolları aynı yönde bükerek animasyon yaparsak, uzatılacaktı.Aşağıdaki ekran görüntüleri Yaratığı doğal durumunda gösterir:


Doğal bir pozisyondan, ekonomik olarak eklemler ekledik, en fazla hareket gerektiren alanlara odaklanarak.Katıların daha az olması daha iyidir, çünkü karakterinizi derilerken onları yönetmeniz ve onları animasyonla kontrol etmeniz gerekecektir ve onları animasyonla kontrol etmeniz daha az olacaktır.Önceki ekran görüntülerinde, Yaratık merkezde çok fazla eklem varmış gibi görünüyor, ancak ana vücut sadece bir eklem var.
Diğer eklemlerin çoğu tentaklara ve çene kısımlarına doğrudur.Tentaküllerle, çok fazla ikincil hareket veya katmanlı hareket istedik, böylece hepsinin kendi sahip olhareket ettiğine dair inandırıcı bir etki oluşturmak.Bununla birlikte, dokunların merkez kütlesi o kadar yakındı ki, hepsine bağlantı yapmak performans ve animasyon için çaba için israf olduğunu hissettiler.Bunun yerine, merkez kütlesini, uçların merkez kütlesinden ayrıldığı tek büyük bir tentacle olarak ele aldık, küçük "kuyruklarla".

Karakter meshesinin doğru bir şekilde Studio'ya aktarılması için aşağıdaki yönergeler yararlı bulundu:
- Bireysel eklemler ve kemiklerin benzersiz isimleri olmalıdır.
- Dokuların bağlantılarla ve kemiklerle aynı adı olmamalıdır.
- Kaplama/bağlanma öncesinde meshların dönüşümleri olmamalı; başka bir deyişle, dönüşümler 0 olmalı ve ölçekler 1 olmalıdır.
- Kafes normali dışa bakmalıdır (model içeri bakmamalıdır).
- İskeletlerin herhangi bir ölçek faktörü olmamalı; tüm eklemler [1, 1, 1] olmalıdır.
Kaplama
Yaratığın iskeletini bitirdiğimizde, bir sonraki adım, örüntüyü derlemek oldu.Ciltleme zor bir görev olabilir, bu yüzden işleri kolaylaştırmak için, sevdiğiniz ciltleme ayarını bulmak için DCC uygulamanızın farklı başlangıç ciltleme ayarlarına aşina olmak en iyisidir.Bu organik bir karakter olduğundan, her bir eklemde çok fazla düşüş ve aralarında yer değiştirme ile kapladık.Bu şekilde, eğilme pürüzsüz ve keskin olmuyor.Aşağıdaki ekran görüntüleri kötü kesme ve pürüzsüz kesme olarak gösterir:


Deri için en iyi sonuçları üreten aşağıdaki yönergeleri bulduk:
- Cilt etkileri (yani hareket edildiğinde modelin bir kısmını etkilemeleri gerekir) maksimum 4 etki olmalıdır.
- Ortak ve örüntü isimlerinin birbirleri içinde ve birbirleri arasında eşsiz olması gerekir.
- Studio'ya aktarmak istediğiniz herhangi bir ortak, modelin derinleşmesine biraz etki yapmalı, aksi takdirde motor bunu içe aktarmıyor.Mümkün olduğunda, modelinizi orijinal veya "bağlama" pozunda cilde verin.
Kafeyi Studio'ya ithal et
Özel karakterlerinizi Studio'ya aktarmak, sürecin en heyecan verici parçalarından biridir, çünkü yaratımlarınızı inşa etmeettiğiniz deneyimde görürsünüz!
Dokuyu Stüdyoya ithal etmek için:
Karakteri DCC uygulamasından ihraç edin ve takip edilensağlayın:
- Tüm normaller, ölçekler ve isimler doğrudur.
- Karakterin tüm eklem ve kemik yapısı ve tüm dokuları vardır.
- Kafeslerin her bir parçası için 10,000 üçgenin altındadır.
- Kumaş toplam boyutu herhangi bir eksende 2000 birimden fazla değildir.
- Model özelliklerinin tam bir listesi için Çerçeve Gereksinimleri bakın.
3B İçe aktarıcı içinde, özel .fbx veya .obj dosyasını ithal edin.
Yaratığı parlat
Yaratığın modeli istikrarlı hale geldi ve Studio'ya daha fazla acil ithalat gerekmediğinde, YüzeyGörünüm nesneleri, ışıklar ve görsel efektleri bir araya getirmeye başladık.Herhangi bir yönün yerleştirilmesi ve düzenlenmesinden önce modelin kalitesinin yeterince iyi olduğundan emin olmak için bunu yaptık.

Yaratığın karanlık olmasını ve odak noktalarının gözler ve "yapışkan" tentakülleri olması gerektiğini biliyorduk.Karşıtlığın yüksek noktaları dikkat çekme eğilimindedir, bu nedenle birkaç güçlü olan var olmak izleyicinin neye odaklanması gerektiğini bilmesini sağlar.Stüdyo, kendi kendini aydınlatan neon malzemeleri destekliyor, bu yüzden erken gözleri ayırdık, böylece karakterin geri kalanından kendi malzemeleri olabilirler.Tentaküller için benzer bir şey yaptık, böylece sadece uçlarında parlayacaklardı.

Neon malzeme gerçek ışık yaymıyor, bu yüzden bazı testlerden sonra ışık emisyonunun yerleşimini ve yönünü kontrol etmek için ayrı parçalar ekledik.Bu, ışığın gözlerin parlamasını artırmak ve ayrıca kendi ışık kaynağını projelemek için bir şekilde yönlendirilmesini sağladı.

Fark edin ki SpotLights diğer yüzeylere veya bir oyuncuya yakın Yaratığa görsel ışık ekliyor.

Ayrıca, Yaratığın tentaklarının bazı parçacıklar yaymasını istedik, böylece hareket ettiğinde bir duman izi bırakacaktı.Çünkü tentaküller çok uzun, tüm tentakula ParticleEmitter eklemek, parçacıkların ucunun yerine tüm tentakuldan yayılmasını sağlayacaktır.Bununla mücadele etmek için, tentaklin sonundaki küçük bir parçayı kullandık, böylece parçacıkların emisyon boyutunu, yerini ve yönünü kontrol edebildik.

VFX'i karakteri takip etmesini sağla
Derili karakterin meshes konumları, Yaratık animasyonu sırasında güncellenmez, bu yüzden VFX, SFX ve ışıkların tümünün Yaratık'ı doğru bir şekilde takip ettiğinden emin olmak için bir yönteme ihtiyacımız vardı.Bunu başarmak için, bir VFX kontrolörü senaryosu oluşturduk ve CollectionService'i kullanarak, yaratığın kemiklerinin bulunduğu yerdeki VFX'i bilgilendirdik ve takip ettik.
Aşağıdaki LocalScript 'yi Başlangıç Oyuncusu → Başlangıç OyuncusuScriptleri içine yerleştirdik. Bu temelde VFX güncelleme işlevini çalıştırır.
Yerel Kod-- Bu kısmı, PreSimulation yapacak mevcut yerel bir senaryoya ekleyin-- bağlantılarlocal RunService = game:GetService("RunService")local vfx = require(workspace.VfxUpdateModule)RunService.PreSimulation:Connect(vfx.updateVfx)Modül Kodu-- Bu modül, parçaları animasyonlara bağladı, böylece güncellendiler-- animasyon oynar. Mevcut sınırlamalar için bir çözüm yoludur-- Katılımlarla ve kemiklerle ve daima gerekli olmayacaktır.---- Ön koşullar:-- Dahil edilmek için, modellerin "AnimatedVfxModel" etiketine ve bir klasöre ihtiyacı vardır-- animasyonsenkronize etmek istediğiniz tüm parçalar. Her parça ihtiyaç duyar-- Bağlı Kemik Adı adlı bir özellik, ki bu da bağlı kemik adına işaret eder-- bağlamak istediğiniz kemik. Parçalar da zaten kendilerinde olmalıdır-- arzu edilen kemik ile ilgili doğru pozisyonlar.---- Kullanmak için:-- Bir YerelScript bu modülü gerektirmeli ve bağlanmalıdır, sonra-- VfxUpdateModule.updateVfx'i RunService.PreSimulation etkinliğine güncelleyin.local VfxUpdateModule = {}local CollectionService = game:GetService("CollectionService")-- YAPILANDIRMA - bu, her bir istemci üzerinde bir kez çalışmalıdır.-- Etiketle tüm modelleri toplalocal vfxModels = CollectionService:GetTagged("AnimatedVfxModel")local vfxTable = {} -- tüm parçaları ve sapmaları depolayacağımız yer-- Tüm vfx parçalarını ve ofsetini tutacak her bir modele bir tablo atayınfor _, model in vfxModels dovfxTable[model] = {}local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- theVFX klasörünü bul-- Öznitelik aracılığıyla kemiği bulun ve her parça için ofset hesaplayın.for _,part in vfxParts dolocal name = part:GetAttribute("AttachedBoneName")local bone = model:FindFirstChild(name, true)if bone thenlocal offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)vfxTable[model][part] = {bone, offset}elsewarn("Vfx part refers to bone that could not be found.")endendendprint(vfxTable)-- Güncelleme - Bu, her müşterinin RunService.PreSimulation'una bağlı olmalıdır-- Tüm modellerden geçin, ardından modeldeki tüm parçaları kemik çerçevesiyle eşleştirmek için güncelleştirin.function VfxUpdateModule.updateVfx()for model, vfxParts in vfxTable dofor part, bone in vfxParts dopart.CFrame = bone[1].TransformedWorldCFrame * bone[2]endendendreturn VfxUpdateModuleBir oyun olayında güncellenmesi gereken herhangi bir nesneyi etiketleyen VFXUpdateModule ModuleScript oluşturduk, böylece AnimasyonluVfxModel ile güncellenebilir.
Gerekli model gruplarını Animasyonlu VFX Modeli kullanarak Etiket Düzenleyici 'den Erişilebilir Görüntüleme sekmesinden etiketledik.Etiketleri kullanmak, VFXUpdateModule 'in ilk VFX çocuğu olarak hangi nesneyi arayacağını ve güncellemeyi uygulayacağını bilmesine izin verir
Son olarak, animasyon yapmak istediğimiz parçaya Bağlı Kemik Adı özel özellik ekledik ve takip etmesini istediğimiz eklemlerin doğru adını ekledik.
Yaratığı dokulandır
Sonra, PBR (Fiziksel Tabanlı Renderlanmış) dokunma haritalarını ayarladık.Bu güçlü bitmap'ler, yaratığa çeşitli parıltı ve yüzey değişiklikleri verir, böylece çok sayıda küçük çuk ve kusurlar gibi görünmesini sağlar.Bu görsel efekt, Yaratığın oyuncuya daha yakın olduğunda görünümünü satmaya yardımcı olur.

İşte yüzey görünüm tekstür haritalarını nasıl oluşturduk:
Bu karakter için dokulu haritaların hepsi harita başına bir "yaprak" üzerindeydi.Bu, yaratığı daha verimli hale getirdi ve daha az dokulu harita veya SurfaceAppearance nesne ile uğraşmak zorunda olduğumuzu ifade etti.
Parlak veya kendi kendini aydınlatması gereken alanlar için, örneğin "kavrama tentakülleri" gibi, ayrıca bu parçalarla karışmak için transparans kullandık. SurfaceAppearance
Yüzey görünümü dokunma haritaları oluştururken bu yönergelere uymak yararlı bulundu:
- Haritalarınızın 1024×1024'ten daha büyük olmadığından emin olun.
- Yeşil kanalınız, çalıştığınız uygulamaya bağlı olarak çevrilmesi gerekebilir.
Yaratığı animasyonla etkile
Animasyon çok subjektiftir ve kişisel bir tarza sahiptir.Seçenekler hareket yakalama, DCC uygulamanızdaki el "anahtar çerçevesi" animasyonu veya Studio'nun güçlü Animasyon Editörünü kullanmayı içerir.
Daha önce de belirttiğimiz gibi, sıvı hareket için yeterli eklemlerimiz olduğundan ve yeterli uzuvlarımız olduğundan emin olmak istedik, bu yüzden yaratık animasyonu doğal ve "katmanlı" hissetti, yani kolunuzu fırlattığınızda, her eklem ilk etkiden üst kolunuzdan tepki veriyor ve vücudunuzdaki her eklem aynı anda hareket etmiyor veya dinlenmiyor.
Bu tekniği, Yaratığın kollarının vücudunun yönlendirdiği harekete tepki verdiğini hissetmek için kullandık, burada gösterildiği gibi:

animasyoniçin dışarıdan bir DCC uygulaması kullanıyorsanız, aşağıdaki yönergelerin en iyi şekilde çalıştığını bulduk:
- Çerçeve oranlarını en az 30 FPS'ye ayarlayın.
- Animasyonlarınızı, uyguladığınız aynı karakterle oluşturun.
- Animasyon verilerinizi ayrı bir .fbx dosya olarak dışa aktarın.
Karakteri Stüdyo dışında animasyonladığımız için, animasyon dosyasını ithal etmek için Animasyon Editörünü kullanmak zorundaydık .fbx .Editör, eklemler veya motorlar ile birlikte herhangi bir avatar seçmenizi ve zaman çizelgesindeki noktalar aracılığıyla sürüş yapmanızı sağlar.
Bir animasyonu ithal etmek için:
Araç çubuğunun Avatar sekmesinde, Animasyon Editörü 'yu açın.
Roblox'ta animasyon yapmak istediğiniz sabit karakteri seçin. Karakter, dış DCC uygulamanızda sabitlediğiniz aynı karakter olmalıdır.
Düzenleme penceresinin üst sol bölümündeki ⋯ düğmesine tıklayın, FBX Animasyonundan İçe Aktarma seçin ve ihraç edilen .fbx animasyon dosyanızı bulun.
Animasyonunuzdan memnun kaldığınızda, animasyon kimliğini keşfetmek için onu ihraç edebilir ve bunları Roblox kodlarında çalıştırmak için kullanabilirsiniz.Örneğin, ithal edilen karakterin model grubuna Script ekleyebilir ve animasyonu çalıştırmak için aşağıdaki kodu kullanabilirsiniz:
local animationId = "YOUR_ANIMATION_ID"local char = script.Parentlocal 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)
Sonuçlar
Renkler, ışık parlaklıkları ve pencerelerin önünde daha güçlü bir hale efekti vermek için birkaç bitirme ayarından sonra, burada uzay istasyonundaki sonuç!
