View Categories

Açık Dikdörtgen

4 dakika okuma

Işıklar hakkında giriş ve genel bakış


İyi fotogerçekçi render’lar elde etmek için en önemli şey iyi aydınlatmadır. Ayrıca görüntü gürültüsünü ve performansı da etkiler. Bazı ışıklar diğerlerine göre daha hızlı ve daha az gürültüyle render edilir. Işıkların gürültüsünü ve performansını etkileyebilecek faktörler şunlardır: düz renk yerine doku kullanmak; karmaşık bir ağa sahip olmak; nispeten küçük boyutta bir alan ışığı olmak.

V-Ray’de birkaç fotogerçekçi ışık kaynağımız var. İlk bölümde dikdörtgen ışık kaynağını ele alacağız.

Hemen hemen hepsinin bazı ortak parametreleri vardır:

  • Renk, Renk sıcaklığı ( SunLight hariç , o bunları gerçekçi bir model kullanarak hesaplar)

  • Yoğunluk ( çarpanı olan Güneş Işığı hariç)

  • Subdivs ( LightAmbient hariç ) – bu parametre, DMC örnekleyici ayarlarıyla birlikte ışığı örneklerken örnek sayısını kontrol eder.

  • Dağınık/yansıtıcı ışığı etkileme ( LightAmbient hariç ) – belirli lambaların dağınık/yansıtıcı ışıklı nesnelere katkıda bulunmasını engelleyebiliriz.

  • Gölge oluşturma ( LightAmbient hariç ) – bir lambayı gölge hesaplamasından çıkarabiliriz.

  • Dahil Et/Hariç Tut listeleri – bu lambanın aydınlatacağı nesneleri hariç tutabiliriz.

Alan ışıkları sahnede nesne olarak temsil edilir, ancak görünmez olabilirler.

Dikdörtgen ışık #


İşte dokulu dikdörtgen bir lambanın resmi:

Disk şeklinde yuvarlaklaştırılabilir ve ayrıca dokulu hale getirilebilir. Işığı dokulu hale getirmenin ardındaki fikir, tüm ışık yüzeyinde tek renkli ışık yerine, gerçek dünyadaki ışığın kusurlarını simüle etmektir. Stüdyo softbox’ları bile mükemmel değildir ve ışıklarında belirli yerlerde daha koyu noktalar bulunur. Farklı softbox’ların dokularını internette bulabilirsiniz.

Doku dosyaları, kubbe ve dikdörtgen için varsayılan değeri 512, ağ ışıkları için ise 256 olan tex_resolution parametresiyle kontrol edilen bir çözünürlükte yeniden örneklenir. Bu nedenle, özellikle kubbe ortamında ışık dokusu çok pikselli görünüyorsa, bu çözünürlüğü artırmayı deneyin. Bu elbette bellek kullanımını ve render süresini biraz artıracaktır.

Işık parametreleri #


