4 puan yazan GN⁺ 2024-04-30 | 1 yorum | WhatsApp'ta paylaş
  • Threlte, web’de interaktif 3D uygulamaları hızla oluşturmak için Svelte’in reaktif bileşen modelini Three.js üzerine yerleştiren açık kaynaklı bir framework’tür
  • <T.Mesh> gibi deklaratif bileşenlerle Three.js nesneleri oluşturur; Svelte yaşam döngüsü üzerinden olay aboneliklerini ve durum değişikliklerini işler
  • Varsayılan araçlar olarak Rapier fizik motoru, Theatre.js animasyon aracı, @threlte/gltf ve @threlte/extras birlikte sunularak ilk 3D uygulama kurulumunu azaltır
  • Yalnızca <T> bileşenlerinin yetmediği davranışlar, tip güvenli Plugins ile özel props ve olaylar eklenerek genişletilebilir
  • Svelte ekosisteminde deklaratif bir THREE kütüphanesi ve WebGL uygulaması geliştirme aracı arayan geliştiriciler için dokümantasyonu ve kullanılabilirliği güçlü yönler olarak değerlendiriliyor

Svelte tarzında Three.js sahneleri oluşturma

  • Threlte, Svelte ve Three.js üzerine inşa edilmiş web için bir 3D framework’tür
  • Deklaratif ve reaktif bileşenlerle interaktif 3D uygulamaları hızla geliştirmeye odaklanır
  • Svelte bileşenlerinin yaşam döngüsünden yararlanarak aşağıdaki işleri yapabilir
    • Olay aboneliği
    • Durum değişikliklerini işleme
    • Bileşen tabanlı davranışları bağlama
  • Örnek kod, <T.Mesh> içine geometri ve materyal yerleştirir; scale, position.x, onclick gibi props ve olayları doğrudan belirtir
  • İlk sahnenin nasıl kurulacağı Make Your First Scene bölümünde görülebilir

Birlikte sunulan araçlar ve genişletme yöntemi

  • Threlte, “batteries included” bir yapı sunduğunu vurgular ve 3D uygulama geliştirmek için gereken araçları birlikte sağlar
    • Rapier: fizik motoru
    • Theatre.js: profesyonel hareket tasarımı araç setine sahip animasyon kütüphanesi
    • @threlte/gltf: GLTF dosyalarını Threlte bileşenlerine dönüştüren araç
    • @threlte/extras: başlangıç için gerekli bileşenler ve yardımcı araçlar koleksiyonu
  • Rapier örneği, RigidBody, AutoColliders ve <T.Mesh> kombinasyonuyla küre biçimli çarpışma gövdesi ve mesh oluşturur
  • @threlte/extras örneği, Float ve GLTF bileşenleriyle /models/flower.glb modelini yükler; gölge, konum ve ölçek ayarlarını belirtir
  • @threlte/extras kullanımı Documentation bölümünde görülebilir
  • Plugins, <T> öğesine tip güvenli biçimde özel props ve özel olaylar ekleyen bir genişletme yöntemidir
    • Örnek plugin, injectPlugin ile lookAt prop’unu kaydeder ve $effect içinde args.ref.lookAt(args.props.lookAt) çağırır
    • Gelişmiş kullanım Plugins dokümanında derlenmiştir
  • Başlangıç dokümanları ve topluluk bağlantıları da sunulur

