- Katılım
- 11 May 2023
- Konular
- 270
- Mesajlar
- 1,142
- Çözüm
- 2
- Online süresi
- 1mo 25d
- Reaksiyon Skoru
- 744
- Altın Konu
- 1
- Başarım Puanı
- 199
- MmoLira
- 1,182
- DevLira
- 381
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
soldaki hd olan
- Katılım
- 11 May 2023
- Konular
- 270
- Mesajlar
- 1,142
- Çözüm
- 2
- Online süresi
- 1mo 25d
- Reaksiyon Skoru
- 744
- Altın Konu
- 1
- Başarım Puanı
- 199
- MmoLira
- 1,182
- DevLira
- 381
4x kaliteye update
sadece mavi çelik
warrior_4-1.dds
342 kb den
5.462 kb yükseldi.
16 kat pack boyutu yükselme var.
yani bu şu demek oluyor.
2 gb clientiniz varsa bu
10-32 gb kadar çıkabilir.
sadece mavi çelik
warrior_4-1.dds
342 kb den
5.462 kb yükseldi.
16 kat pack boyutu yükselme var.
yani bu şu demek oluyor.
2 gb clientiniz varsa bu
10-32 gb kadar çıkabilir.
Kod:
import os
import subprocess
import shutil
from pathlib import Path
class TextureProcessor:
def __init__(self):
# --- ARAÇ YOLLARI (Tam olarak belirttiğin yerler) ---
self.base_tools = r"C:\pythonupscaler\Tools"
# ImageMagick Portable
self.magick = os.path.join(self.base_tools, "imagemagick", "magick.exe")
# Real-ESRGAN Portable
self.realesrgan = os.path.join(self.base_tools, "Realesrgan", "realesrgan-ncnn-vulkan.exe")
# DirectXTex (Texconv) Portable
self.texconv = os.path.join(self.base_tools, "DirectxTex", "texconv.exe")
# Geçici çalışma klasörü
self.temp_dir = Path(r"C:\pythonupscaler") / "temp_work"
def run_cmd(self, cmd):
try:
# shell=True bazı portable araçların Windows yetkilerini aşmasını sağlar
subprocess.run(cmd, check=True, capture_output=True, text=True)
return True
except Exception as e:
print(f"HATA [{os.path.basename(cmd[0])}]: {e}")
return False
def process_file(self, file_path, dds_format="BC3_UNORM"):
if not self.temp_dir.exists(): self.temp_dir.mkdir()
ext = file_path.suffix.lower()
if ext not in ['.png', '.dds', '.tga', '.jpg']: return
print(f"\n>>> ISLENIYOR: {file_path.name}")
# Geçici dosyalar (Çakışma olmaması için)
op = self.temp_dir / "op.png"
mask = self.temp_dir / "mask.png"
op_up = self.temp_dir / "op_up.png"
mask_up = self.temp_dir / "mask_up.png"
combined = self.temp_dir / "combined.png"
# 1. Alpha Ayırma
if not self.run_cmd([self.magick, str(file_path), "-alpha", "off", str(op)]): return
if not self.run_cmd([self.magick, str(file_path), "-alpha", "extract", str(mask)]): return
# 2. Real-ESRGAN Upscale (2x)
print(" -> AI Upscale (x4plus-anime) çalışıyor...")
self.run_cmd([self.realesrgan, "-i", str(op), "-o", str(op_up), "-n", "realesrgan-x4plus-anime", "-s", "4"])
self.run_cmd([self.realesrgan, "-i", str(mask), "-o", str(mask_up), "-n", "realesrgan-x4plus-anime", "-s", "4"])
# 3. Alpha Birleştirme
if not self.run_cmd([self.magick, str(op_up), str(mask_up), "-alpha", "off", "-compose", "CopyOpacity", "-composite", str(combined)]): return
import os
import subprocess
import shutil
from pathlib import Path
class Metin2TextureMaster:
def __init__(self):
# --- ARAÇ YOLLARI ---
self.base_tools = r"C:\pythonupscaler\Tools"
self.magick = os.path.join(self.base_tools, "imagemagick", "magick.exe")
self.realesrgan = os.path.join(self.base_tools, "Realesrgan", "realesrgan-ncnn-vulkan.exe")
self.texconv = os.path.join(self.base_tools, "DirectxTex", "texconv.exe")
# Geçici çalışma klasörü
self.temp_dir = Path(r"C:\pythonupscaler") / "temp_work"
def run_cmd(self, cmd):
try:
# capture_output=True hataları loglamamızı sağlar
result = subprocess.run(cmd, check=True, capture_output=True, text=True)
return True
except subprocess.CalledProcessError as e:
print(f"HATA Oluştu: {e.stderr}")
return False
def process_file(self, file_path):
if not self.temp_dir.exists(): self.temp_dir.mkdir(parents=True)
ext = file_path.suffix.lower()
if ext not in ['.png', '.dds', '.tga', '.jpg']: return
print(f"\n[+] İŞLENİYOR: {file_path.name}")
# Geçici dosya isimleri
op = self.temp_dir / "base_color.png"
mask = self.temp_dir / "alpha_mask.png"
op_up = self.temp_dir / "base_up.png"
mask_up = self.temp_dir / "alpha_up.png"
combined = self.temp_dir / "combined_result.png"
# 1. ADIM: Renk ve Alpha Kanallarını Ayır
# Renk katmanını (RGB) al
self.run_cmd([self.magick, str(file_path), "-alpha", "off", str(op)])
# Şeffaflık katmanını (A) siyah-beyaz olarak al
self.run_cmd([self.magick, str(file_path), "-alpha", "extract", str(mask)])
# 2. ADIM: Real-ESRGAN ile 4x Upscale
# -n: Model adı (klasördeki .bin dosyasının adı ile aynı olmalı)
# -s: 4 (x4plus modelleri 4 kat büyütür)
print(" -> AI Upscale (x4plus-anime) çalışıyor...")
self.run_cmd([self.realesrgan, "-i", str(op), "-o", str(op_up), "-n", "realesrgan-x4plus-anime", "-s", "4"])
self.run_cmd([self.realesrgan, "-i", str(mask), "-o", str(mask_up), "-n", "realesrgan-x4plus-anime", "-s", "4"])
# 3. ADIM: Kanalları Tekrar Birleştir
if op_up.exists() and mask_up.exists():
print(" -> Kanallar birleştiriliyor...")
self.run_cmd([self.magick, str(op_up), str(mask_up), "-alpha", "off", "-compose", "CopyOpacity", "-composite", str(combined)])
else:
print(" [!] Upscale başarısız, atlanıyor.")
return
# 4. ADIM: Texconv ile DDS'ye Çevir (Metin2 Standartı)
if ext == ".dds":
print(" -> DDS Paketleme (BC3_UNORM + Mipmaps)...")
# -f BC3_UNORM: DXT5 kalitesi (Alpha destekli)
# -m 0: Tüm Mipmap seviyelerini oluştur (Uzakta titremeyi önler)
# -y: Mevcut dosyanın üzerine yaz
tc_cmd = [
self.texconv,
"-f", "BC3_UNORM",
"-y",
"-m", "0",
"-o", str(file_path.parent),
str(combined)
]
if self.run_cmd(tc_cmd):
# Texconv "combined_result.dds" üretir, bunu orijinal isimle değiştiriyoruz
generated_dds = file_path.parent / "combined_result.dds"
if generated_dds.exists():
if file_path.exists(): os.remove(file_path)
os.rename(generated_dds, file_path)
else:
# Eğer orijinal dosya PNG/JPG ise direkt üzerine yaz
self.run_cmd([self.magick, str(combined), str(file_path)])
print(f"[V] TAMAMLANDI.")
def start_batch(self, target_folder):
target_path = Path(target_folder)
if not target_path.exists():
print("Hata: Hedef klasör bulunamadı!")
return
files = list(target_path.rglob("*"))
valid_files = [f for f in files if f.suffix.lower() in ['.dds', '.png', '.tga']]
print(f"=== Toplam {len(valid_files)} dosya işlenecek ===")
for f in valid_files:
self.process_file(f)
# Temizlik
if self.temp_dir.exists():
shutil.rmtree(self.temp_dir)
print("\n[!!!] TÜM İŞLEMLER BİTTİ [!!!]")
# --- ÇALIŞTIRMA ---
if __name__ == "__main__":
processor = Metin2TextureMaster()
# İŞLENECEK KLASÖRÜ BURAYA YAZ
HEDEF_KLASOR = r"C:\S3llMetin2-v22.5.7.0\pack\yw_pc\ymir work\pc\warrior"
processor.start_batch(HEDEF_KLASOR)
- Katılım
- 10 Şub 2026
- Konular
- 1
- Mesajlar
- 8
- Online süresi
- 1h 42m
- Reaksiyon Skoru
- 2
- Altın Konu
- 0
- TM Yaşı
- 3 Ay 25 Gün
- Başarım Puanı
- 4
- MmoLira
- 191
- DevLira
- 0
hocam merhaba iyi geceler bi konu için rahatsız edicektim grannywiever kullanmayı öğreniyorum elimde bir çok kostüm var dds dosyası şeklinde bunları granny wiewerdan görüntüleyebileceğimi söylediler nasıl yapabilirim konudan bağımsız kusura bakmayın
- Katılım
- 11 May 2023
- Konular
- 270
- Mesajlar
- 1,142
- Çözüm
- 2
- Online süresi
- 1mo 25d
- Reaksiyon Skoru
- 744
- Altın Konu
- 1
- Başarım Puanı
- 199
- MmoLira
- 1,182
- DevLira
- 381
Setup gibi yukluyorsun .gr2 ye çift tikliyotsun otomatik wiwerli açiliyor
- Katılım
- 11 May 2023
- Konular
- 270
- Mesajlar
- 1,142
- Çözüm
- 2
- Online süresi
- 1mo 25d
- Reaksiyon Skoru
- 744
- Altın Konu
- 1
- Başarım Puanı
- 199
- MmoLira
- 1,182
- DevLira
- 381
Src + wiwer setup
https://forum.turkmmo.com/konu/3606032-nopehyte-rolof-granny-guncellemesi-2-11-8-granny-viewer-2-11/
Eski grny .gr2leri yukseltme
https://forum.turkmmo.com/konu/3656283-grannyconverter-by-helia01/
Bunlari googleden bul
Granny Texture Path Changer By Helia01 V.1.0.0.1 |
3d max 2018 ve .gr2 exporter eklentisi
Bu şuna yariycak dunyadakiucretsiz .fbx gibi 3d max modellerini .gr2 çeviri.
Granny wiwerle bakarsin doğru mu olmuş şansina
https://forum.turkmmo.com/konu/3606032-nopehyte-rolof-granny-guncellemesi-2-11-8-granny-viewer-2-11/
Eski grny .gr2leri yukseltme
https://forum.turkmmo.com/konu/3656283-grannyconverter-by-helia01/
Bunlari googleden bul
Granny Texture Path Changer By Helia01 V.1.0.0.1 |
3d max 2018 ve .gr2 exporter eklentisi
Bu şuna yariycak dunyadakiucretsiz .fbx gibi 3d max modellerini .gr2 çeviri.
Granny wiwerle bakarsin doğru mu olmuş şansina