Rehberler / Komutlar ve Veriler
Mod olmadan kamera ara sahneleri: keyframe'ler, interpolasyon ve spectator hileleri
Vanilla bir kamerayı tek bir şekilde hareket ettirir — her tick çalışan bir ışınlama fonksiyonu — ve zaman çizelgesi kaydı da etrafındaki atmosferi ayarlar. Her birinin neye yaradığı ve robotik görünmesini engelleyen yumuşatma.
Vanilla'da kamera diye bir nesne yok, yani bir ara sahne ışınlamalardan kurulan bir yanılsamadır; etrafındaki dünyayı değiştiren bir zaman çizelgesiyle birlikte.
Yöntem 1: oyuncuyu her tick ışınla
Eski, evrensel yol. Oyuncuyu spectator moduna al, sonra bir yol boyunca hareket ettir:
gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0
bir fonksiyon zincirinden her tick için bir tp. Her sürümde çalışır ve özel bir şey gerektirmez. Sorunların hepsi akıcılıkla ilgili:
- Saniyede 20 keyframe. On saniyelik bir çekim 200
tpsatırıdır. - Doğrusal adımlar mekanik görünür. Gerçek kamera hareketleri yavaşlayıp hızlanır.
- Dönüş kötü sarar. Yaw 170'ten -170'e gitmek 20 derecelik bir dönüştür, ama saf interpolasyon 340 dereceyi yanlış yöne döndürür. Adım atmadan önce açı farkını -180…180 aralığına normalleştir.
Bu satırları üretmek keyframe aracının işidir — birkaç konum yerleştirirsin ve araç, easing uygulanmış her tick fonksiyonunu üretir.
Easing
Amatör ile izlenebilir arasındaki fark interpolasyon eğrisidir. İki keyframe arasında, t 0'dan 1'e giderken:
linear t
ease-in-out t < 0.5 ? 2t² : 1 − 2(1−t)²
smoothstep t² × (3 − 2t)
smoothstep güvenli varsayılandır. Bunu konuma ve dönüşe birlikte uygula, yoksa kamera dönüşünü bitirmeden varır.
Yöntem 2: zaman çizelgeleri, kamera dışındaki her şey için
Yakın sürümler bir timeline kaydı ekledi ve bunu bir kamera izi olarak okumak cezbedicidir:
data/<namespace>/timeline/intro.json
Ama değildir. Bir zaman çizelgesi dünya saatine karşı çalışır ve ortam niteliklerini keyframe'ler — gökyüzü ve sis rengi, ortam sesi ve müziği, ışık — yerel interpolasyonla. Bir oyuncuyu hareket ettiremez, yani kameranın kendisi hâlâ yöntem 1'dir. Bir zaman çizelgesinin iyi yaptığı şey ara sahnenin atmosferidir: gökyüzünü soldur, sisi kaydır ve müziği ışınlamalarla aynı adımda değiştir, her biri için ayrı bir tick komutu olmadan.
Bedeli, yalnızca yakın sürümlerde var olmasıdır, yani eski istemcileri hedefleyen bir harita atmosferi /time ve /weather ile taklit etmek zorundadır.
Oyuncuyu yerinde tutmak
Işınlama yolu iki şeyle savaşır:
- Oyuncu girdisi. Spectator, oyuncunun çekim ortasında uçup gitmesine izin verir. Her tick yeniden ışınlamak bunu geçersiz kılar, bu da kaba kuvvet yönteminin neden sürdüğünün bir nedenidir.
- Chunk yüklemesi. Yüklenmemiş bir yere uçan kamera boşluk gösterir. Çekimden önce yolu
/forceloadve sonra kaldır.
HUD'u gizlemek
Spectator modu ve F1 seni çoğu yola götürür. Temiz bir kare için, HUD sprite'larını boşaltan bir kaynak paketi, oyuncu hiçbir şeye basmadan crosshair ve hotbar'ı kaldırır — HUD rehberine bakın.
Bir yola keyframe'ler yerleştir ve her tick fonksiyonunu dışa aktar, ve etrafındaki sahneyi kuran zaman çizelgesini Ara Sahne ve Zaman Çizelgesi Oluşturucuları ile inşa et.