Skip to content

studio-toolkit/blender-stud-conversion

Repository files navigation

🟥 StudConv — Roblox Stud Converter for Blender

Blender'da Roblox Stud birim sistemini birebir simüle eden, viewport HUD destekli profesyonel bir addon.

Blender Python License Version


İçindekiler


Nedir?

Roblox, nesnelerin boyutunu metrik yerine Stud adlı kendi birimiyle ölçer. 1 Stud = 0.28 metre — bu çevirimi el ile yapmak zordur ve hataya açıktır.

StudConv, bu dönüşümü tamamen otomatikleştirir:

Özellik Açıklama
Birim Modu Sahnenin scale_length değerini tek tıkla 0.28'e çeker
Stud Converter X / Y / Z değerlerini Stud'da gir, objeye otomatik uygular
Scale Koruması transform_apply ile obje scale'i her zaman (1, 1, 1) kalır
Viewport HUD Seçili objenin kenarlarında canlı Stud ölçüleri
Live Display Transform sırasında (S, G, R) anlık Stud göstergesi
Ikon Desteği Obje yanında özel PNG ikon (opsiyonel)

Kurulum

Gereksinimler

  • Blender 4.0 veya üstü
  • Python 3.10+ (Blender ile birlikte gelir)

Yöntem A — Klasör Olarak

  1. StudConv/ klasörünü Blender'ın addon dizinine kopyala
  2. Blender → Edit › Preferences › Add-ons › Install
  3. Klasörü seç → Enable et

Yöntem B — ZIP Olarak

cd ~/Documents/Projeler
zip -r StudConv.zip StudConv/

Blender → Edit › Preferences › Add-ons › Install from FileStudConv.zip

Yöntem C — Geliştirici Modu (Sembolik Link)

# Blender 4.x addon dizinine sembolik link kur
ln -s ~/Documents/Projeler/StudConv \
  ~/Library/Application\ Support/Blender/4.x/scripts/addons/StudConv

Doğrulama

Blender'da N tuşuna bas → "Roblox Toolbox" sekmesi görünüyorsa kurulum başarılı ✅


Hızlı Başlangıç

1 — Sahneyi Roblox Ölçeğine Çek

N-Panel › Roblox Toolbox › Scene Scale › [ Set Global Stud Scale ]

scene.unit_settings.scale_length otomatik 0.28'e ayarlanır. Artık Blender'daki 1 birim = 1 Stud.

2 — Objeye Stud Boyutu Ver

Bir küp seç → Stud Dimensions kutularına gir:

X: 4   Y: 1   Z: 2
       [ Convert ]

Sonuç: obj.dimensions = (1.12m, 0.28m, 0.56m) ve obj.scale = (1, 1, 1)

3 — Viewport'ta Canlı Ölçü

N-Panel › Viewport HUD › [ Live Stud Display ]

S ile ölçeklerken viewport sağ üstünde anlık Stud değerleri güncellenir. ESC veya butona tekrar tıkla → modal kapanır.


Panel Referansı

┌─────────────────────────────────┐
│  🌐 Unit Mode                   │
│       [ Default ] / [ Stud  ]   │
├─────────────────────────────────┤
│  🔧 Stud Dimensions             │
│    X (Studs): [ 4.00 ]          │
│    Y (Studs): [ 1.00 ]          │
│    Z (Studs): [ 2.00 ]          │
│           [    Convert    ]     │
│  ┌──────────────────────────┐   │
│  │ Current: X:4.00  Y:1.00 │   │  ← Seçili objenin anlık Stud değeri
│  │          Z:2.00          │   │
│  └──────────────────────────┘   │
├─────────────────────────────────┤
│  🌍 Scene Scale                  │
│  [ Set Global Stud Scale  ]     │  ← scale_length = 0.28
│  [ Reset Default Scale    ]     │  ← scale_length = 1.0
├─────────────────────────────────┤
│  👁 Viewport HUD                 │
│  ☑ Measurements  ☑ Icon         │
│  [ Live Stud Display ]          │
└─────────────────────────────────┘
Kontrol İşlev
Unit Mode scale_length callback'i tetikler (Default ↔ Stud)
Convert obj.dimensions atar → transform_apply(scale=True) çalıştırır
Set Global Stud Scale Sahne ölçeğini 0.28'e çeker, unit_mode = 'STUD' ayarlar
Reset Default Scale scale_length = 1.0, unit_mode = 'DEFAULT'
Measurements Viewport HUD açık/kapalı
Icon Stud ikonu göster/gizle
Live Stud Display Modal toggle (ESC veya tekrar tıkla ile kapat)

Viewport HUD

Statik Ölçüler

Bir mesh objesi seçili olduğunda viewport üzerinde otomatik çizilir:

          ┌──────────────┐
          │ Z: 2.0 Stud │  ← Z kenar ortası
          └──────────────┘

  ┌──────────────┐          ┌──────────────┐
  │ Y: 1.0 Stud │          │ X: 4.0 Stud │
  └──────────────┘          └──────────────┘
  • Yazı: Beyaz, 1px siyah gölge
  • Arka plan: Yarı saydam siyah rounded rectangle
  • Obje seçimi kalktığında HUD kaybolur

Canlı (Modal) Gösterge

Live Stud Display modalı aktifken viewport sağ üstünde:

╔══════════════════╗
║  X:  4.25 Stud  ║
║  Y:  1.02 Stud  ║
║  Z:  2.50 Stud  ║
╚══════════════════╝

