util.GetModelMeshes
table, table util.GetModelMeshes( string model, number lod = 0, string or number bodygroupMask = 0, string or number skin = 0 )
Açıklama
Belirtilen bir modelin görsel mesh'leri için köşe (vertex), üçgen (triangle) ve kemik (bone) verilerini alır.
Bu, fırça (brush) modellerinde (
*sayı formatında isme sahip modeller) çalışmaz.Argümanlar
2 number lod = 0
Modelin hangi Detay Seviyesi (Level of Detail - LOD) modelinin alınacağı.
0 en iyi kalitedir, daha yüksek sayılar kaliteyi giderek düşürür.
3 string or number bodygroupMask = 0
Mesh'leri alınacak bodygroup'ların kombinasyonu. Bu aynı zamanda özel olarak biçimlendirilmiş bir bitflag de olabilir.
Daha fazla bilgi için, bkz: Entity:SetBodyGroups.
4 string or number skin = 0
Skin indeksi. ModelMeshData yapısı'nın
.material alanını etkiler.
Daha fazla bilgi için, bkz: Entity:GetSkin.
Bu özellik (2025.10.16) sürümünde yeni eklenmiştir. Şu anda sadece Geliştirici Sürümü (Dev Branch) üzerinde mevcut olabilir.
Dönen Değerler
1 ardışık table<ModelMeshData yapısı> modelMeshes
Bu tablodaki her bir indeks, bu fonksiyona argüman olarak verilen modelin içindeki bir mesh'e karşılık gelir.
Mesh verisi hamdır ve kemik dönüşümleriyle dönüştürülmemiştir. İkinci dönen değer bu iş için vardır.
2 ardışık table<BoneBindPose yapısı> modelBindPoses
Bu tablonun indeksleri, her bir indekste saklanan BoneBindPose yapısı için kemik ID'leridir.
Örnek
Modelin mesh'ini alarak ve bunu yeni bir mesh oluşturmak için kullanarak tel kafes (wireframe) bir helikopter bombası çizen bir Entity kod parçacığı.
-- Bir sebepten dolayı bir materyalimiz olmazsa diye varsayılan olarak kullanılacak materyal
local myMaterial = Material( "models/wireframe" ) -- models/debug/debugwhite
function ENT:CreateMesh()
-- Önceki mesh'leri yok et
if ( self.Mesh ) then self.Mesh:Destroy() end
-- Bir modelin tüm mesh'lerinin listesini al
local visualMeshes = util.GetModelMeshes( "models/combine_helicopter/helicopter_bomb01.mdl" )
-- Devam etmeden önce modelin var olduğundan emin ol
if ( !visualMeshes ) then return end
-- İlk mesh'i seç
local visualMesh = visualMeshes[ 1 ]
-- Mesh'i çizmek için kullanılacak materyali model verisinden ayarla
myMaterial = Material( visualMesh.material )
-- Burada visualMesh.verticies tablosunda istediğiniz değişiklikleri uygulayabilir, mesh'i bozabilir
-- veya aklınıza gelen diğer değişiklikleri yapabilirsiniz
-- Mesh'i oluştur ve inşa et
self.Mesh = Mesh()
self.Mesh:BuildFromTriangles( visualMesh.triangles )
end
-- Normal mesh'i çizim için geçersiz kılmak üzere özel bir hook
function ENT:GetRenderMesh()
-- Eğer mesh yoksa, oluştur!
if ( !self.Mesh ) then return self:CreateMesh() end
return { Mesh = self.Mesh, Material = myMaterial }
end
function ENT:Draw()
-- Varlığın modelini normal şekilde çiz, bu dahili olarak ENT:GetRenderMesh() fonksiyonunu çağıracaktır
self:DrawModel()
end
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord