Neden?
Çoğu durumda, çok sayıda oyuncunun bulunduğu çok oyunculu sunuculardaki yavaşlamanın ana kaynağı, Source motoru tarafından işlenmesi gereken kemik miktarıdır.
Bu durumu hafifletmek için yeterince uzaktayken parmak kemiklerini kaldırmak gibi bir dizi hile kullanabiliriz.
Nasıl?
Burada referans verilen tüm QC include'ları (QCI dosyaları), Steam/SteamApps/Steam kullanıcı adınız/sourcesdk_content/hl2/modelsrc/humans_sdk konumunda bulunan halka açık Source SDK örnek dosyalarında bulunabilir.
Oyuncu modelinizin poligon sayısını azaltan herhangi bir LOD ağı (mesh) yapmamış olsanız bile, bu LOD komutlarını uygulamalısınız, çünkü bu komutlar uzaktaki kemik sayısını önemli ölçüde azaltarak performansa yardımcı olacaktır.
Aşağıdaki LOD ayarları, Garry's Mod ile birlikte gelen neredeyse tüm oyuncu modelleri tarafından kullanılır.
Önerilen okumalar
LOD 0
Henüz optimizasyon yok, çünkü bu en yüksek detay seviyesidir.
LOD 1
Önerilen mesafe: 9.
replacemodel "my_detailed_mesh.smd" "my_less_detailed_mesh_for_this_lod.smd"
replacebone "ValveBiped.Bip01_L_Elbow" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Elbow" "ValveBiped.Bip01_R_upperarm"
replacebone "ValveBiped.Bip01_L_Ulna" "ValveBiped.Bip01_L_Forearm"
replacebone "ValveBiped.Bip01_R_Ulna" "ValveBiped.Bip01_R_Forearm"
replacebone "ValveBiped.Bip01_L_Wrist" "ValveBiped.Bip01_L_Forearm"
replacebone "ValveBiped.Bip01_R_Wrist" "ValveBiped.Bip01_R_Forearm"
replacebone "ValveBiped.Bip01_L_Bicep" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Bicep" "ValveBiped.Bip01_R_upperarm"
replacebone "ValveBiped.Bip01_L_Finger02" "ValveBiped.Bip01_L_Finger01"
replacebone "ValveBiped.Bip01_L_Finger12" "ValveBiped.Bip01_L_Finger11"
replacebone "ValveBiped.Bip01_L_Finger22" "ValveBiped.Bip01_L_Finger21"
replacebone "ValveBiped.Bip01_L_Finger32" "ValveBiped.Bip01_L_Finger31"
replacebone "ValveBiped.Bip01_L_Finger42" "ValveBiped.Bip01_L_Finger41"
replacebone "ValveBiped.Bip01_R_Finger02" "ValveBiped.Bip01_R_Finger01"
replacebone "ValveBiped.Bip01_R_Finger12" "ValveBiped.Bip01_R_Finger11"
replacebone "ValveBiped.Bip01_R_Finger22" "ValveBiped.Bip01_R_Finger21"
replacebone "ValveBiped.Bip01_R_Finger32" "ValveBiped.Bip01_R_Finger31"
replacebone "ValveBiped.Bip01_R_Finger42" "ValveBiped.Bip01_R_Finger41"
Bu, bazı prosedürel kemikleri ve parmak uçlarını kaldırır.
LOD 2
Önerilen mesafe: 18.
replacemodel "my_detailed_mesh.smd" "my_less_detailed_mesh_for_this_lod.smd"
nofacial
bonetreecollapse "ValveBiped.Bip01_L_Hand"
bonetreecollapse "ValveBiped.Bip01_R_Hand"
replacebone "ValveBiped.Bip01_L_Elbow" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Elbow" "ValveBiped.Bip01_R_upperarm"
replacebone "ValveBiped.Bip01_L_Ulna" "ValveBiped.Bip01_L_Forearm"
replacebone "ValveBiped.Bip01_R_Ulna" "ValveBiped.Bip01_R_Forearm"
replacebone "ValveBiped.Bip01_L_Shoulder" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Shoulder" "ValveBiped.Bip01_R_upperarm"
replacebone "ValveBiped.Bip01_L_Trapezius" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Trapezius" "ValveBiped.Bip01_R_upperarm"
replacebone "ValveBiped.Bip01_L_Wrist" "ValveBiped.Bip01_L_Forearm"
replacebone "ValveBiped.Bip01_R_Wrist" "ValveBiped.Bip01_R_Forearm"
replacebone "ValveBiped.Bip01_L_Bicep" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Bicep" "ValveBiped.Bip01_R_upperarm"
Bu, yüz animasyonunu devre dışı bırakır, neredeyse tüm prosedürel kemikleri kaldırır ve parmaklardan kurtulur.
LOD 3
Önerilen mesafe: 32.
$include "../../removehands.qci"
replacemodel "my_detailed_mesh.smd" "my_less_detailed_mesh_for_this_lod.smd"
removemesh "eyeball material, etc"
nofacial
bonetreecollapse "ValveBiped.Bip01_L_Forearm"
bonetreecollapse "ValveBiped.Bip01_R_Forearm"
bonetreecollapse "ValveBiped.Bip01_L_Calf"
bonetreecollapse "ValveBiped.Bip01_R_Calf"
replacebone "ValveBiped.Bip01_L_Elbow" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Elbow" "ValveBiped.Bip01_R_upperarm"
replacebone "ValveBiped.Bip01_L_Ulna" "ValveBiped.Bip01_L_Forearm"
replacebone "ValveBiped.Bip01_R_Ulna" "ValveBiped.Bip01_R_Forearm"
replacebone "ValveBiped.Bip01_L_Shoulder" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Shoulder" "ValveBiped.Bip01_R_upperarm"
replacebone "ValveBiped.Bip01_L_Trapezius" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Trapezius" "ValveBiped.Bip01_R_upperarm"
replacebone "ValveBiped.Bip01_L_Wrist" "ValveBiped.Bip01_L_Forearm"
replacebone "ValveBiped.Bip01_R_Wrist" "ValveBiped.Bip01_R_Forearm"
replacebone "ValveBiped.Bip01_L_Bicep" "ValveBiped.Bip01_L_upperarm"
replacebone "ValveBiped.Bip01_R_Bicep" "ValveBiped.Bip01_R_upperarm"
LOD 3 ve altından başlayarak, göz kürelerinden, gözlük gibi şeffaf materyallerden ve benzeri şeylerden kurtulmak için removemesh komutlarını eklemelisiniz. Bunun, Orange Box derleyicisiyle (compiler) hatalı göründüğünü unutmayın (bazen çoğu materyali ___error olarak adlandırılmış şekilde yorumlar), bu durumda materyalleri doğrudan LOD ağlarınız (mesh) üzerinden silebilirsiniz.
En Düşük LOD'lar
Önerilen mesafe: 48 (seviye 4), 64 veya daha fazlası (seviye 5).
replacemodel "my_detailed_mesh.smd" "my_less_detailed_mesh_for_this_lod.smd"
$include "../../lowesthumanskeleton.qci"
$include "../../lowesthumannohelpers.qci"
removemesh "material etc etc"
removemesh "more materials to remove"
nofacial
Gölge LOD'u
Bu, render-to-texture gölgesini işlemek için kullanılan LOD'dur. Her zaman mevcut olmalıdır, çünkü gölgeler oyuncu modelleri kadar detaya ihtiyaç duymaz. LOD 4 ile aynı olmalıdır, ancak (tavsiye edilmese de) 3'ten veya hatta belki 2'den gelen ağı (mesh) kullanmak isteyebilirsiniz.