Bu bölümde, fiziksel kameranın sağladığı iki olası etkiyi ele alacağız: Alan Derinliği (DoF) ve Hareket Bulanıklığı (MB).
Sahne dosyalarını indirebilir ve alan derinliği ile hareket bulanıklığı efektlerini kendiniz test edebilirsiniz.
Alan derinliği #
Alan derinliği, objektif tarafından üretilen bir etkidir ve görüntünün net olduğu, yani keskin göründüğü aralığı ifade eder. Aşağıdaki faktörlere bağlı olarak değişir:
-
Objektif diyaframı (diyafram değerleri arttıkça odak aralığı da artar)
-
Lens boyutu (geniş açılı lensler menzili artırır)
-
Odaklama mesafesi
Bu efekt, sonradan işleme efekti olarak da uygulanabilir, ancak şu anda ilgilendiğimiz şey CameraPhysical tarafından üretilen doğal efekttir . Bu efekt, “makro” fotoğraf çekerken olduğu gibi, kamera bir nesneye yakın olduğunda en güçlü şekilde görülür. Güçlü bir alan derinliği efekti için, kamera diyaframı geniş açık olmalıdır (yani küçük bir f değeri). Bu, çok yanmış ve parlak bir görüntüye yol açabilir, bu nedenle tüm görüntüde aynı parlaklığı korumak için deklanşör hızı kısaltılmalıdır. Ve son olarak, odak mesafesi, sahnenin hangi bölümünün gerçekten odaklanacağını belirler. Yakın odak elde etmek için küçük bir değere, uzak odak için ise daha yüksek bir değere ihtiyacınız olacaktır.
Sahne paketindeki physicalCamera_camera_depthOfField.vrscene dosyasında use_dof parametresine dikkat edin .

Hareket bulanıklığı #
Hareket bulanıklığı , hızla hareket eden nesnelerin kamera tarafından yakalanması ve hafif bulanık görünmesi sonucu oluşan bir etkidir. Bu etki tek bir faktöre bağlıdır:
-
Enstantane hızı (pozlama) – enstantane hızı ne kadar düşükse, görüntü o kadar bulanık olur.
Hareket bulanıklığı ve alan derinliği (DoF) de ya sonradan işleme efekti olarak eklenebilir ya da fiziksel kamera tarafından doğal olarak üretilebilir. V-Ray’den elde edilen bir renderda hareket bulanıklığını görebilmek için ya hareket eden bir nesneye (veya nesnelere) ya da animasyonlu bir kameraya ihtiyacımız vardır. Hareket bulanıklığının miktarı, hareket eden nesnenin hızı ve kameranın enstantane hızı ayarına bağlıdır. Uzun enstantane hızları, nesnenin hareketi daha uzun bir süre boyunca izlendiği için daha fazla hareket bulanıklığı üretir. Tersine, kısa enstantane hızları daha az hareket bulanıklığı efekti üretir. Tüm görüntüde aynı parlaklığı korumak için f-değerinin de düzeltilmesi gerektiğini unutmayın.
Sahne paketindeki physicalCamera_camera_motionBlur.vrscene dosyasında use_moblur parametresine dikkat edin.
Örnekte, uzaktaki nesnenin yakındaki nesneden daha hızlı hareket ettiğine dikkat edin; bu da hareket bulanıklığı efektlerindeki farklılığa neden olur.

Parametreler #
Daha iyi kalite (daha az gürültü) isteniyorsa, bu etkiler görüntü örnekleyicisinin maksimum alt bölümleme parametresini artırarak elde edilebilir.
Alan derinliği #
Bu ayarlar SettingsCameraDof eklentisinde yer almaktadır .
-
Açık – Alan derinliği efektini açar.
-
Diyafram – Sanal kamera diyaframının dünya birimlerindeki boyutu. Küçük diyafram boyutları alan derinliği etkisini azaltırken, daha büyük boyutlar daha fazla bulanıklık üretir.
-
center_bias – Alan derinliği efektinin homojenliğini belirler. 0.0 değeri, ışığın diyaframdan eşit şekilde geçtiği anlamına gelir. Pozitif değerler, ışığın diyaframın kenarına doğru yoğunlaştığı, negatif değerler ise ışığın merkeze doğru yoğunlaştığı anlamına gelir.
-
sides_on – Gerçek dünyadaki kameraların diyaframının çokgen şeklini simüle etmenizi sağlar. Bu seçenek kapalı olduğunda, şeklin mükemmel bir daire olduğu varsayılır.
-
sides_num – sides_on true ise çokgenin kenar sayısı .
-
focal_dist – Nesnelerin mükemmel netlikte olacağı kamera mesafesini belirler. Bu mesafeden daha yakın veya daha uzak nesneler bulanık olacaktır.
-
Anizotropi – Bokeh efektinin yatay veya dikey olarak uzatılmasına olanak tanır. Pozitif değerler efekti dikey yönde uzatır. Negatif değerler ise yatay yönde uzatır.
-
Döndürme – Açıklık şeklinin yönünü belirtir.
-
subdivs – DOF efekti için örnek sayısını belirler (V-Ray’in yeni sürümlerinde etkisi yoktur).
Alan derinliği yalnızca Standart kamera tipi için desteklenmektedir. Diğer kamera tipleri şu anda alan derinliği efekti üretmemektedir.
Hareket bulanıklığı #
Bu ayarlar SettingsMotionBlur eklentisinde yer almaktadır .
-
on – Hareket bulanıklığını açar. Daha fazla bilgi için aşağıdaki Hareket Bulanıklığı örneğine bakın.
-
geom_samples – Hareket bulanıklığını yaklaşık olarak hesaplamak için kullanılan geometri segmentlerinin sayısını belirler. Nesnelerin geometri örnekleri arasında doğrusal olarak hareket ettiği varsayılır. Hızlı dönen nesneler için, doğru hareket bulanıklığı elde etmek için bu değeri artırmanız gerekir. Daha fazla geometri örneği, bellekte daha fazla geometri kopyası tutulduğu için bellek tüketimini artırır. Ayrıca, Nesne ayarları iletişim kutusundan nesne bazında geometri örneklerinin sayısını da kontrol edebilirsiniz. Daha fazla bilgi için aşağıdaki Geometri Örnekleri örneğine bakın.
-
low_samples – Işınım haritası hesaplamaları sırasında zaman içinde kaç örnek alınacağını kontrol eder.
-
Süre – Fotoğraf makinesinin deklanşörünün açık kalacağı süreyi kare cinsinden belirtir. Daha fazla bilgi için aşağıdaki Süre örneğine bakın.
-
subdivs – MB efekti için örnek sayısını belirler (V-Ray’in yeni sürümlerinde etkisi yoktur).
-
Bias – Hareket bulanıklığı efektinin biasını kontrol eder. 0.0 değeri, ışığın tüm hareket bulanıklığı aralığı boyunca eşit şekilde dağıldığı anlamına gelir. Pozitif değerler, ışığın aralığın sonuna doğru yoğunlaştığı, negatif değerler ise ışığın başlangıcına doğru yoğunlaştığı anlamına gelir.
-
shutter_efficiency – Gerçek dünyadaki kameralarda, deklanşörün açılıp kapanması biraz zaman alır ve bu da hareket bulanıklığının görünümünü etkiler. Bu durum özellikle geniş diyafram açıklığına sahip lensler için geçerlidir. Bu etkiyi simüle etmek için, deklanşör verimliliği parametresi, hareket bulanıklığı örneklerinin çekim süresi boyunca nasıl dağıtıldığını kontrol eder. 1 değeri, örneklerin eşit olarak dağıtıldığı anlamına gelir; sanki açık konumdan kapalı konuma (veya kapalı konumdan açık konuma) geçiş anlıkmış gibi. Daha düşük değerler, gerçek hayatta olduğu gibi, açma veya kapama işleminin kısa bir zaman aralığı almasına karşılık gelecek şekilde, zaman aralığının ortasına daha fazla örnek yerleştirir.
-
interval_center – 3ds Max karesine göre hareket bulanıklığı aralığının ortasını belirtir. 0,5 değeri, hareket bulanıklığı aralığının ortasının kareler arasında tam ortada olduğu anlamına gelir. 0,0 değeri ise aralığın ortasının tam kare konumunda olduğu anlamına gelir. Daha fazla bilgi için aşağıdaki Aralık Merkezi örneğine bakın.
-
camera_motion_blur – Kamera hareketinden kaynaklanan hareket bulanıklığının (nesne hareketinden farklı olarak) hesaplanmasını sağlar.
-
sampling_type – Örnekleme türü: 0 – normal, 1 – yalnızca deklanşör açıkken örnekleme, 2 – yalnızca deklanşör orta konumdayken örnekleme
Örnekler #
Örnek: Alan Derinliği (DOF) #
Alan derinliği (DoF) efektini etkinleştirmek için , fiziksel kameranın Alan Derinliği ve Hareket Bulanıklığı seçeneğini açmanız gerekir . Bu efekt, kamera bir nesneye yakın olduğunda, örneğin makro fotoğraf çekerken en belirgin şekilde görülür. Güçlü bir DoF efekti için, kamera diyaframı geniş açık olmalıdır (yani küçük bir F değeri). Bu, çok yanmış ve parlak bir görüntüye yol açabilir, bu nedenle tüm görüntüde aynı aydınlatmayı korumak için deklanşör hızı kısaltılmalıdır. Son olarak, odak mesafesi, sahnenin hangi bölümünün gerçekten odaklanacağını belirler. Yakın odak elde etmek için küçük bir değere, uzak odak için ise daha yüksek bir değere ihtiyacınız olacaktır.
Bu örnekteki görüntüler için bazı parametrelerde aşağıdaki sabit ayarlar kullanılmıştır: Pozlama açık, F değeri 1.0, Enstantane hızı 4000.0, Film hızı (ISO) 100.0, Vinyetleme kapalı.

Alan derinliği kapalı.

Alan derinliği açık, odak mesafesi 7,30 m.

Alan derinliği açık, odak mesafesi 4,34 m.
Örnek: Hareket bulanıklığı #
Hareket bulanıklığı efektini etkinleştirmek için, fiziksel kameranın Alan Derinliği ve Hareket Bulanıklığı açılır menüsünde Hareket Bulanıklığı seçeneğini etkinleştirmeniz gerekir. Hareket bulanıklığı miktarı, hareket eden nesnenin hızı ve kameranın Enstantane Hızı ayarına bağlıdır. Nesnenin hareketi daha uzun süre takip edildiğinden, uzun enstantane hızları daha fazla hareket bulanıklığı oluşturacaktır. Tersine, kısa enstantane hızları daha az hareket bulanıklığı oluşturacaktır. Tüm görüntüde aynı parlaklığı korumak için F-Numarası değerinin de düzeltilmesi gerektiğini unutmayın .
Bu örnekte, düşen çatı kiremitleri saksıdan daha hızlı hareket ediyor, bu da hareket bulanıklığı efektinde farklılığa neden oluyor.
Bu örnekteki görüntüler için bazı parametrelerde aşağıdaki sabit ayarlar kullanılmıştır: Pozlama açık, Film hızı (ISO) 200.0 ve Vinyetleme açık.

Hareket bulanıklığı kapalı.

Hareket bulanıklığı açık, diyafram açıklığı 8.0, enstantane hızı 80.0.

