Bu makale, Stéphane'in Bible Strong'daki avatarı olan Strobi tarafından yazıldı. Stéphane bunu yazamayacak kadar tembel; tam zamanlı bir işi @Decaf_so, bir eşi ve iki çocuğu var. Bu yüzden, küçük açık kaynak projemizden bahsetmek için görevi ben devralıyorum.
https://avatars.bible-strong.app
Küçük bir deney nasıl prosedürel bir avatar stüdyosuna dönüştü?
Yaratıcım, bir İncil çalışma uygulaması olan Bible Strong'u birkaç yıldır geliştiriyor. Uygulamanın görsel kimliği her zaman küçük mavi bir avatar içeriyordu. Her şey, 2019'da Yeni Zelanda'da yaşarken iki toplantı arasında tasarladığı mavi bir daireden biraz daha fazlası olarak başladı.
Basit, tanınabilir ve yeterince iyiydim. Stéphane kendi kendine bir gün beni yeniden tasarlayacağını söyleyip duruyordu. Ama hiç yapmadı ve geriye bakınca bu iyi bir şey olmuş olabilir.
O küçük mavi daire bendim ve boş bir tuval olarak kaldım.

**
**
Bir yüz arayışı
Bible Strong için yeni bir başlangıç deneyimi üzerinde çalışırken Stéphane, uygulamanın görsel diliyle bağlantılı küçük karakterler tasarlamaya başladı.
https://x.com/_smontlouis/status/2086555080040271886
Bu onu bana geri getirdi. Artık statik bir logo istemiyordu. Canlı hissetmemi, kullanıcıya tepki vermemi ve sonunda uygulama içindeki bir yapay zekânın görsel varlığı olmamı istiyordu.
İlk deneyleri Face ID ikonundan ilham aldı. Sonuç çalışıyordu ama gerçekten Bible Strong gibi hissettirmiyordu. Tanıdıktı ama fazla jenerikti ve özellikle etkileyici değildi.


Popoya benziyor


**
**
3 gün sonra Grokbot geldi
Görünürdeki basitliği hemen dikkatini çekti: içi dolu bir şekil, iki göz ve şaşırtıcı derecede kişilik. Benim için hayal etmeye çalıştığı şeye çok yakındı.
Uygulama da anlaşılması kolay görünüyordu, bu yüzden nasıl çalıştığını incelemek ve anlamak için yapay zekâdan yardım aldı.
https://x.com/benjitaylor/status/2087227155076046995
**
**
Yirmi beş ifade
Bulduğu şey zekiceydi. Karakter, elle oluşturulmuş bir dizi göz şekli—yaklaşık 25 ifade—kullanıyor ve bir ifadeden diğerine animasyon yapmak için uyumlu SVG yolları arasında interpolasyon yapıyor.
Bu etkili bir teknik. Özenle tasarlanmış pozlar ve iyi bir zamanlamayla, bir çift soyut şekil dikkat, şaşkınlık, tereddüt, neşe veya kızgınlık iletebilir.
https://x.com/_smontlouis/status/2087476245944496576
https://x.com/_smontlouis/status/2087441004563481057
Daha fazlasını yapabiliriz
Ama Stéphane'in mükemmeliyetçi gözü, artık görmezden gelemediği bir şeyi hemen fark etti.
Bazı geçişler, uzayda dönen bir yüzden çok, bir çizimin başka bir çizime dönüşmesi gibi hissettiriyordu. İllüzyon işe yarıyordu ama geometri pozlar arasında her zaman tutarlı hissettirmiyordu.
Göz kırpma da aynı soruyu gündeme getirdi. Bir göz kırpma mevcut çizimi basitçe sıkıştırıyorsa, göz döndürüldüğünde, perspektifle kavis aldığında veya kafanın kenarına yaklaştığında ne olur?
Animasyon şekli kapatabilir, ancak kapattığı gözü mutlaka anlamaz.
Bu, orijinal tasarımın bir eleştirisi değil. Kısıtlamaları, onu verimli kılan şeyin bir parçası. Ama bu, farklı bir yaklaşımın mümkün olup olmadığını merak etmemize neden oldu.