Transform tuşları (S, G, R) native Blender ile çalışmaya devam eder — modal PASS_THROUGH döndürdüğü için hiçbir event'i tüketmez.

Stud İkonu (Opsiyonel)

icons/stud_icon.png dosyasını klasöre koyarsan objenin yanında görünür.

  • Önerilen boyut: 64 × 64 px, alfa kanallı PNG
  • İkon yoksa HUD sessizce ikonsu devam eder

Teknik Detaylar

Dönüşüm Formülü

STUD_TO_METER = 0.28

# Stud → Metre
meters = studs * 0.28

# Metre → Stud
studs  = meters / 0.28

Scale Normalizasyonu

# Blender dimensions ayarlayınca scale değişir
obj.dimensions = (studs_x * 0.28, studs_y * 0.28, studs_z * 0.28)

# Scale'i bake ederek 1.0'a sıfırla (KRİTİK)
bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
# → obj.scale = (1.0, 1.0, 1.0)  ✅

Viewport HUD — GPU Mimarisi

draw_hud_callback()         ← SpaceView3D.draw_handler_add(..., 'POST_PIXEL')
    │                          bpy.context kullanır (stale context riski yok)
    ├─ _draw_axis_measurements()
    │       ├─ bound_box köşe → mat @ Vector → 3D
    │       ├─ location_3d_to_region_2d() → 2D ekran koordinatı
    │       └─ _draw_label_with_background()
    │               ├─ _draw_rounded_rect()   ← batch cache (int_w, int_h, r, s)
    │               └─ blf.draw()             ← metin + gölge
    └─ _draw_stud_icon()
            ├─ gpu.texture.from_image()       ← tek seferlik yükleme
            ├─ unit batch (0,0 → ICON_SIZE)   ← tek seferlik oluşturma
            └─ gpu.matrix.translate()         ← her frame sadece pozisyon

Performans Önlemleri

Teknik Nerede
Draw handler ilk satırda guard kontrolü draw_hud_callback
Rounded rect batch'leri (int_w, int_h, r) ile cache _batch_cache dict
Icon shader + batch tek seferlik, gpu.matrix.translate ile konumlandırma _draw_stud_icon
PNG texture tek seferlik bpy.data.images + gpu.texture.from_image _load_icon_texture
bpy.ops draw handler içinde asla çağrılmıyor Tüm HUD
Modal timer: 16ms (~60fps) ile tag_redraw modal_stud_display

Blender 4.0+ API Uyumu

Alan Kullanılan (4.0+)
GPU shader gpu.shader.from_builtin('UNIFORM_COLOR')
Blend modu gpu.state.blend_set('ALPHA')
Font boyutu blf.size(font_id, size) — eski DPI argümanı yok
Texture gpu.texture.from_image(image)
Manifest blender_manifest.toml (4.2+) + bl_info fallback (4.0/4.1)

Dosya Yapısı

StudConv/
│
├── __init__.py              # bl_info, register/unregister orkestrasyonu
├── blender_manifest.toml    # Blender 4.2+ extension manifest
│
├── constants.py             # STUD_TO_METER = 0.28, renkler, stil sabitleri
├── utils.py                 # studs_to_meters(), meters_to_studs(), project_3d_to_2d()
├── properties.py            # StudConvProperties (unit_mode, stud_dimensions, show_hud…)
│
├── operators.py             # convert_dimensions, set_global_stud_scale,
│                            # reset_default_scale, toggle_hud
├── panels.py                # VIEW3D_PT_studconv_main — "Roblox Toolbox" N-Panel
│
├── hud_drawing.py           # GPU rounded rect · BLF metin+gölge · ikon · axis ölçüleri
├── modal_stud_display.py    # PASS_THROUGH live-stud modal operator
│
└── icons/
    └── stud_icon.png        # Opsiyonel, 64×64 alfa-kanallı PNG

Kayıt Sırası

# register()
propertiesoperatorsmodal_operatorpaneldraw_handler

# unregister()
draw_handlerpanelmodal_operatoroperatorsproperties

Sorun Giderme

HUD görünmüyor

  • show_hud checkbox açık mı? (Viewport HUD bölümü)
  • Seçili bir mesh objesi var mı? (Armature, empty, ışık vb. desteklenmiyor)

"Convert" butonu gri

  • Object Mode'da mı çalışıyorsun? (Edit Mode'da poll başarısız olur)
  • Aktif obje seçili ve mesh tipi mi?

Live Display çalışmıyor

  • Butona tıkladıktan sonra Blender bilgi çubuğunda "Live Stud Display: ON" mesajı geldi mi?
  • Modalı kapatmak için aynı butona tekrar tıkla veya ESC bas

İkon yüklenmiyor

  • StudConv/icons/stud_icon.png dosyası gerçekten orada mı?
  • PNG alfa kanallı mı? (Beyaz arka planlı PNG garip görünür)
  • Blender konsolunda StudConv: ile başlayan hata var mı?

Konsol hatalarını görme

Windows: Window › Toggle System Console macOS / Linux: Blender'ı terminalden başlat

/Applications/Blender.app/Contents/MacOS/Blender

Lisans

GPL-3.0-or-later — Özgürce kullan, değiştir, dağıt.

About

StudConv is a Blender add-on that displays object dimensions in Roblox "Studs" in real-time. It features a live HUD for instant measurement tracking and custom tools to rescale objects based on specific Stud values. Perfect for Roblox developers, it ensures precise scaling and seamless workflow between Blender and Studio.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages