View Categories

Bağlantı

3 dakika okuma

Burada, App SDK ve V-Ray dinamik kütüphanelerinin doğru şekilde nasıl bağlanıp yükleneceğini ele alacağız.

 Windows için .dll dosyaları olarak adlandırdığımız şeyleri  , Linux ve macOS için lib.so veya lib*.dylib olarak düşünün .

Çeşitli aşamalarda yüklenmesi gereken dört DLL dosyası veya grubu bulunmaktadır:

  • Ciltleme kütüphanesi

  • Ana SDK kütüphanesi – VRaySDKLibrary.dll

  • Görüntü işleme çekirdeği – vray.dll (aynı dizinde birkaç üçüncü taraf bağımlılık DLL’si ile birlikte)

  • plugins/  alt dizinindeki V-Ray render eklenti kütüphaneleri 

Çoğu durumda bu işlem yalnızca tek bir kod satırı ile yapılır, ancak API ek ayarlar aracılığıyla özel dosya düzenlerine olanak tanır.

C++ #


Bağlantı DLL’si bulunmamaktadır çünkü bağlantı yalnızca başlık dosyalarından oluşmaktadır. Aşağıdaki alt bölümlerde açıklanan ana SDK kütüphanesini bağlamanın iki yolu vardır:

Bu durumda, Windows’ta derleme yaparken VRaySDKLibrary.lib içe aktarma kütüphanesini, Linux/macOS’ta ise -lVRaySDKLibrary bağlayıcı anahtarını kullanmanız gerekir. Uygulamayı çalıştırmadan önce, dinamik kütüphanelerin yüklenmesi için VRaySDKLibrary dinamik kütüphanesinin sistem yollarında bulunması gerekir: Windows’ta PATH, Linux’ta LD_LIBRARY_PATH, macOS’ta DYLD_LIBRARY_PATH. Ek önişlemci makroları tanımlamanıza gerek yoktur.

Sistem arama yollarını değiştirmekten kaçınmak için kütüphaneyi çalışma zamanında dinamik olarak yükleyebilirsiniz.   Kaynak dosyalarınızdan  yalnızca birinin vraysdk.hpp dosyasını  dahil etmeden önce  VRAY_RUNTIME_LOAD_PRIMARY makrosunu tanımlaması gerekir . Geri kalan kaynakların ise  başlık dosyasını dahil etmeden önce VRAY_RUNTIME_LOAD_SECONDARY makrosunu tanımlaması gerekir  . VRAY_RUNTIME_LOAD_PRIMARY kaynak dosyası, uygulamanın ömrü boyunca geçerli olacak bir VRayInit örneği oluşturmalıdır. Bu örnek, dosya adı da dahil olmak üzere VRaySDKLibrary.dll’ye giden isteğe bağlı bir yol alır.

VRayInit’in çalışma zamanı yükleme sürümü, hataları teşhis etmek için getSDKLibraryErrorString() yöntemini de sağlar.

.Açık #


.Net bağlaması, uygulamanızın referans vermesi gereken iki derlemede uygulanır:  VRaySDK.Net.dll  ve  VRaySDK.Net.Plugins.dll  . Somut Eklenti sınıflarına ihtiyacınız yoksa ikinci derleme atlanabilir, ancak genellikle gereklidir.

Python #


 Python bağlayıcısı, Windows’ta  vray.pyd veya Linux ve macOS’ta vray.so dosyasında uygulanmıştır   . Bu dosya ya site-packages dizininize kurulmalı ya da konumu PYTHONPATH ortam değişkenine eklenmelidir.

Node.js #


Node.js bağlantısı  VRay.node ikili dosyasında uygulanmıştır, ancak  birkaç yardımcı fonksiyon ekleyen vray.js betiği  aracılığıyla yüklenmelidir  .

VRaySDKLibrary çalışma zamanı yükleme: .Net, Python, Node.js #

VRaySDKLibrary.dll sistem PATH’inde yoksa, statik bir yöntem kullanarak arama yoluna ekleyebilirsiniz. Bunu, diğer Uygulama SDK yöntemlerini çağırmadan önce yapmanız gerekir.

.Açık

Globals.SetSDKLibraryPath(search_path) kullanın .

Python ve  Node.js

Vray modülünü içe aktardığınızda veya çağırdığınızda, VRaySDKLibrary.dll dosyasını yüklemeye çalışacaktır. Bu işlem başarısız olabilir. Arama yolunu belirtmek ve VRaySDKLibrary.dll dosyasının yeniden yüklenmesini zorlamak için `vray.setSDKLibraryPath(search_path)` işlevini çağırabilirsiniz  . İşlev başarılı olduğunda ‘true’ değerini döndürür. `vray.getSDKLibraryErrorString()`  işlevini çağırarak daha ayrıntılı bilgi alabilirsiniz . 

V-Ray motoru #


Orijinal App SDK bin dizinindeki vray.dll ve diğer DLL’leri içeren dizinin   sistem kütüphane arama yolunda (Windows’ta PATH, Linux’ta LD_LIBRARY_PATH, DYLD_LIBRARY_PATH) olması gerekir.  VRAY_PATH  ortam değişkeni alternatif bir konuma ayarlanabilir.

ÖNEMLİ :  VRAY_PATH  değişkeni, kullanıcının sisteminde başka bir V-Ray kurulumundan (örneğin V-Ray Standalone) ayarlanmış olabilir. Boş olacağına güvenmeyin! Uyumsuz DLL’lerin yüklenmesi nedeniyle çökmelere neden olabilir. Ayrıca PATH/LD_LIBRARY_PATH/DYLD_LIBRARY_PATH’in sistemdeki diğer V-Ray yollarını içermediğinden veya kendi yolunuzun en başta olduğundan emin olmalısınız.

Render eklentilerinin yüklenmesi şu şekilde gerçekleşir: 1. İsteğe bağlı  RendererOptions::pluginLibraryPath parametresinden noktalı virgülle ayrılmış yollar içeren bir dize oluşturulur – bu genellikle boştur, ancak varsayılan değerlerin geçersiz kılınmasına olanak tanır. 2. VRAY_PATH ortam  değişkeninin değeri   “/plugins” ile eklenir ve bu listeye eklenir. Değişken ayarlanmamışsa, bunun yerine VRaySDKLibrary’nin yolu eklenir (yine “/plugins” ile). 3. Yol listesi, eklenti sınıflarını  vray_*.dll  veya  libvray_*.so’dan yüklemek için V-Ray eklenti yöneticisine iletilir.

Özel V-Ray eklentileri #


Üçüncü taraf V-Ray render eklentileriniz (dokular, geometri veya herhangi bir şey) varsa, bunları ya aynı  eklenti  dizinine kopyalamalı ya da yukarıda açıklandığı gibi dizinlerini  RendererOptions::pluginLibraryPath parametresine eklemelisiniz. Dosya adları, şablon vray_*.dll  veya  libvray_*.so  ile eşleşmelidir  .

GPU motoru #


RendererOptions  ::pluginLibraryPath  parametresi, rt_cuda.dll/so ve rt_opencl.dll/so kütüphaneleri vray.dll ve VRaySDKLibrary.dll’nin yanında varsayılan konumlarında bulunmuyorsa, bu kütüphaneleri içeren bir yola isteğe bağlı olarak ayarlanabilir.

C/C++ Çalışma Zamanı #


SDK’yı dağıttığınız yerde ilgili çalışma ortamının veya uyumlu bir çalışma ortamının mevcut olduğundan emin olmalısınız. Şu anda Uygulama SDK’sı şu şekilde oluşturulmaktadır:

  • Windows’ta Visual Studio 2017 çalışma zamanı (vcruntime140.dll, msvcp140.dll)

  • Linux üzerinde glibc 2.17

  • macOS SDK 10.9 (macOS x64)

  • macOS SDK 11.1 (macOS evrensel, macOS 10.14 ve üzeri sürümleri destekler)

Normal kullanım örneği #


# The directory containing the vray shared object - vray.pyd/so - should be present in the PYTHONPATH environment variable
import vray
renderer = vray.VRayRenderer()

// link against VRaySDKLibrary.lib or with -lVRaySDKLibrary and have VRaySDKLibrary accessible through the OS library path
#include "vraysdk.hpp"
 
void main() {
    VRay::VRayInit init(NULL, true);
    VRay::VRayRenderer renderer;
}

// VRaySDK.Net.dll has a reference in the current .csproj
using VRay;
class Program {
static void Main(string[] args) {
VRayRenderer renderer = new VRayRenderer();
}
}

// vray.js is in node_modules with the rest of the files from the App SDK package
var vray = require('vray');
var renderer = vray.VRayRenderer();

Gelişmiş kullanım örneği #

# The directory containing the vray shared object - vray.pyd/so - should be present in the PYTHONPATH environment variable
import vray
# These paths are optional. Only pass them if it is necessary for your project
# You have to call this before any other API methods
vray.setSDKLibraryPath("/some/path") # vray.dll should be here or on the OS path
renderer = vray.VRayRenderer(pluginLibraryPath="/some/other/path")

// main.cpp
#define VRAY_RUNTIME_LOAD_PRIMARY
#include "vraysdk.hpp"

void main() {
// These paths are optional. Only pass them if it is necessary for your project
// You have to call this before any other API methods
VRay::VRayInit init("C:/some/path/VRaySDKLibrary.dll", true); // vray.dll should be here or on the OS path
VRay::RendererOptions options;
options.pluginLibraryPath = "C:/some/other/path";
VRay::VRayRenderer renderer(options);
}

------------------------
// other.cpp
#define VRAY_RUNTIME_LOAD_SECONDARY
#include "vraysdk.hpp"

// VRaySDK.Net.dll has a reference in the current .csproj
using VRay;
 
class Program {
    static void Main(string[] args) {
        // These paths are optional. Only pass them if it is necessary for your project
        // You have to call this before any other API methods
        Globals.SetSDKLibraryPath("C:/some/path"); // vray.dll should be here or on the OS path
        RendererOptions options = new RendererOptions();
        options.PluginLibraryPath = "C:/some/other/path";
        VRayRenderer renderer = new VRayRenderer(options);
    }
}

// vray.js is in node_modules with the rest of the files from the App SDK package
var vray = require('vray');
// These paths are optional. Only pass them if it is necessary for your project
// You have to call this before any other API methods
vray.setSDKLibraryPath("/some/path"); // vray.dll should be here or on the OS path
var renderer = vray.VRayRenderer({ "pluginLibraryPath": "/some/other/path" });

Gereksiz DLL’leri kaldırma #


Uygulamanızın kurulum boyutunu küçültmek için ikili dosyalar klasörünü temizlemek isteyebilirsiniz. Eğer bu özelliklere asla ihtiyaç duymayacağınızdan eminseniz, oradaki bazı dosyaları silebilirsiniz:

  • plugins/vray_*.dll dosyalarının bazıları   büyük ve potansiyel olarak kullanılmamaktadır: MtlMDL (üst dizindeki libvraymdl ve libvrayfreeimage ile birlikte), mtlvrmat, ptexbaker, phxshader (field3dio_vray ve openvdbio_vray ile birlikte), BRDFScanned, GeomBifrost, SphericalHarmonics, TexXSI, vrsceneloader (bu, sahneleri yerleştirmek için bir eklentidir, normal sahne yükleme işleviyle karıştırmayın).

  •  GPU renderlamayı desteklemeyecekseniz  rt_cuda.dll  ve/veya  rt_opencl.dll dosyalarını silebilirsiniz  . vray_gpu_device_select  uygulaması da GPU seçimi içindir.

  • bin  /osl*  ve  bin/libosl*  dosyaları yalnızca OSL materyalleri için gereklidir.

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

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