İşte LightRectangle parametrelerinin listesi  . Bunların çoğu tüm alan aydınlatmaları için ortaktır:

  • enabled  – ışık açıksa true, aksi halde false; bu parametreyi yalnızca animasyonluysa veya başka bir nesne bu düğüme bağlıysa ancak render edilmemesi gerekiyorsa kullanmak mantıklıdır.

  • dönüştürme  – Sahnedeki dönüşüm

  • Renk  – Işığın rengi

  • color_tex  – Mevcut olması durumunda color parametresini geçersiz kılacak bir renk dokusu.

  • affectDiffuse  – Işık dağınık aydınlatma oluşturuyorsa True, aksi halde False.

  • affectSpecular  – Işık yansımalı vurgular oluşturuyorsa True, aksi halde False.

  • affectAtmospherics – Işığın atmosferik etkileri etkileyip etkilemediğini gösterir.

  • diffuse_contribution  – Işığın yayılma katkısı.

  • specular_contribution  – Işığın yansıma katkısı.

  • atmosferik katkı  – Işığın atmosferik etkilere katkısı.

  • use_global_light_level  – ışığın genel ışık seviyesi ayarını kullanıp kullanmayacağını belirtmek için true değerini kullanın.

  • bumped_below_surface_check  – Işık yönünün yüzeyin altında olup olmadığını kontrol etmek için kabartmalı normalin kullanılıp kullanılmayacağını belirtir.

  • nsamples  – Hareket bulanıklığı için parametre örneklerinin sayısı.

  • gölgeler  – ışık gölge oluşturuyorsa doğru, aksi halde yanlış.

  • shadowColor  – Gölge rengi. Siyah dışındaki herhangi bir renk fiziksel olarak doğru değildir.

  • shadowColor_tex  – Mevcut olması durumunda shadowColor parametresini geçersiz kılacak bir renk dokusu.

  • shadowBias  – Gölgenin yüzeyden uzaklığı. Düşük poligonlu yüzeylerde çokgen gölge bozulmalarını önlemeye yardımcı olur.

  • photonSubdivs  – Küresel Foton Haritası hesaplanırken bu ışık tarafından yayılan foton sayısını belirler. 1000 alt bölüm 1 milyon fotona eşittir.

  • causticSubdivs –  Caustics  Foton Haritası  hesaplanırken bu ışık tarafından yayılan foton sayısını belirler . 1000 alt bölüm 1 milyon fotona eşittir.

  • diffuseMult  – Dağınık fotonlar için çarpan.

  • causticMult – Kostik fotonlar  için çarpan   .

  • cutoffThreshold  – Işık kesme eşiği (hız optimizasyonu). Bir noktanın ışık yoğunluğu bu eşiğin altındaysa, ışık hesaplanmayacaktır.

  • kanallar  – Bu ışığın sonucu şu kanallara yazılacaktır:

  • channels_raw  – Bu ışığın ham dağılım sonucunun yazılacağı render kanalları.

  • channels_diffuse  – Bu ışığın dağılım sonucunun yazılacağı kanalları oluşturur.

  • channels_specular  – Bu ışığın yansıma sonucunun yazılacağı render kanalları.

  • channels_full – Bu ışığın tam (doğrudan + dolaylı) sonucunun yazılacağı kanalları işleyin.

  • Birimler  – Yoğunluk birimleri. CameraPhysical’ı kullanırken doğru birimleri kullanmak çok önemlidir. Işık, çalıştığınız ölçek için doğru sonucu üretmek üzere sahne birimleri ölçeğini otomatik olarak dikkate alacaktır. Olası değerler şunlardır:

    • 0 –  varsayılan  – Renk ve çarpan, herhangi bir dönüştürme yapılmadan ışığın görünür rengini doğrudan belirler. Işık yüzeyi, kamera tarafından doğrudan görüldüğünde (renk eşlemesi olmadığı varsayılarak) son görüntüde verilen renkte görünecektir.

    • 1 –  lümen  – Lümen cinsinden ölçülen toplam yayılan görünür ışık gücü. Bu ayar kullanıldığında, ışığın yoğunluğu boyutuna bağlı olmayacaktır. Tipik bir 100W’lık elektrik ampulü yaklaşık 1500 lümen ışık yayar.

    • 2 –  lm/m/m/sr  – Görünür ışık yüzey gücü, steradyan başına metrekare başına lümen cinsinden ölçülür. Bu ayar kullanıldığında, ışığın yoğunluğu boyutuna bağlıdır.

    • 3 –  watt  – Toplam yayılan görünür ışık gücü, watt cinsinden ölçülür. Bu ayarı kullanırken, ışığın yoğunluğu boyutuna bağlı değildir. Bunun, örneğin bir ampulün tükettiği elektrik gücüyle aynı olmadığını unutmayın. Tipik bir 100W’lık ampul, görünür ışık olarak yalnızca 2 ila 3 watt arasında ışık yayar.

    • 4 –  w/m/m/sr  – Görünür ışık yüzey gücü, watt/metrekare/steradyan cinsinden ölçülür. Bu ayar kullanıldığında, ışığın yoğunluğu boyutuna bağlıdır.

  • yoğunluk  – Işık yoğunluğu

  • intensity_tex  – Mevcut olması durumunda intensity parametresini geçersiz kılacak bir float doku değeri.

  • alt bölümler  – Bu ışıktan alınacak örnek sayısı

  • Görünmez  – Işık kameradan doğrudan görünmüyorsa True, aksi halde False değerini döndürür.

  • occludeLights – Etkinleştirildiğinde, ışık görünmez olduğunda gölge, küresel aydınlatma ve yansıma ışınları için diğer ışıkları kapatacaktır.

  • storeWithIrradianceMap  – Bu seçenek açık olduğunda ve GI hesaplaması Işınım haritası olarak ayarlandığında, V-Ray bu ışığın etkilerini hesaplayacak ve bunları ışınım haritasına kaydedecektir. Sonuç olarak, ışınım haritası daha yavaş hesaplanır ancak işleme daha az zaman alır. Işınım haritasını kaydedip daha sonra tekrar kullanabilirsiniz.

  • affectReflections  – Işığın yansımalarda görünmesi durumunda True, aksi durumda False değerini döndürür.

  • noDecay – Etkinleştirildiğinde, ışığın yoğunluğu mesafeyle azalmaz. Normalde ışık yoğunluğu, ışığa olan mesafenin karesiyle ters orantılıdır (ışıktan daha uzaktaki yüzeyler, ışığa daha yakın yüzeylerden daha karanlıktır).

  • Çift Taraflı  – Işığın her iki taraftan da yayılıp yayılmadığı

  • lightPortal  – Işığın portal ışığı olup olmadığını belirtir (0 – normal ışık, 1 – portal ışığı, 2 – basit portal ışığı)

  • objectID – Gölgelendiriciler, render öğeleri vb. tarafından kullanılacak nesne kimliği.

  • useMIS – Bu parametre yalnızca hata ayıklama  içindir   . Kullanıcı sahnelerinde her zaman true olarak ayarlanmalıdır. False olarak ayarlandığında, işleme kalitesi optimal olmaz.

  • is_disc  – Işık disk şeklindedir.

  • u_size  – Işığın u boyutu (aslında yarım genişlik)

  • v_size  – Işığın v boyutu (aslında yarım yüksekliği)

  • Yönlü  – Aydınlatmanın yayılım alanını daraltın ve ışığı yönlü hale getirin.

  • ignoreLightNormals – Normalde, ışık kaynağının yüzeyi her yöne eşit olarak ışık yayar. Bu seçenek kapalı olduğunda, ışık kaynağı yüzeyinin normaline doğru daha fazla yayılır.

  • rect_tex  – Işık dokusu

  • use_rect_tex  – Dokunun kullanılıp kullanılmayacağını belirtir (True değeri).

  • tex_resolution  – Doku ön örnekleme çözünürlüğü

  • tex_adaptive – Doku parlaklığına göre örneklemenin uyarlanabilirliği (0.0 – uyarlanabilirlik yok; 1.0 – tam uyarlanabilirlik)

Örnek #


Burada , bir sahneye dokulu bir LightRectangle’ın nasıl ekleneceğini göstereceğiz .

# Compatibility with Python 2.7.
from __future__ import print_function
# The directory containing the vray shared object should be present in the PYTHONPATH environment variable.
# Try to import the vray module from VRAY_SDK/python, if it is not in PYTHONPATH
import sys, os
VRAY_SDK = os.environ.get('VRAY_SDK')
if VRAY_SDK:
    sys.path.append(os.path.join(VRAY_SDK, 'python'))
import vray
 
SCENE_PATH = os.path.join(os.environ.get('VRAY_SDK'), 'scenes')
# Change process working directory to SCENE_PATH in order to be able to load relative scene resources.
os.chdir(SCENE_PATH)
 
# The renderer is automatically closed after the `with` block.
with vray.VRayRenderer() as renderer:
    # Register a simple log callback. Always useful for debugging.
    def dumpMsg(renderer, message, level, instant):
        if level == vray.LOGLEVEL_ERROR:
            print("[ERROR]", message)
        elif level == vray.LOGLEVEL_WARNING:
            print("[Warning]", message)
        elif level == vray.LOGLEVEL_INFO:
            print("[info]", message)
        # Uncomment for testing, but you might want to ignore these in real code
        #else: print("[debug]", message)
    renderer.setOnLogMessage(dumpMsg)
    # Load scene from a file.
    renderer.load(os.path.join(SCENE_PATH, 'lighting.vrscene'))
    # Remove original light source from the scene.
    del renderer.plugins["VRayLightDomeShape1"]
    texture = renderer.classes.TexRamp()
    # Specify the type of the Ramp texture.
    # Possible values are: 0 (V), 1 (U), 2 (U+V)/2, 3 (radial)
    #   4 (circular), 5 (box), 6 (UV), 7 (four corner), 8 (tartan)
    texture.type = 1
    # Specify colors of the texture.
    texture.colors = [
        vray.AColor(1, 0, 0, 1),
        vray.AColor(0, 1, 0, 1),
        vray.AColor(0, 0, 1, 1)
    ]
    # Specify positions for the colors.
    texture.positions = [0, 0.5, 1]
    # LightRectangle is a light source plugin that can be used to create physically accurate area lights.
    light = renderer.classes.LightRectangle()
    # Specify the light position, rotation and scale.
    light.transform = vray.Transform(
        vray.Matrix(
            vray.Vector(1, 0, 0),
            vray.Vector(0, 1, 0),
            vray.Vector(0, 0, 1)),
        vray.Vector(140.7293296245155, 56.40836324071937, 177.7345080979719))
    # Specify shadow offset from the surface. Helps to prevent polygonal shadow artifacts on low-poly surfaces.
    light.shadowBias = 0.02
    # Specify that the bumped normal should be used to check if the light direction is below the surface.
    light.bumped_below_surface_check = True
    # Specify the light intensity based on the 'units' parameter.
    light.intensity = 30
    # Specify the U dimension of the light (actually half-width).
    light.u_size = 40
    # Specify the V dimension of the light (actually half-height).
    light.v_size = 40
    # Specify the light texture.
    light.rect_tex = texture
    # Specify the use of a light texture. If "use_rect_tex = False" the 'color' of the light will be used instead.
    light.use_rect_tex = True
    # Start rendering.
    renderer.startSync()
    # Wait for rendering to end.
    renderer.waitForRenderEnd()
