NPC'lerden bir yelkenli tekne animasyonlu bir kumaşa kadar her şeyi oluşturmak için özel malzemeleri ithal edebilirsiniz. Avatar İçe aktarıcı'nın (şimdi 3D İçe aktarıcı olarak) özel ayarlarını kullandık biz, gizemli kara delik yaratıkları ve arkadaşlık, bilinçsiz ifade edilmiş servis droidleri gib
Aşağıdaki bölümler, kaldırma ve yüzey görünümü, PBR (yüzey görünümü) ve VFX'i kullanmayı nasıl kullandığımızı gösterir. Biz, "Canavar" olarak adlandırdığımız en karmaşık karakterlerden birini oluşturmak için parçaların yeterince kat
Yükleniyor
Yaratığımızı oluştururken, karakteri nötr bir pozada modellemeyi en iyi bulduk, çünkü bu poz bu sivri direkler için en iyi uyumludur. Eğer tenikleri zaten kıvrımlı hale getirdiyseniz, tenikleri diğer yönlere yatıştırmak için animasyonladıysanız, bunun sonucunda kasılma olurdu. Aşağıd
Neutral bir pozisyondan, eklemleri ekonomik olarak ekledik, hareketin en çok ihtiyaç duyduğu alanlara odaklanarak. Daha az eklem olsun, daha iyi, çünkü karakterinizi deri çekerken onları yönetmeniz gerekecek ve animasyonlarınızı kontrol etmeniz daha az olacaktır. Önceki ekrimlerde, Yaratık merkezde ç
Diğer ortaklıkların çoğu tentacle ve mandible'lerin yönündedir. Tentacle'lerin, tüm hareketlerinin üstünde yaratmak için birçok görünüm istedikleri için, çubukların merkez kuvveti kıymetliydi, böylece tüm çubuklar için yarat
Karakter meshesinin Studio'a doğru ithal edilmesi için şu kılavuzların yararlı olduğunu bulduk:
- Bireysel ortaklar ve kemiklerin benzersiz isimleri olmalıdır.
- Meshes aynı isme sahip olamazlar.
- Önce birleştirme/bağlama için hiçbir dönüşüm olmamalıdır; yani, dönüşümler 0 olmalıdır ve ölçeğin 1 olmalıdır.
- Mesh normalleri dışarıda olmalıdır (modeller içeride görünmez).
- İskeletlerin herhangi bir ölçek faktörü olması gerekmez; tüm bağlar [1, 1, 1] olmalıdır.
Deri
Yaratığın kafatasını tamamladığımızda, bir sonraki adım giderek daha fazla malzeme üzerinde çalışmaktı. DCC uygulamanızın farklı ilk kafatası ayarlarıyla tanıdığınız birincil kafatası ayarını yapmak, şeyi kolay
En iyi sonuçlar için deri üretiminde kullanılan şu kılavuzları bulduk:
- Kızartma etkileri (modellerin hareket ettirildiğinde bir kısmını etkilediği anlamına geliyor) 4 kızartma etkisi olmalıdır.
- Ortak ve kumaş isimleri, her biri diğerine ve her biri diğerine eşsiz olmalıdır.
- Studio'ya ithal etmek istediğiniz herhangi bir ortak, modelinin görünümünde biraz etkiye sahip olmalıdır, aksi takdirde motor onu ithal etmez. Mümkün olduğunda, modelinizi orijinal veya "bağlantı" pozundaki pozisinde şapkalayın.
Mesh'i Studio'a İçe aktarma
Kendi karakterlerinizi Studio'a ithal etmek, sürecin en heyecan verici yönlerinden biri, çünkü inşa ettiğiniz deneyimde yaratımlarınızı görme şansınız var!
Mesh'i Studio'a ithal etmek için:
DCC uygulamasından karakteri ihraç et ve takip edilenemin ol:
- Tüm normal, ölçek ve isimler doğrudur.
- Karakterin tüm ortak ve kemik hiyerarşisi ve tüm kaynakları vardır.
- Meshes her bir meshes'in altında 10,000 üzerinde çizgi sayılır.
- Meshes toplam boyutu herhangi bir ekseninde 2000'den fazla değildir.
- Model spesifikasyonları için Mesh Requirements bir liste görün.
In the 3D Importer , import the custom .fbx or .obj file.
Yaratığı Parlatmak
Yaratığın modeli stabil olduğunda ve Studio'da daha fazla acil ithal gerektirmezse, Yüzey Görünümü objelerini, ışıkları ve görsel efektleri bir araya getirdik. Bunu yaptık, modelin kalitesinden emin olmak için, bir kısmını yerleştirmeye ve düzenlemeye başlamadan önce.
Yaratığın karanlık olmasını istedik ve odak noktalarının gözler ve "grabby" tentaclesi olmasını sağlayın. Yüksek kontrast artırır eğilimlidir, bu yüzden birkaç güçlüsünü garanti ettiğinden emin olmak için erken bir şekilde gözleri ayrırdı
Neon malzeme asıl ışığı emittirmez, bu yüzden bazı testlerden sonra, bir parçayı ekledik test etmek için yerleştirmeyi ve ışığın yönünü kontrol etmek için. Bu, ışığın gözleri parlatmak ve ayrıca kendi kaynağını ışıltmak için yönlendirilmesini sağladı.
Görüntü parlaklığını SpotLights eklediğini fark edin.
Ayrıca, yaratığın tentiküllerinin bazı parçalarını emmesini istedik, böylece hareket ettiğinde duman izi bırakır. Çünkü tentiküller çok uzun, ParticleEmitter tüm tentiküle içine eklemek, parçaların tüm tentülden yerine uç kısmından em
VFX'i Karakteri Takip Etme
Kaçır animasyonları yenilenmediğinde, özellikle VFX, SFX ve ışıkların tüm VFX'i doğru şekilde takip edildiğinden emin olmak için karakterin meshesi güncellenmez. Bu nedenle, VFX, SFX ve ışıkların tüm VFX'i doğru şekilde takip edildiğinden emin olmak için bir yöntem gerekiyordu. Bu, VFX kontrolörü scriptini olu
Aşağıdaki LocalScript ı StarterPlayer → StarterPlayerScripts içine yerleştirdik. Bu, aslında VFX güncelleme işlevini çalıştırır.
Yerel Kod-- PreSimulation'ı yapmak için mevcut yerel bir senaryoya bu kısayol ekleyin-- bağlantılarlocal RunService = game:GetService("RunService")local vfx = require(workspace.VfxUpdateModule)RunService.PreSimulation:Connect(vfx.updateVfx)Modül Kodu-- Bu modül animasyonlara bağlantılar eklediğinden, onlar güncellenir-- Animasyon oynar. Mevcut sınırlar için bir çalışma çıkartmasıdır-- ile birlikte ve kemikler ve her zaman gerekli olmayacaktır.--Önceki:-- Dahil edilmek için, modellerin "AnimatedVfxModel" etiketine ve bir klasöre ihtiyacı vardır-- animasyonile senkronize etmek istediğiniz tüm parçalar. Her bir parçanın-- “AttachedBoneName” adında bir özellik,-- bağlantı yapmak istediğin kemik. Parçalar da zaten onların-- istediğin kemik ile ilgili doğru pozisyonları belirtir.---- Kullanmak:-- Bir YerelScript bunu gerektirmelidir, sonra bağla-- VFXUpdateModule.updateVfx'i RunService.PreSimulation etkinliğine kadar güncelle.local VfxUpdateModule = {}local CollectionService = game:GetService("CollectionService")-- YÜKSELTME - bu her müşteride bir kez çalışmalıdır.-- Etiketle tüm modelleri toplalocal vfxModels = CollectionService:GetTagged("AnimatedVfxModel")local vfxTable = {} -- tüm parçaları ve ofsetleri depolayacağız-- Tüm vfx parçalarını ve ofseti tutacak her bir modeline bir tablosu atayınfor _, model in vfxModels dovfxTable[model] = {}local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Find theVFX folder-- Kemayi özellik aracılığıyla bulun ve her bir parçası için ofseti 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 klienin RunService.PreSimulation'ına bağlanmalıdır.-- Tüm modelleri geçtikten sonra, kemik şekillendiriciyle eşleştirmek için modeldeki tüm parçaları güncelle.function VfxUpdateModule.updateVfx()for model, vfxParts in vfxTable dofor part, bone in vfxParts dopart.CFrame = bone[1].TransformedWorldCFrame * bone[2]endendendreturn VfxUpdateModuleBir oyun etkinliğinde güncellenmesi için herhangi bir nesneyi AnimasyonluVFXModel ile etiketlemek için bir ModuleScript oluşturduk.
Gerekli model gruplarını AnimasyonluVFXModel kullanarak etiketledik, GörüntüGörüntü 2>Görüntü2> 5>Görüntü5> 8>Görüntü8> 1>Görüntü1> 4>Görüntü4> 7>Görüntü 7> 0>Görüntü</
Son olarak, animasyon etmek istediğimiz parçaya bir AttachedBoneName özelliği ekledik ve istediğimiz ortakların isimlerini doğru ekledik.
Yaratığınızı Düzeltme
Ardından, PBR (Fiziksel Olarak İşlenmiş Rendering) dokularını ayarladık. Bu güçlü bitmeler, yaratığın küçük çizikleri ve kusurlarının çok fazla olduğunu gibi görünmesi için çeşitli yüzey ve yüzey çeşitliliklerine sahiptir. Bu görsel etki, yaratığın yakınındaki oyuncuya görünümünü satark
Yüzey görünümü haritasını nasıl oluşturduğumuzu gösteren grafik:
Bu karakter için tüm doku haritası "bir sayfada"ydı. Bu, yaratığı daha verimli hale getirdi ve daha az doku haritasına veya SurfaceAppearance nesnelerine ilgilenmemiz gerektiğini k意味着.
Parıltıya ihtiyaç duyan veya kendi başına aydınlanmaya ihtiyaç duyan alanlar, örneğin "grabby tentacles" gibi, biz de SurfaceAppearance ile onlarla karıştırmak için transparansı kullandık.
Yüzey görünümü haritası oluştururken bu yönergelere uymak için faydalı olduğunu bulduk:
- Haritalarınız 1024×1024'ten daha büyük olmamasına emin olun.
- Yeşil kanalınız uygulamaya bağlı olarak yanılabilir.
Yaratığı Animasyon
Animasyon çok kişiseldir ve bir kişilik stiline sahiptir. Seçenekler, hareket yakala, el "anahtarı" animasyonunu DCC uygulamanızda veya Studio'nun güçlü Animasyon Editor'ını kullanarak içerir.
Daha önce de belirttiğimiz gibi, yeterli bağlarımızın olduğundan emin olmak istedik, aynı zamanda yeterli sayıda eklem ve yeterli sayıda limb var, böylece yaratık animasyonu doğal ve "bir katmanlı" görüyoruz - kolunuzu dışarı atınca, her eklem tepki veriyor ve vücudunuzun her kısmı hareket et
Bu tekniği kullanarak yaratığın bedeninin hareketiyle tepki verdiği gibi hissetmek için onun animasyonunu oluşturmak için kullandık:
animasyoniçin dış bir DCC uygulaması kullanıyorsanız, aşağıdaki rehber çalışıyor:
- Çerçevelerin en az 30 FPS olmasını ayarla.
- Animasyonlarınızı uyguladığınız karakterle oluşturun.
- Animasyon verilerinizi ayrı bir .fbx dosyası olarak ihraç edin.
Stüdyo dışındaki karakteri Animasyon .fbx dosyasını ithal etmek için Animasyon Editörü'nü kullanmak zorundaydık. Editor, birleşikleri veya motorları olan herhangi bir avatarı seçmenizi sağlar ve onları zaman çizgisi üzerinden sürüş yapmak için noktalar aracılığıyla sürüş eder.
Bir animasyonu ithal etmek için:
Animasyon Editörünü seçin Animasyon Editörü'nü seçin.
Roblox'ta animasyon yapmak istediğin kuşanılmış karakteri seç. Karakterin DCC uygulamanızın dışındaki kuşanılmış karakter olmalıdır.
Editör pencerenin sol üst kısmındaki düğmeye tıklayın, FBX Animasyonundan İçe aktar'ı seçin ve çıkartılan .fbx animasyon dosyasını bulun.
Animasyonunuzu tamamladığınızda, animasyon ID'sini keşfetmek için onu ihraç edebilirsiniz. Örneğin, Script ile ithraç edilen karakterinizin model grubuna bir Class.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)
Final Sonuçları
Renkleri, parlaklıkları ve birkaç parçacık efekti ardından, pencerelerin önünde daha güçlü bir hale efekti vermek için burada sonuç alındı!