3D Animatör
"Havalı bir 3D video yap" istemi gri, düz ışıklı, kamerası kımıldamayan bir sahne üretir, çünkü model hiçbir sinema kararı almadan varsayılanlara düşer. Bu skill o kararları kodlamadan önce aldırır ve uygulayan altyapıyı verir.
Hedef: İlk teslimde teknik hatası olmayan, birkaç revizeyle bitecek bir film. Kusursuzluk değil, revize edilebilir sağlam bir başlangıç. Bunu sağlayan şey altyapı değil, aşağıdaki sıradır; adım atlama.
Proje biçimi HyperFrames'tir. Kompozisyon kuralları için hyperframes-core geçerlidir.
Hangi örnekten başlanır
| İstek | Başlangıç | Oku |
|---|---|---|
| İnsan, araç, obje hareketi, aksiyon, hikâye | assets/example-street-film/ | references/motion.md |
| Dış sesle anlatım, kavram anlatımı, tanıtım | assets/example-chip-film/ | references/film-grammar.md |
| Her ikisi | Sokak filmini al, anlatım dilini ekle | İkisi de |
Her zaman oku: references/materials.md, references/craft.md, references/sound.md.
Yapıyı koru, içeriği konuya göre baştan yaz. Örnekteki sokağı, topu veya çipi yeni işlere taşıma. Referans video verilirse tekniğini öğren, metnini ve kurgusunu kopyalama. scene.js bölümleri: set, oyuncular, koreografi, kamera, görünüm.
Filmin şartları
Biri eksikse "3D demo" gibi görünür, film gibi değil:
- Gerçek ölçek: 1 birim 1 metre. Lens bulanıklığı, gölge ve doku bununla doğru çıkar.
- Dolu ve derin mekân: Ön, orta, arka plan ve ötesi. En az 25 nesne. Kahraman parça parça modellenir.
- Doğal ışık: Motive edilmiş ana ışık +
skyDome. Gölgesi olmayan nesne yüzer. - Doğru kaplama: Her yüzey
M.*veya aynı titizlikte. Hiçbir yüzey tek renk değil. - Bir hikâye ve neden: Her hareketin nedeni var. Yaklaşık her 3 saniyede yeni bir olay.
- Kamera yazarlığı: Her planın tek işi var. Lens ve hareket bu işe göre.
- Ses: Gerçek kayıtlar, müzik, dış ses. Her ses görüntüde bir nedene bağlı.
Akış
1. Plan (shot-plan.md)
Kod yazmadan önce: tek cümlelik mesaj, kahraman, mekân listesi, ışık fikri, palet, kaplama listesi ve plan tablosu.
| Süre | Olay | Kamera (lens, hareket) | Ses | Altyazı |
|---|---|---|---|---|
| 9.1–10.2 | Top çocuğun elinden kayıyor | 46mm, alttan, f/3.2 | Kısa nefes | Nobody's watching the ball. |
Format istenmediyse 16:9 1920×1080. Dikey Reel için 1080×1920 kur ve kadrajları yeniden planla. Kullanıcı konuyu verdiyse onay bekleme, planı kısaca göster ve devam et. Bir karar filmi köklü değiştiriyorsa (format, dil, gerçekçi insan şartı) baştan sor.
2. Projeyi kur
npx hyperframes init <ad> --resolution landscape --non-interactive
assets/rig/ altındaki tüm dosyaları ve seçilen örneğin dosyalarını proje köküne kopyala.
3. Ses, sonra görüntü
Süreler konuşmadan gelir, kamera zamanları buna bağlıdır. Önce sesi kur.
node <skill-klasörü>/scripts/make-sfx.mjs assets/sfx <süre-sn>
node <skill-klasörü>/scripts/build-audio.mjs .
Betik voiceToMusicDb, overrun, voiceClash, overlap ve miks seviyesini yazar. Hata koduyla biterse zamanları düzelt. Kaynak bulma, lisans ve miks için references/sound.md. Müzik bulunamıyorsa veya lisans uymuyorsa scripts/make-music.mjs koddan bir taban üretir. Sokak filminin kayıtları skill'de değildir, liste assets/example-street-film/SOURCES.md içinde. İlk kurulumda:
py -3.12 -m venv "%USERPROFILE%\.cache\3d-animator-venv"
"%USERPROFILE%\.cache\3d-animator-venv\Scripts\python" -m pip install kokoro-onnx soundfile faster-whisper "av<16"
HYPERFRAMES_PYTHON ortam değişkenini bu python dosyasına yönelt. Kokoro Türkçe bilmez: Türkçe için kullanıcının izniyle başka bir sağlayıcıdan ses üret, voice/NN.wav ve aynı metinle voice/NN.txt olarak koy. Betik bu ikiliyi yeniden üretmez.
4. Sahne
| Araç | İş |
|---|---|
createFilm({canvas, width, height, fps, samples, bloom, environment, background}) | Render zinciri |
film.setShots([...]) | Çekim listesi; her at bir kesmedir. track: (t) => ({pos, look, lens, fstop, focus, roll}) hareketli özneyi izler |
film.setKeys([...]) | Kesmesiz tek kamera |
film.onUpdate(t => ...) | Nesne ve karakter hareketi. Alt kare başına çağrılır |
film.onFrame(T => ...) | Işık, look, mod kararları. Kare başına bir kez |
film.look | exposure, saturation, contrast, blackPoint, lift, shadowTint, midTint, highlightTint, flash, grain, vignette, aberration, fade, invert, bloom, stylize |
film.skyDome, film.softLight, film.skyBackdrop, film.bakeEnvironment | Doğal ışık ve yansıma |
film.mirrorFloor(mesh) | Islak zemin ve su için gerçek yansıma |
film.sunThroughBlinds, film.shaft, film.dust, film.burst, film.sparks, film.screen, film.wire | Efekt ve detay |
M.*, skinned, boxUV | Kaplama (references/materials.md) |
createCharacter, walker, createCar, driver, createBicycle, rider, loadRigged | Oyuncular (references/motion.md) |
speedProfile, groundPath, bounces, springTrack, track, noise1, rng, EASE | Hareket yardımcıları |
addCaptions(tl, el, LINES) | Kelime kelime altyazı |
Değişmez kural: Görünen her şey zamanın saf fonksiyonudur. rotation.y += 0.01 yazma, rotation.y = t * 0.6 yaz. Kareler rastgele sırayla ve birkaç kez istenir. Date.now(), performance.now(), requestAnimationFrame ve tohumsuz Math.random kullanma.
5. Görünüm testi
SAMPLES = 4 yap ve filmin her vuruşundan kare al. 15 kareden az alma. setTextureScale(SAMPLES < 16 ? 0.5 : 1) test sürelerini çok kısaltır, çünkü her render işçisi tüm dokuları baştan üretir:
npx hyperframes check
npx hyperframes snapshot --at <t1>,<t2>,... --timeout 240000
Çakışma için --angle top kullan. SAMPLES 1–4'te gökyüzü ışığı ve odak yanıltır: gölgeler sert, odak noktalı görünür. Kaplama ve ışık kararını 16 ile ver.
Kareleri aç ve bak. Kaplama: kabartma abartılı mı, sünme var mı, her yüzey dokulu mu? Kadraj: özne ve kafa kesiliyor mu, her planın işi okunuyor mu? Işık: yön, temas gölgesi, patlama. Hareket: ayak kayması, içinden geçme, havada duran nesne. Yazı: altyazı açık zeminde okunuyor mu?
Referans video varsa aynı anları yan yana koy (scripts/look-stats.mjs sayısal ton karşılaştırması verir), referansın ayrıştırma yöntemi references/film-grammar.md içinde.
6. Taslak, tarama, düzeltme
npx hyperframes render --quality draft --output draft.mp4
node <skill-klasörü>/scripts/qa-film.mjs draft.mp4 --script script.json --whisper <python> --earshot <python>
Tarayıcı kareleri qa/sheet-*.jpg olarak çıkarır (saniyede 4 kare) ve siyah kare, donma, tek karelik parlama, ses seviyesi, işitilmeyen kelime ve earshot karnesini raporlar. Sayfaların hepsine tek tek bak. Makine temiz dese bile hatalar orada görünür. Sonra her yakın planı tam boyutta aç (references/materials.md, kare kare kontrol): küçük sayfada temiz görünen kare tam boyda çoğu zaman temiz değildir. Bu filmde hataların çoğu ancak böyle göründü.
Tam kaliteye geçmeden her bulguyu kapat. Sadece bozuk bölümü yeniden render et:
npx hyperframes render --quality draft --start 18 --end 21 --output parca.mp4
7. Final
SAMPLES 24–32. Sokak filmi ölçeği bir sahne RTX 4060'ta birkaç dakika sürer; özet satırında software gpu görünüyorsa çok daha uzun sürer, kullanıcıya baştan söyle.
npx hyperframes render --quality delivery --output final.mp4
Son filmde taramayı tekrarla, çünkü düşük SAMPLES odak hatalarını gizler. earshot yoksa kurulumu için izin iste (yaklaşık 1–3 GB). PyPI'daki earshot başka bir pakettir; doğru kaynak github.com/Leonxlnx/earshot. Windows'ta sanal ortamı kısa bir yola kur, torch uzun yola takılır.
Teslim
Şunları söyle: ne yaptın, neyi kontrol ettin, neyi kontrol edemedin ve hâlâ eksik olan ne. Kullanılan ses ve müzik kaynaklarını lisanslarıyla listele. Karne yüksek olsa bile launch-grade filmin güzel olduğu anlamına gelmez. Zevk ve dış sesin doğallığı kullanıcıya aittir.
Revize
Kullanıcı revize istediğinde:
- Notu plana çevir: Hangi planda, ne, nasıl görünmeli. Belirsizse en olası yorumu yap ve söyle, her not için soru sorma.
- Doğru yeri değiştir: Kaplama
M.*, kamerasetShots, zamanlama tek bir sabit (BRAKE_T), tonfilm.look, sesscript.json. Sabite bağlı her şey birlikte kayar. - Sadece o bölümü render et:
--startve--endile. Sadece ses değiştiyse görüntüyü render etme (references/sound.md). - Parçayı önceki haliyle yan yana göster, onaydan sonra tam render al.
- Kalıcı dersi skill'e yaz: Bir hata türü ikinci kez çıkarsa bu dosyaya veya ilgili referansa ekle.
Gerçekçi insan: referans + AI video
Bu film AI video aracına referans olur, son görüntüyü o araç üretir. Kurulum henüz uçtan uca denenmedi; ilk kullanımda tek planla sına ve sonucu kullanıcıya göster.
- Sadece blokaj kur: Kadraj, kamera hareketi, kim nerede, ne zaman. Karakter ayrıntısına ve ince kaplamaya zaman harcama.
- Her planı ayrı ver: AI araçları kısa kliplerde daha tutarlıdır.
--startve--endile plan plan render al. Altyazıyı kapat; grain, aberration ve vignette değerlerini sıfırla. Araç yazıları ve efektleri gerçek görüntü sanır. - Görünümü sabitle: Önce planın ilk karesini gerçekçi bir görsele çevir. Karakter ve mekân referanslarını bütün planlarda aynı tut, onay aldıktan sonra videoya geç.
- Maliyeti önceden söyle: Hangi aracı, kaç plan için kullanacağını ve tahmini krediyi belirt, onay al. Bağlı araçlara o an bak; önceden var sayma.
- Kontrol et: Tam boy kareler ve kesme yerleri: yüz, el, plaka ve tabela yazısı, plandan plana kıyafet değişimi. Hareket koreografiden uzaklaşırsa dönüşüm gücünü düşür.
- Sesi burada bitir: Ses ve altyazı
script.jsonile bu hatta kalır. Çıkan kliplerin süresini kontrol et, kaydıysa ses zamanlarını yeni süreye uyarla.
Sınırlar
Başta söyle, sonda değil:
- İnsanlar stilize: Animasyon filmi kalitesinde. Fotoğraf gerçekçiliği, yüz oyunculuğu veya konuşan ağız yok. Yakın planda sırıtır. Gerçekçi insan gerekiyorsa aşağıdaki referans yolunu kullan; insansız filmlerde kahramanı nesne veya araç yap, insanı uzakta tut.
- Fizik sanat yönetimlidir: Hikâyeye göre yazılır, gerçek simülasyon değildir. Kumaş, saç, akışkan simülasyonu yok; su parçacıklarla taklit edilir.
- Sentetik ses kodla üretilirse sentetik duyulur. Gerçek kayıt izin ister.
- Türkçe dış ses dışarıdan ses gerektirir.