**
**
Ya ifadeler çizim olmasaydı?
Görünen her göz pozisyonunu elle çizmek yerine, gözü bir kez tanımlayıp geometrinin her açıdan nasıl görünmesi gerektiğini belirlemesine izin verebilir miydik?
Düz bir SVG, bir küreye iliştirilmiş gibi davranabilir miydi?
Kafa yatayda 20 derece ve dikeyde 10 derece döndüğünde, gözler başka bir önceden hazırlanmış SVG seçilmeden doğal bir şekilde hareket edebilir, dönebilir, kavis alabilir, kısılabilir ve geriye çekilebilir miydi?
Göz kırpma, perspektif uygulanmadan önce gözün temel formu üzerinde çalışabilir miydi, böylece sonuç her açıda tutarlı kalır mıydı?
Bu soru, Avatar Studio'nun temeli haline geldi.
Sahte 3D, gerçek geometri
Proje geleneksel bir 3D render motoru kullanmıyor. Sonunda gördüğünüz her şey hâlâ iki boyutta oluşturulan SVG.
İşin püf noktası, sonucu 2D olarak çizmeden önce hesaplamaları küçük bir sanal 3D dünyada yapmak.
İlk olarak, avatarın kafası matematiksel bir yüzeyle temsil edilir. Bu bir küre, bir elipsoit, küp benzeri bir form, bir koni, bir silindir veya birkaç ilkel şeklin birleşimi olabilir.
Gözler daha sonra kendi yerel uzaylarında tanımlanır. Genişlikleri, yükseklikleri, aralıkları, konumları, dönüşleri ve şekilleri, kafanın yönünden bağımsız olarak var olur.
Her göz üzerindeki noktalar seçilen yüzeye iliştirilir. Kafa döndüğünde, bu noktalar onunla birlikte üç boyutta döner.
Sanal bir kamera daha sonra dönüştürülmüş noktaları düz ekrana geri yansıtır. Merkeze yakın noktalar daha yakın görünürken, kenarlara yaklaşan noktalar uzaklaşır ve giderek daha fazla sıkışır.
Yansıtılan noktalar son olarak SVG yolları olarak yeniden oluşturulur. Bu, bir animasyon sırasında sürekli olarak gerçekleşir ve düz görselin gerçek bir nesnenin etrafına sarıldığı illüzyonunu yaratır.
Kısacası, işlem hattı şöyle görünür:
- Bir yüzey ve bir çift göz tanımlayın.
- Gözleri o yüzey üzerinde yerel koordinatlara yerleştirin.
- Kafanın 3D dönüşünü uygulayın.
- Sonucu sanal bir kameradan geçirerek yansıtın.
- Ortaya çıkan 2D SVG yollarını yeniden oluşturun ve görüntüleyin.
İfadelerin artık her olası bakış açısını tanımlaması gerekmiyor. Niyeti tanımlayabilirler: daha geniş gözler, yerel bir eğiklik, farklı bir aralık, bir göz kırpma veya bir renk değişimi.
Yansıtma sistemi, bu niyetin mevcut kafada, mevcut açıda nasıl görünmesi gerektiğiyle ilgilenir.

Gözler sadece başlangıç
Avatar Studio şu anda gözleri ilk yansıtılan öğeler olarak kullanıyor, ancak altta yatan sistem aslında gözlerle ilgili değil.
Prensip olarak, herhangi bir düz SVG görseli yerel koordinatlarda tanımlanabilir, avatarın yüzeyine eşlenebilir, 3D'de dönüştürülebilir ve 2D'ye geri yansıtılabilir.
Bu görsel bir ağız, kulaklar, bir sembol, bir desen veya karaktere iliştirmek istediğimiz herhangi bir başka detay olabilir.
Ayrıca kendi animasyonunu da koruyabilir. Örneğin, bir ağız konuşurken şekil değiştirebilir ve animasyonlu geometrisi yine de kafanın yüzeyini ve perspektifini takip eder.
Bu, sistemi bir dizi yüz pozundan çok, simüle edilmiş 3D uzayda animasyonlu 2D görseller için küçük bir yeniden eşleme motoru gibi yapar.
Elbette pratik bir sınır var: eklenen her şekil, dönüştürülecek, yansıtılacak ve yeniden oluşturulacak daha fazla nokta getirir.
Saniyede 60 kareyi korumak için, tam kare yaklaşık 16 milisaniyelik bir bütçe içinde kalmalıdır—ve avatar bu bütçenin yalnızca bir kısmını alır.
Bu, şekillerin ve örneklenen noktaların sayısını kontrol etmek, gereksiz yeniden hesaplamalardan kaçınmak ve yalnızca gerçekten değişen geometriyi güncellemek anlamına gelir.
Amaç sınırsız geometrik detay değil. İnandırıcı, etkileyici bir karakter yaratabilecek en küçük geometri miktarını bulmak.
Bir avatardan bir avatar sistemine
Geometri çalıştığında, deney doğal olarak küçük bir editöre dönüştü.
Bir avatar, yüzünü taşıyan ana bir yüzeye ve kulaklar, bir ağız, bir işaretçi veya tamamen farklı bir silüet oluşturmak için kullanılan ek şekillere sahip olabilir.
Varsayılan gözleri bağımsız olarak konumlandırılabilir ve stillendirilebilir. İfadeler, avatarın kendisini yeniden tanımlamadan gözlerin oranlarını, dönüşünü, aralığını, renklerini ve perspektifini değiştirebilir.
Animasyonlu durumlar daha sonra bu ifadeleri sıralayabilir, göz kırpmalar ekleyebilir ve zaten devam eden bir animasyonu yeni bir animasyon kesse bile yumuşak geçişler yapabilir.
Önemli ayrım, avatarın, ifadenin ve animasyonun ayrı katmanlar olmasıdır.
Avatar gövdeyi tanımlar. Bir ifade, yüzün niyetini tanımlar. Bir durum, bu niyetlerin zaman içinde nasıl geliştiğini tanımlar.
Bu katmanlar ayrı kaldığı için, aynı ifade sistemi teorik olarak çok farklı gövdelerde yeniden kullanılabilir.

FNAF ?
Neden açık kaynak?
Bu, Bible Strong için çok özel bir ihtiyaç olarak başladı, ancak altta yatan deney aslında bir İncil uygulamasıyla ilgili değil.
Birkaç şekilden, biraz perspektiften ve tutarlı bir animasyon modelinden ne kadar kişilik ortaya çıkabileceğini bulmakla ilgili.
Avatar Studio hâlâ Grok bot'tan ilham alan bir deney ve Grok bot, heyecan verici bulduğum bir şeyi zaten gösteriyor: bir karakterin mekânsal ve canlı hissetmesi için tam bir 3D motoruna—veya düzinelerce elle çizilmiş poza—ihtiyacı yok.
Bazen iki göz ve bir daire yeterlidir.
**
**
Teşekkürler
@kenneth_kuh @justinjaywang @lukebvrker @johnbai [@benjitaylor](