Hareket bulanıklığı açık, diyafram açıklığı 16.0, enstantane hızı 20.0.
# Python 2.7 ile uyumluluk.
from __future__ import print_function
# Vray paylaşımlı nesnesini içeren dizin, PYTHONPATH ortam değişkeninde bulunmalıdır.
# VRAY_SDK/python dizininden vray modülünü içe aktarmayı deneyin, eğer PYTHONPATH'te yoksa.
import sys, os
VRAY_SDK = os.environ.get('VRAY_SDK')
VRAY_SDK ise:
sys.path.append(os.path.join(VRAY_SDK, 'python'))
vray'i içe aktar
SCENE_PATH = os.path.join(os.environ.get('VRAY_SDK'), 'scenes')
# Göreceli sahne kaynaklarını yükleyebilmek için işlem çalışma dizinini SCENE_PATH olarak değiştirin.
os.chdir(SCENE_PATH)
def onStateChanged(oluşturucu, oldState, newState, anlık):
if newState == vray.RENDERER_STATE_IDLE_FRAME_DONE or newState == vray.RENDERER_STATE_IDLE_DONE:
print("Görüntü Hazır, kare " + str(renderer.frame) + " (sequenceEnd = " + str(renderer.sequenceEnded) + ")")
if newState == vray.RENDERER_STATE_IDLE_FRAME_DONE:
# Eğer işlem dizisi HENÜZ bitmediyse, bir sonraki kareye geçin.
oluşturucu.devamlıDiziye()
# Varsayılan seçeneklerle bir VRayRenderer örneği oluşturun.
# `with` bloğundan sonra oluşturucu otomatik olarak kapatılır.
vray.VRayRenderer() ile renderer olarak:
# Basit bir günlük kaydı geri çağırma işlevi kaydedin. Hata ayıklama için her zaman faydalıdır.
def dumpMsg(renderer, message, level, instant):
if level == vray.LOGLEVEL_ERROR:
print("[HATA]", mesaj)
elif level == vray.LOGLEVEL_WARNING:
print("[Uyarı]", mesaj)
elif level == vray.LOGLEVEL_INFO:
print("[bilgi]", mesaj)
# Test amaçlı olarak yorum satırını kaldırın, ancak gerçek kodda bunları göz ardı etmek isteyebilirsiniz.
#else: print("[debug]", message)
renderer.setOnLogMessage(dumpMsg)
# Oluşturucu durum değişikliği olayına bir dinleyici ekleyin.
# Bunu, bir karenin tamamlandığını tespit etmek ve bir sonrakinin başlamasına izin vermek için kullanacağız.
renderer.setOnStateChanged(onStateChanged)
# Sahneyi dosyadan yükle.
renderer.load(os.path.join(SCENE_PATH, 'animation.vrscene'))
# Etkileşimli mod için piksel başına maksimum yol sayısı. İşlemeyi daha hızlı tamamlamak için düşük bir örnekleme seviyesi ayarlayın.
# Varsayılan değer sınırsızdır. Bunu sahneyi yükledikten *sonra* çağırmamız gerekiyor.
oluşturucu.setInteractiveSampleLevel(1)
# Alan derinliğini etkinleştirin ve parametreleri uygulayın
settingsDof = renderer.classes.SettingsCameraDof.getInstanceOrCreate()
settingsDof.on = True
settingsDof.aperture = 6 # f/6
settingsDof.focal_dist = 100 # sahne birimlerinde odak mesafesi
# Varsayılan V-Ray kamerası basit bir iğne deliği kamerasıdır. Gelişmiş efektleri etkinleştirmek için...
# Alan derinliği, hareket bulanıklığı, şekillendirilmiş bokeh, vinyetleme vb. efektler için bu eklentiyi eklemeniz gerekiyor.
kamera = renderer.classs.CameraPhysical.getInstanceOrCreate()
# Fotoğraf makinesi objektifinin odak uzaklığını belirtin.
kamera.odak_uzunluğu = 55
# Kamera diyaframının genişliğini belirtin.
# Eğer "exposure = True" ise, 'f_number' değerini değiştirmek görüntü parlaklığını etkileyecektir.
kamera.f_number = 12
# Fotoğraf makinesi için deklanşör hızını saniyenin tersi cinsinden belirtin ("type = 0").
Örneğin, 1/30 s enstantane hızı "shutter_speed=30" ifadesine karşılık gelir.
kamera.enstantane_hızı = 40
# Film hassasiyetini belirtin.
# Eğer "exposure = True" ise, "ISO" değerini değiştirmek görüntü parlaklığını etkileyecektir.
# Daha küçük değerler görüntüyü daha koyu, daha büyük değerler ise daha açık hale getirir.
kamera.ISO = 800
# Kamera ile mevcut hedef konum arasındaki mesafe
# Eğer "specify_focus=0" ise, bu değer odak mesafesi olarak kullanılacaktır.
kamera.hedef_mesafesi = 23.72558
# Kamera parametreleriyle kontrol edilen hareket bulanıklığı efektini etkinleştirir.
# Bu ayar, 'SettingsMotionBlur' eklentisinin 'on' özelliği kullanılarak da değiştirilebilir.
kamera.moblur_kullan = Doğru
# Kare dizisinin (animasyonun) oluşturulmasına başla.
oluşturucu.oluşturmaSırası()
# Tüm işlem dizisi tamamlanana kadar bekleyin.
oluşturucu.bekleSequenceEnd()
#define VRAY_RUNTIME_LOAD_PRIMARY
#include "vraysdk.hpp"
#include "vrayplugins.hpp"
#include "utils.h"
VRay ad alanını kullanarak;
VRay::Plugins ad alanını kullanarak;
std ad alanını kullanarak;
const char *BASE_PATH = getenv("VRAY_SDK");
string SCENE_PATH = (BASE_PATH ? string(BASE_PATH) : string(".")) + PATH_DELIMITER + "scenes";
void onStateChanged(VRayRenderer &renderer, RendererState oldState, RendererState newState, double instant, void* userData) {
if (newState == IDLE_FRAME_DONE || newState == IDLE_DONE) {
printf("Görüntü Hazır, kare %d (sequenceEnded = %d)\")
", renderer.getCurrentFrame(), renderer.isSequenceEnded());
if (newState == IDLE_FRAME_DONE) {
// Eğer işlem dizisi HENÜZ bitmediyse, bir sonraki kareye geçin.
oluşturucu.devamlılıkDizisi();
}
}
}
int main() {
// Göreceli sahne kaynaklarını yükleyebilmek için işlem çalışma dizinini SCENE_PATH olarak değiştirin.
changeCurrentDir(SCENE_PATH.c_str());
// V-Ray SDK kütüphanesini yükle.
VRayInit init(NULL, true);
// Varsayılan seçeneklerle bir VRayRenderer örneği oluşturun.
// Geçerli kapsamın sonunda oluşturucu otomatik olarak kapatılır.
VRayRenderer oluşturucu;
// Her zaman konsol günlüğü tutmanız önerilir.
renderer.setOnLogMessage(logMessage);
// Oluşturucu durum değişikliği olayına bir dinleyici ekleyin.
// Bu kodu, bir karenin tamamlandığını tespit etmek ve bir sonrakinin başlamasına izin vermek için kullanacağız.
renderer.setOnStateChanged(onStateChanged);
// Sahneyi dosyadan yükle.
renderer.load("animation.vrscene");
// Etkileşimli mod için piksel başına maksimum yol sayısı. İşlemeyi daha hızlı tamamlamak için düşük bir örnekleme seviyesi ayarlayın.
// Varsayılan değer sınırsızdır. Bunu sahne yüklendikten *sonra* çağırmamız gerekiyor.
oluşturucu.setInteractiveSampleLevel(1);
// Alan derinliğini etkinleştirin ve parametreleri uygulayın
SettingsCameraDof settingsDof = renderer.getInstanceOrCreate<SettingsCameraDof>();
settingsDof.set_on(true);
settingsDof.set_aperture(6); // f/6
settingsDof.set_focal_dist(100); // sahne birimlerinde odak mesafesi
// Varsayılan V-Ray kamerası basit bir iğne deliği kamerasıdır. Gelişmiş efektleri etkinleştirmek için...
// Alan derinliği, hareket bulanıklığı, şekillendirilmiş bokeh, vinyetleme vb. efektler için bu eklentiyi eklemeniz gerekiyor.
CameraPhysical camera = renderer.getInstanceOrCreate<CameraPhysical>();
// Kamera objektifinin odak uzaklığını belirtin.
kamera.odak_uzunluğunu_ayarla(55);
// Kamera diyaframının genişliğini belirtin.
// Eğer "exposure = true" ise, 'f_number' değerini değiştirmek görüntü parlaklığını etkileyecektir.
kamera.set_f_number(12);
// Fotoğraf makinesi için deklanşör hızını, saniyenin tersi cinsinden belirtin ("type = 0").
// Örneğin, 1/30 saniye enstantane hızı "shutter_speed=30" ifadesine karşılık gelir.
kamera.set_shutter_speed(40);
// Film hassasiyetini belirtin. "exposure = True" ise, "ISO" değerini değiştirmek görüntü parlaklığını etkileyecektir.
// Daha küçük değerler görüntüyü daha koyu, daha büyük değerler ise daha açık hale getirir.
kamera.ISO(800) olarak ayarla;
// Kamera ile mevcut hedef konum arasındaki mesafe.
// Eğer "specify_focus=0" ise, bu değer odak mesafesi olarak kullanılacaktır.
kamera.hedef_mesafesi(23.72558f);
// Kamera parametreleriyle kontrol edilen hareket bulanıklığı efektini etkinleştirir.
// Bu ayar, 'SettingsMotionBlur' eklentisinin 'on' özelliği kullanılarak da değiştirilebilir.
kamera.set_use_moblur(true);
// Kare dizisinin (animasyonun) oluşturulmasına başla.
oluşturucu.oluşturmaSırası();
// Tüm işlem dizisi tamamlanana kadar bekleyin.
oluşturucu.sekanssonunubekle();
0 döndür;
}
Sistem kullanılarak;
System.IO kullanarak;
VRay kullanarak;
VRay.Plugins kullanılarak;
ad alanı _05_motion_blur
{
sınıf Programı
{
statik void Main(string[] args)
{
string SCENE_PATH = Path.Combine(Environment.GetEnvironmentVariable("VRAY_SDK"), "scenes");
// Göreceli sahne kaynaklarını yükleyebilmek için işlem çalışma dizinini SCENE_PATH olarak değiştirin.
Directory.SetCurrentDirectory(SCENE_PATH);
// Varsayılan seçeneklerle bir VRayRenderer örneği oluşturun.
// `using` bloğundan sonra oluşturucu otomatik olarak kapatılır.
(VRayRenderer renderer = new VRayRenderer()) kullanarak
{
// Herhangi bir türdeki günlük mesajı için bir dinleyici ekleyin.
renderer.LogMessage += new EventHandler<MessageEventArgs>((source, e) =>
{
// Test amaçlı olarak if koşulunu kaldırabilirsiniz, ancak gerçek kodda Debug'ı göz ardı etmek isteyebilirsiniz.
eğer (e.LogLevel != LogLevelType.Debug)
{
Console.WriteLine(String.Format("[{0}] {1}", e.LogLevel.ToString(), e.Message));
}
});
// Durum değişiklikleri için bir dinleyici ekleyin. Bu dinleyici, oluşturucu oluşturma işlemine hazırlanırken, oluşturma işlemi tamamlandığında, bittiğinde veya başarısız olduğunda çağrılır.
renderer.StateChanged += new EventHandler<StateChangedEventArgs>((source, e) =>
{
if (e.NewState == VRayRenderer.RendererState.IDLE_FRAME_DONE)
{
Console.WriteLine("Görüntü Hazır, kare " + renderer.Frame + )
"(sequenceEnded = " + renderer.IsSequenceEnded + ")");
// Eğer işlem dizisi HENÜZ bitmediyse, bir sonraki kareye geçin.
oluşturucu.DevamDizisi();
}
});
// Sahneyi dosyadan yükle.
renderer.Load("animation.vrscene");
// Etkileşimli mod için piksel başına maksimum yol sayısı. İşlemeyi daha hızlı tamamlamak için düşük bir örnekleme seviyesi ayarlayın.
// Varsayılan değer sınırsızdır. Bunu sahne yüklendikten *sonra* çağırmamız gerekiyor.
oluşturucu.SetInteractiveSampleLevel(1);
// Alan derinliğini etkinleştirin ve parametreleri uygulayın
SettingsCameraDof settingsDof = renderer.GetInstanceOrCreate<SettingsCameraDof>();
settingsDof.On = true;
settingsDof.Aperture = 6; // f/6
settingsDof.FocalDist = 100; // sahne birimlerinde odak mesafesi
// Varsayılan V-Ray kamerası basit bir iğne deliği kamerasıdır. Gelişmiş efektleri etkinleştirmek için...
// Alan derinliği, hareket bulanıklığı, şekillendirilmiş bokeh, vinyetleme vb. efektler için bu eklentiyi eklemeniz gerekiyor.
CameraPhysical camera = renderer.GetInstanceOrCreate<CameraPhysical>();
// Kamera objektifinin odak uzaklığını belirtin.
kamera.OdakUzaklığı = 55;
// Kamera diyaframının genişliğini belirtin.
// Eğer "Exposure = true" ise, 'FNumber' değerini değiştirmek görüntü parlaklığını etkileyecektir.
kamera.FNumarası = 12;
// Fotoğraf makinesi için deklanşör hızını, saniyenin tersi cinsinden belirtin ("type = 0").
// Örneğin, 1/30 s enstantane hızı "shutter_speed=30" ifadesine karşılık gelir.
kamera.EnstantaneHızı = 40;
// Film hassasiyetini belirtin.
// Eğer "Exposure = true" ise, "ISO" değerini değiştirmek görüntü parlaklığını etkileyecektir.
// Daha küçük değerler görüntüyü daha koyu, daha büyük değerler ise daha açık hale getirir.
kamera.ISO = 800;
// Kamera ile mevcut hedef konum arasındaki mesafe
// Eğer "SpecifyFocus = 0" ise, bu değer odak mesafesi olarak kullanılacaktır.
kamera.HedefMesafe = 23.72558F;
// Kamera parametreleriyle kontrol edilen hareket bulanıklığı efektini etkinleştirir.
// Bu ayar, 'SettingsMotionBlur' eklentisinin 'on' özelliği kullanılarak da değiştirilebilir.
kamera.MoblurKullan = true;
// Kare dizisinin (animasyonun) oluşturulmasına başla.
oluşturucu.RenderSequence();
// Tüm işlem dizisi tamamlanana kadar bekleyin.
oluşturucu.SequenceEnd'i Bekle();
}
}
}
}
var yol = require('yol');
var vray = require(path.join(process.env.VRAY_SDK, 'node', 'vray'));
var SCENE_PATH = path.join(process.env.VRAY_SDK, 'scenes');
// Göreceli sahne kaynaklarını yükleyebilmek için işlem çalışma dizinini SCENE_PATH olarak değiştirin.
işlem.chdir(SCENE_PATH);
// Varsayılan seçeneklerle bir VRayRenderer örneği oluşturun.
var oluşturucu = vray.VRayRenderer();
// Her zaman bir konsol günlük kaydı geri çağırma işlevine sahip olmanız önerilir.
renderer.on("logMessage", function(message, level, instant) {
if (level == vray.LOGLEVEL_ERROR)
console.log("[HATA] ", mesaj);
aksi takdirde eğer (seviye == vray.LOGLEVEL_WARNING)
console.log("[Uyarı] ", message);
aksi takdirde eğer (seviye == vray.LOGLEVEL_INFO)
console.log("[bilgi] ", mesaj);
// Test amaçlı olarak yorum satırını kaldırın, ancak gerçek kodda bunları göz ardı etmek isteyebilirsiniz.
//else console.log("[debug] ", message);
});
// Oluşturucu durum değişikliği olayına bir dinleyici ekleyin.
// Bu kodu, bir karenin tamamlandığını tespit etmek ve bir sonrakinin başlamasına izin vermek için kullanacağız.
renderer.on("stateChanged", function(oldState, newState, instant) {
if (newState == "idleFrameDone" || newState == "idleDone") {
console.log("Görüntü Hazır, kare " + renderer.frame + " (sequenceEnd = " + renderer.sequenceEnded + ")");
// Dizinin işlenmesinin tamamlanıp tamamlanmadığını kontrol edin.
if (newState == "idleDone") {
oluşturucu.kapat();
} başka {
// Eğer işlem dizisi HENÜZ bitmediyse, bir sonraki kareye geçin.
oluşturucu.devamlılıkDizisi();
}
} aksi takdirde (newState.startsWith("idle")) {
console.log("Beklenmeyen render dizisi sonu: ", newState);
oluşturucu.kapat();
}
});
// Sahneyi dosyadan eşzamansız olarak yükle.
renderer.load("animation.vrscene", function(err) {
Eğer (hata) varsa, hata fırlat;
// Etkileşimli mod için piksel başına maksimum yol sayısı. İşlemeyi daha hızlı tamamlamak için düşük bir örnekleme seviyesi ayarlayın.
// Varsayılan değer sınırsızdır. Bunu sahne yüklendikten *sonra* çağırmamız gerekiyor.
oluşturucu.setInteractiveSampleLevel(1);
// Alan derinliğini etkinleştirin ve parametreleri uygulayın
settingsDof = renderer.classes.SettingsCameraDof.getInstanceOrCreate();
settingsDof.on = true;
settingsDof.aperture = 6; // f/6
settingsDof.focal_dist = 100; // sahne birimlerinde odak mesafesi
// Varsayılan V-Ray kamerası basit bir iğne deliği kamerasıdır. Gelişmiş efektleri etkinleştirmek için...
// Alan derinliği, hareket bulanıklığı, şekillendirilmiş bokeh, vinyetleme vb. efektler için bu eklentiyi eklemeniz gerekiyor.
var camera = renderer.classes.CameraPhysical.getInstanceOrCreate();
// Kamera objektifinin odak uzaklığını belirtin.
kamera.odak_uzunluğu = 55;
// Kamera diyaframının genişliğini belirtin.
// Eğer "exposure = true" ise, 'f_number' değerini değiştirmek görüntü parlaklığını etkileyecektir.
kamera.f_number = 12;
// Fotoğraf makinesi için deklanşör hızını, saniyenin tersi cinsinden belirtin ("type = 0").
// Örneğin, 1/30 s enstantane hızı "shutter_speed=30" ifadesine karşılık gelir.
kamera.deklanşör_hızı = 40;
// Film hassasiyetini belirtin.
// Eğer "exposure = true" ise, "ISO" değerini değiştirmek görüntü parlaklığını etkileyecektir.
// Daha küçük değerler görüntüyü daha koyu, daha büyük değerler ise daha açık hale getirir.
kamera.ISO = 800;
// Kamera ile mevcut hedef konum arasındaki mesafe.
// Eğer "specify_focus=0" ise, bu değer odak mesafesi olarak kullanılacaktır.
kamera.hedef_mesafesi = 23.72558;
// Kamera parametreleriyle kontrol edilen hareket bulanıklığı efektini etkinleştirir.
// Bu ayar, 'SettingsMotionBlur' eklentisinin 'on' özelliği kullanılarak da değiştirilebilir.
kamera.moblur kullan = true;
// Kare dizisinin (animasyonun) oluşturulmasına başla.
oluşturucu.oluşturmaSırası();
});
Eğri bir yörüngede hareket eden nesnelerde hareket bulanıklığı #
Eğri bir yolda hareket eden, dönen veya deforme olan nesneler, doğru hareket bulanıklığı için genellikle daha fazla geometri örneğine ihtiyaç duyar. Bu, SettingsMotionBlur::geom_samples ile kontrol edilir . Örneğin, varsayılan 2 değeriyle, eğri bir yolda hareket eden bir küre, hareket bulanıklığı uygulandığında düz bir çizgide hareket ediyormuş gibi görünecektir. (Genel olarak, daha fazla geometri örneği performansta hafif bir düşüşe yol açar, bu nedenle varsayılan değer 2’dir.)
Geometri örnek sayısını az da olsa artırmak, doğru hareket bulanıklığı elde etmenizi sağlayacaktır. Mükemmel değer sahneye bağlıdır ve biraz deneme gerektirebilir.
Küçük ve/veya hızlı hareket eden nesnelerde hareket bulanıklığı #
Küçük, hızlı hareket eden veya hem küçük hem de hızlı hareket eden nesneler için, Görüntü Örnekleyicisinin minimum alt bölme sayısının varsayılan 1 değerinin biraz üzerine çıkarılması gerekebilir. Bu durum, hareket bulanıklığı kullanılmasa bile bazı ek ayarların yapılmasını gerektirebilen küçük parçacıklar veya ince saç telleri için geçerlidir. V-Ray’in uyarlanabilir örnekleyicisi, bir pikseldeki ilk örnekte bu tür nesneleri kaçırabilir ve bu da pikselin örneklenmesine devam etmesini engelleyebilir. Genellikle bu, Görüntü Örnekleyicisinin minimum alt bölme sayısını 2 veya 3’e yükseltmeyi gerektirir. (Varsayılan değerin seçimi şu ilişkiden kaynaklanmaktadır: başlangıç örnekleri ne kadar fazla olursa, işleme o kadar yavaş olur. Çoğu durumda 1 değeri iyi sonuçlar verir, ancak bazen manuel ayarlamalar gerekebilir.)
İşte dikkate almanız gereken bir örnek. Tek yöne doğru parçacık fırlatan basit bir parçacık yayıcı. Görüntü Örnekleyicisinin minimum alt bölüm sayısını 1’den 2’ye çıkarmanın etkisini görmek için hareket bulanıklığı olmayan ve hareket bulanıklığı olan görüntüleri karşılaştırın.