#define VRAY_RUNTIME_LOAD_PRIMARY
#include "vraysdk.hpp"
#include "vrayplugins.hpp"
#include "utils.h"
 
using namespace VRay;
using namespace VRay::Plugins;
using namespace std;
 
const char *BASE_PATH = getenv("VRAY_SDK");
string SCENE_PATH = (BASE_PATH ? string(BASE_PATH) : string(".")) + PATH_DELIMITER + "scenes";
 
int main() {
// Change process working directory to SCENE_PATH in order to be able to load relative scene resources.
changeCurrentDir(SCENE_PATH.c_str());
// Load V-Ray SDK library.
VRayInit init(NULL, true);
// Create an instance of VRayRenderer with default options.
// The renderer is automatically closed at the end of the current scope.
VRayRenderer renderer;
// It's recommended to always have a console log
renderer.setOnLogMessage(logMessage);
// Load scene from a file.
renderer.load("lighting.vrscene");
// Remove original light source from the scene.
renderer.deletePlugin("VRayLightDomeShape1");
TexRamp texture = renderer.newPlugin<TexRamp>();
// Specify the type of the Ramp texture.
// Possible values are:
//   0 (V) - default, 1 (U), 2 (U + V) / 2, 3 (radial)
//   4 (circular), 5 (box), 6 (UV), 7 (four corner), 8 (tartan)
texture.set_type(1);
// Specify colors of the texture.
ValueList colors;
colors.push_back(Value(AColor(1.0, 0.0, 0.0, 1.0)));
colors.push_back(Value(AColor(0.0, 1.0, 0.0, 1.0)));
colors.push_back(Value(AColor(0.0, 0.0, 1.0, 1.0)));
texture.set_colors(colors);
// Specify positions for the colors.
ValueList positions;
positions.push_back(Value(0));
positions.push_back(Value(0.5f));
positions.push_back(Value(1));
texture.set_positions(positions);
// LightRectangle is a light source plugin that can be used to create physically accurate area lights.
LightRectangle light = renderer.newPlugin<LightRectangle>();
// Specify the light position, rotation and scale.
light.set_transform(Transform(
Matrix(
Vector(1.0, 0.0, 0.0),
Vector(0.0, 1.0, 0.0),
Vector(0.0, 0.0, 1.0)),
Vector(140.7293296245155, 56.40836324071937, 177.7345080979719)));
// Specify shadow offset from the surface. Helps to prevent polygonal shadow artifacts on low-poly surfaces.
light.set_shadowBias(0.02f);
// Specify that the bumped normal should be used to check if the light direction is below the surface.
light.set_bumped_below_surface_check(true);
// Specify the light intensity based on the 'units' parameter.
light.set_intensity(30);
// Specify the U dimension of the light (actually half-width).
light.set_u_size(40);
// Specify the V dimension of the light (actually half-height).
light.set_v_size(40);
// Specify the light texture.
light.set_rect_tex(texture);
// Specify the use of a light texture.
// If "use_rect_tex = false" the 'color' of the light will be used instead.
light.set_use_rect_tex(true);
// Start rendering.
renderer.startSync();
// Wait for rendering to end.
renderer.waitForRenderEnd();
return 0;
}
using System;
using System.Collections.Generic;
using System.IO;
using VRay;
using VRay.Plugins;
 