1 yorum

 
GN⁺ 2024-04-30
Hacker News yorumları
  • Threlte’in yazarıyım. Paylaştığınız için teşekkürler; şu anda ne yaptığımızı merak ediyorsanız az önce Svelte Summit Spring’de yaptığım sunumun videosuna bakabilirsiniz: https://www.youtube.com/live/gkJ09joGBZ4?si=KX9ZwfWTixj6r55Y...
    Temelde iki şey üzerinde çalışıyoruz. İlki Svelte 5 desteği. Threlte, olay işlemeyi daha verimli hâle getirmek ya da Svelte geçişlerini DOM öğelerine değil bileşenlere uygulamak için bileşenlerin iç kısımlarına epey dokunduğundan, sıradan bir Svelte kütüphanesine göre biraz daha fazla iş var. Bunların önemli bir kısmı Svelte 5’e yerleşik olarak geldi; geçişler gibi geri kalanları ise bir süreliğine rafa kaldırmamız gerekiyor
    Diğeri Threlte Studio. Bunu en iyi nasıl anlatacağımı hâlâ bilmiyorum ama kodu görsel olarak düzenlemenizi sağlayan bir editör denebilir. Genişletilebilir olduğu için kendi iş akışınıza uyarlayabiliyorsunuz; ne kadar ileri gidebileceğini merak ediyorum. İlgileniyorsanız Discord’da http://chat.threlte.xyz ya da X’te https://twitter.com/threlte bizi takip edebilirsiniz
    • Threlte’in React-Three-Fiber ile karşılaştırıldığında özellik denkliği ya da performans açısından nasıl olduğunu merak ediyorum
    • Tam da dün Svelte öğreticisini bitirdim ve Three.js’i Svelte’e taşıyıp taşıyamayacağımı merak edip araştırdım
      Svelte gerçekten çok sezgisel olduğu için 3D ortamları da verimli biçimde yönetebileceğini doğal olarak düşündüm; bu yüzden “Svelte + three.js” diye arattım
      PlayCanvas ve Babylon.js kullanmış biri olarak Threlte Studio geliştirmesini çok heyecanla bekliyorum. DREI’nin her şeyi bir dizin gibi açıp göstermesini seviyorum ama aklıma alışık olduğum “stüdyo aracı” geldi. Threlte Studio için öngörülen takvimi merak ediyorum
  • react-three-fiber ve react-three-drei kullanıyordum; bunu bu projenin React sürümü gibi düşünebilirsiniz. Örnekler inanılmaz derecede bol ve harika: https://docs.pmnd.rs/react-three-fiber/getting-started/examp...
    Özellikle sevdiğim örnek, görüntü galerisi örneği. Bir görsele tıklayınca başka bir odaya, yani başka bir galeriye girecek şekilde değiştirmeyi denedim
    https://github.com/pmndrs/drei örnekler ve yardımcılar derlemesi
    En etkileyici bulduğum şey GLTF modelleri, metin üzerinde video dokuları, yansımalar vb. kullanan örnekti; bağımsız çalışan sürümü https://bfplr.csb.app/ adresinde
    Daha da etkileyici olan, kodun aslında o kadar fazla olmadığını gösteren sandbox: https://codesandbox.io/p/sandbox/ground-reflections-and-vide...
    three.js’in üzerine bir katman koymak çok emek istiyor ve epey baş ağrıtan şeyler de yaşadım ama yine de potansiyeli büyük. three.js kullanmak, web sitesi geliştirmeye bakışımı tamamen değiştirdi; Svelte kullanan biriyseniz mutlaka göz atmaya değer
    • “three.js kullanmak, web sitesi geliştirmeye bakışımı tamamen değiştirdi” kısmının somut olarak nasıl değiştiğini merak ediyorum
    • Gerçekten harika. Kesinlikle Yugop havası var ve bu tür araçların çevrimiçi medyada tamamen yeni bir tarz yaratabileceği görülüyor. Potansiyeli bariz
  • Etrafa bakarken Threlte v6’yı gösteren bir demo uygulama buldum: https://github.com/grischaerbe/threlter, https://threltemania.xyz/
    Technical Outline, özellikle de basitleştirilmiş araba fiziği açıklaması oldukça faydalı. Esasen pist editörü bile olan bir Trackmania klonu ve Svelte/Threlte’in avantajlarını sonuna kadar kullanan bir örnek gibi görünüyor
    • “Svelte/Threlte’in avantajlarını sonuna kadar kullandı” derken, sizce bu avantajlar neler?
  • İlginç görünüyor. Ancak Svelte ya da React olmadan deklaratif 3D ve bileşenler istiyorsanız A-Frame veya X3D de var
    İnsanların gerçekten deklaratif 3D isteyip istemediğini merak ediyorum. X3D/VRML 25 yılı aşkın süredir var, A-Frame de 8 yıllık; ama ikisi de çok yaygınlaşmadı ve başka birçok format da ortaya çıkıp kayboldu. Buna karşılık three.js ve imperatif/prosedürel 3D genel olarak iyi gidiyor; bunun nedenini merak ediyorum
    • Three.js’e yönelik framework entegrasyonu biçimindeki deklaratif 3D çok popüler ve bence şu anda Three.js sitelerinde en çok kullanılan profesyonel kurulum sayılabilir. Bunların en popüleri react-three-fiber. Bu framework’lerin deklaratif yapısı yeniden kullanımı kolaylaştırıyor; ekosistemin temeli de bu oluyor
    • react-three-fibre gibi framework’lerin popüler olmasının nedeni, yeni başlayanların JavaScript’i neredeyse hiç bilmeden mevcut bileşenleri birleştirebilmesi. Bu alandaki influencer’ların “sadece 6 satır kodla böyle bir yapılandırıcı yapın!” tarzı şeyler söylediğini sıkça görüyorum. Bu araçları popüler yapan kodun deklaratif yapısı değil, hızlı üretim ve kullanımının kolay görünmesi
  • Threlte/SvelteKit/Tauri kombinasyonu güzel. Yakın zamanda Threlte’i denedim ve böyle bir şey yaptım: https://crusaders-ashy.vercel.app/
    Optimizasyonu çok iyi değil ve tüm modeller Sketchfab’in ücretsiz modelleri. 3D oyun ortamı olduğu için yeni bir PC’niz varsa faydası olur
  • Hem Svelte’i hem de Threlte’i seviyorum. Bir park ortamında 3D satranç tahtası yaptım ve lichess entegrasyonu bile ekledim; her şey şaşırtıcı derecede kolaydı
    Birçok UI’ın 3D kullanımından fayda görebileceğini düşünüyorum
    • Nasıl göründüğünü mutlaka görmek isterim. Bu kütüphaneleri kullanan basit bir örnek bile olur
  • Güzel proje. Daha temele yakın bir yaklaşımı tercih ediyorsanız A-Frame de iyi bir seçenek: https://aframe.io/
  • Söz dizimi gerçekten güzel. react-three-fiber ile Three.js’i JSX içinde ilk gördüğümdeki kadar etkileyici. Bir gün Svelte + Three kullanırsam böyle bir seçeneğin olduğunu bilmek iyi
  • Kaydırmanın ne kadar akıcı olduğu etkileyici. Kaydırma tabanlı animasyonları olan web sayfaları çoğu zaman takılıyor ve sarsılıyor gibi gelirdi; gerçekten monitörün yenileme hızına uygun çalıştığında etkinin bu kadar iyi olabileceğini bilmiyordum
  • Yaklaşık 2 yıldır kullanıyorum. Dokümanlara her baktığımda yeni bir extra eklenmiş oluyor ve legrisch de harika. Discord da epey aktif. Şaşırtıcı bir araç seti ve nereye kadar gideceğini görmek için sabırsızlanıyorum