Hareket bulanıklığı olmayan küçük, hızlı hareket eden parçacıklar . Kova örnekleyici, minimum alt bölüm sayısı = 1

Hareket bulanıklığına sahip küçük, hızlı hareket eden parçacıklar . Kova örnekleyici, minimum alt bölüm sayısı = 1

Hareket bulanıklığına sahip küçük, hızlı hareket eden parçacıklar . Kova örnekleyici, minimum alt bölüm sayısı = 2
Hareket bulanıklığı etkinleştirildiğinde bazı parçacıkların hiç oluşturulmadığı açıkça görülüyor. Görüntü Örnekleyicisinin minimum alt bölüm sayısını 2’ye yükseltmek, V-Ray’in herhangi bir uyarlanabilirlik uygulanmadan önce her pikselde daha fazla başlangıç örneği çekmesini sağlar. Bu, tüm parçacıkların kesişmesine yardımcı olur.
Hareket Bulanıklığı Notları
Bu örneklerde SettingsMotionBlur::low_samples parametresi bilerek atlanmıştır. Bu parametre, GI için Irradiance Map motorunu kullanırken hareket bulanıklığı örneklerini kontrol eder ve Irradiance Map artık Adaptive Lights gibi özelliklerle uyumlu olmadığı için önerilen bir GI çözümü değildir.