namespace _texture
{
    class Program
    {
        static void Main(string[] args)
        {
            string SCENE_PATH = Path.Combine(Environment.GetEnvironmentVariable("VRAY_SDK"), "scenes");
            // Change process working directory to SCENE_PATH in order to be able to load relative scene resources.
            Directory.SetCurrentDirectory(SCENE_PATH);
 
            // Create an instance of VRayRenderer with default options. The renderer is automatically closed after the `using` block.
using (VRayRenderer renderer = new VRayRenderer())
            {
                // Add a listener for any type of log message.
                renderer.LogMessage += new EventHandler<MessageEventArgs>((source, e) =>
                {
                    // You can remove the if for testing, but you might want to ignore Debug in real code
                    if (e.LogLevel != LogLevelType.Debug)
                    {
                        Console.WriteLine(String.Format("[{0}] {1}", e.LogLevel.ToString(), e.Message));
                    }
                });
                // Load scene from a file.
                renderer.Load("lighting.vrscene");
                // Remove original light source from the scene.
                renderer.DeletePlugin("VRayLightDomeShape1");
                TexRamp texture = renderer.NewPlugin<TexRamp>();
                // Specify the type of the Ramp texture.
                // Possible values are: 0 (V), 1 (U), 2 (U+V)/2, 3 (radial)
                //   4 (circular), 5 (box), 6 (UV), 7 (four corner), 8 (tartan)
                texture.TexRampType = 1;
                // Specify colors of the texture.
                texture.Colors = new List<object>() {
                    new AColor(1, 0, 0, 1),
                    new AColor(0, 1, 0, 1),
                    new AColor(0, 0, 1, 1)
                };
                // Specify positions for the colors.
                texture.Positions = new List<object>() { 0, 0.5, 1 };
                // LightRectangle is a light source plugin that can be used to create physically accurate area lights.
                LightRectangle light = renderer.NewPlugin<LightRectangle>();
                // Specify the light position, rotation and scale.
                light.Transform = new Transform(
                    new Matrix(
                        new Vector(1, 0, 0),
                        new Vector(0, 1, 0),
                        new Vector(0, 0, 1)),
                    new Vector(140.7293296245155, 56.40836324071937, 177.7345080979719));
                // Specify shadow offset from the surface. Helps to prevent polygonal shadow artifacts on low-poly surfaces.
                light.ShadowBias = 0.02F;
                // Specify that the bumped normal should be used to check if the light direction is below the surface.
                light.BumpedBelowSurfaceCheck = true;
                // Specify the number of parameter samples for motion blur.
                light.Nsamples = 1;
                // Specify the light intensity based on the 'units' parameter.
                light.Intensity = 30;
                // Specify the U dimension of the light (actually half-width).
                light.USize = 40;
                // Specify the V dimension of the light (actually half-height).
                light.VSize = 40;
                // Specify the light texture.
                light.RectTex = texture;
                // Specify the use of a light texture.
                // If "use_rect_tex = false" the 'color' of the light will be used instead.
                light.UseRectTex = true;
                // Start rendering.
                renderer.StartSync();
                // Wait for rendering to end.
                renderer.WaitForRenderEnd();
            }
        }
    }
}
var path = require('path');
var vray = require(path.join(process.env.VRAY_SDK, 'node', 'vray'));
 
var SCENE_PATH = path.join(process.env.VRAY_SDK, 'scenes');
// Change process working directory to SCENE_PATH in order to be able to load relative scene resources.
process.chdir(SCENE_PATH);
 
// Create an instance of VRayRenderer with default options.
var renderer = vray.VRayRenderer();
// It's recommended to always have a console log callback
renderer.on("logMessage", function(message, level, instant) {
if (level == vray.LOGLEVEL_ERROR)
console.log("[ERROR] ", message);
else if (level == vray.LOGLEVEL_WARNING)
console.log("[Warning] ", message);
else if (level == vray.LOGLEVEL_INFO)
console.log("[info] ", message);
// Uncomment for testing, but you might want to ignore these in real code
//else console.log("[debug] ", message);
});
 
// Load scene from a file asynchronously.
renderer.load("lighting.vrscene", function(err) {
    if (err) throw err;
    // Remove original light source from the scene.
    delete renderer.plugins["VRayLightDomeShape1"];
    var texture = renderer.classes.TexRamp();
    // Specify the type of the Ramp texture.
    // Possible values are: 0 (V), 1 (U), 2 (U+V)/2, 3 (radial)
    //   4 (circular), 5 (box), 6 (UV), 7 (four corner), 8 (tartan)
    texture.type = 1;
    // Specify colors of the texture.
    texture.colors = vray.List(
        vray.AColor(1, 0, 0, 1),
        vray.AColor(0, 1, 0, 1),
        vray.AColor(0, 0, 1, 1)
    );
    // Specify positions for the colors.
    texture.positions = vray.List(0, 0.5, 1);
    // LightRectangle is a light source plugin that can be used to create physically accurate area lights.
    var light = renderer.classes.LightRectangle();
    // Specify the light position, rotation and scale.
    light.transform = vray.Transform(
        vray.Matrix(
            vray.Vector(1, 0, 0),
            vray.Vector(0, 1, 0),
            vray.Vector(0, 0, 1)),
        vray.Vector(140.7293296245155, 56.40836324071937, 177.7345080979719));
    // Specify shadow offset from the surface. Helps to prevent polygonal shadow artifacts on low-poly surfaces.
    light.shadowBias = 0.02;
    // Specify that the bumped normal should be used to check if the light direction is below the surface.
    light.bumped_below_surface_check = true;
    // Specify the light intensity based on the 'units' parameter.
    light.intensity = 30;
    // Specify the U dimension of the light (actually half-width).
    light.u_size = 40;
    // Specify the V dimension of the light (actually half-height).
    light.v_size = 40;
    // Specify the light texture.
    light.rect_tex = texture;
    // Specify the use of a light texture. If "use_rect_tex = false" the 'color' of the light will be used instead.
    light.use_rect_tex = true;
    // Start rendering.
    renderer.start(function(err) {
        if (err) throw err;
        // Wait for rendering to end.
        renderer.waitForRenderEnd(function() {
            renderer.close();
        });
    });
});

Sonuçlar #


Bu render için kullanılan sahne “Lighting_Rect.vrscene” olarak adlandırılır ve sahne paketinde bulunabilir   (içinde bulunan farklı parametrelere ilişkin yorumlar mevcuttur).

Bu render için kullanılan sahne “Lighting_Rect_tex.vrscene” olarak adlandırılır ve sahne paketinde bulunabilir   (içinde bulunan farklı parametrelere ilişkin yorumlar mevcuttur).

Bu render için kullanılan sahne “Lighting_Rect_tex_alpha.vrscene” olarak adlandırılır ve sahne paketinde bulunabilir   (içinde bulunan farklı parametrelere ilişkin yorumlar mevcuttur). 

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir