- MAXtoA Eklentisi ve Gölgelendiricileri
- Kullanıcı Arayüzü Özelleştirmesine Genel Bakış
- Kullanıcı Arayüzünü Özelleştirme
- Meta veri kullanıcı arayüzü özelleştirmesi
- Özellik Adı
- Gölgelendirici Parametre Sıralaması
- Toplama Üretimi
- Qt .UI Dosyaları Aracılığıyla Özel Kullanıcı Arayüzü Oluşturma
- Haritalama Kontrolleri
- Parametre Adlandırma Kuralları
- MAXtoA Desteklenen Meta Veri Parametreleri
MAXtoA Eklentisi ve Gölgelendiricileri #
MAXtoA eklentisi, Arnold shader’larının 3ds Max’e entegrasyonundan sorumludur. Bu entegrasyon, hem yerleşik shader’ların hem de üçüncü taraf shader’ların 3ds Max’e entegre edilmesini ve sahnelerin oluşturulması sırasında kullanılmasını sağlar.
Arnold’ın yerleşik eklentileri ve gölgelendiricileri MAXtoA tarafından otomatik olarak yüklenir. Üçüncü taraf gölgelendiricilerin yüklenmesi için MAXtoA dizinine veya eklenti yolundaki bir dizine (Render iletişim kutusunda ayarlandığı gibi) yerleştirilmesi gerekir. Ancak, bu entegrasyonu mümkün kılan şey MAXtoA eklentisinin varlığıdır.
MAXtoA, Arnold shader düğümlerini eşleştirmekten, bunlara uygun 3ds Max materyallerini ve dokularını oluşturmaktan, bütünlüklerini korumaktan ve 3ds Max kullanıcılarının Arnold shader’larıyla etkileşim kurabilmesi için bir kullanıcı arayüzü oluşturmaktan sorumludur.
Bu kullanıcı arayüzü entegrasyonu otomatiktir ve shader geliştiricisinin herhangi bir şey yapmasına gerek yoktur. Arnold, ActiveShade veya Production render motoru olarak ayarlandığında, Arnold shader’ları otomatik olarak 3ds Max’e yüklenir ve Malzeme düzenleyicisinde görünür hale gelir.

Malzeme Düzenleyicisinde Arnold gölgelendiricileri
O andan itibaren, gölgelendiriciler, malzeme düzenleyicisinin ağaç görünümünde seçilerek ve düğüm tuval üzerine sürüklenip bırakılarak veya isme çift tıklanarak, diğer herhangi bir 3ds Max malzemesi veya haritası gibi oluşturulabilir.
- CLOSURE değeri döndüren herhangi bir shader, 3ds Max’te bir Materyal olarak görünecektir .
- Başka bir tür döndüren herhangi bir shader, 3ds Max’te Harita (Map) olarak görünecektir .

Gölgelendiriciler, Harita/Malzeme Tarayıcısının Arnold kategorisi altında yer almaktadır. Bunlar meta verilere göre kategorize edilir (bu konuda daha fazla bilgi aşağıda).
Bir shader’ın kategorizasyonu yoksa, yüklendiği DLL’nin adı altında, OSL shader ise “OSL” kategorisi altında veya Arnold çekirdeğine entegre edilmişse “Built-in” kategorisi altında sınıflandırılır.
Gölgelendirici, gölgelendirici geliştiricisi tarafından tanımlanan özelliklerini gösterecektir. Gölgelendiriciye (veya 3ds Max terimleriyle Malzeme veya Haritaya) çift tıklamak, gölgelendiricinin kullanıcı arayüzünün oluşturulmasını ve malzeme düzenleyicisinin sağ bölmesinde görüntülenmesini tetikleyecektir.
Kullanıcı Arayüzü Özelleştirmesine Genel Bakış #
Shader geliştiricileri, isterlerse shader’larının kullanıcı arayüzünü özelleştirebilirler. Bunun iki yolu vardır:
- Meta verileri kullanma
- Qt “.ui” dosyalarını kullanarak.
Meta veriler, kontrollerin yeniden adlandırılmasına, gruplandırılmasına ve yeniden sıralanmasına olanak tanır, ancak düzeni başka şekilde etkilemez; oysa .ui dosyalarının kullanılması, gölgelendirici için oldukça karmaşık bir özel kullanıcı arayüzü tasarlamaya olanak tanır.
Otomatik Kullanıcı Arayüzü #
MAXtoA, shader geliştiricisine herhangi bir shader için kullanıcı arayüzü oluşturan otomatik bir mekanizma sağlar. Geliştiricinin yapması gereken tek şey, shader’ını 3ds Max’te kullanılabilir hale getirmektir.
Dokümantasyon amacıyla, destek dosyalarıyla birlikte basit bir shader sağlanmıştır. Shader özelliklerini listelemek için Kick yardımcı programı kullanılabilir. ‘Kick -info simple’ komutu şu çıktıyı üretecektir:
Type Name Default
------------ -------------------------------- --------------------------------
INT integer -3
UINT unsigned_int 4
FLOAT float 1.92
BOOL boolean false
RGB color 0.7, 0.7, 0.7
RGBA acolor 1, 0, 0, 1
POINT point 1, 2, 3
POINT2 point2 5, 6
ENUM elements space
Özel bir kullanıcı arayüzü tanımlanmadığında oluşturulan kullanıcı arayüzü yaklaşık olarak şöyle görünecektir. Gördüğünüz gibi, parametre adları etiket olarak kullanılıyor ve bağlantı verilebilen her parametre, giriş seçmek için kullanılan bir düğme olarak yer alıyor.
İkinci bir özetleme oluşturulur; bu özetleme yalnızca parametre eşleştirmesini ve bağlantıyı etkinleştirme/devre dışı bırakma kontrolünü içerir.

Oluşturulan kullanıcı arayüzü temizdir ve neredeyse olduğu gibi kullanılabilir. Parametre adlarının ‘güzelleştirildiğini’ unutmayın; alt çizgi içeren parametre adları boşluklarla ayrılmıştır ve her kelimenin ilk harfi büyük harfle yazılmıştır, bu nedenle;
unsigned_int -> İşaretsiz Tamsayı
Kullanıcı Arayüzünü Özelleştirme #
Özel bir kullanıcı arayüzü oluşturabilmek için Arnold ve 3ds Max arasındaki parametre eşleştirmesini anlamamız ve hangi kontrol tipini kullanacağımızı bilmemiz gerekiyor.
Her Arnold shader’ı için, parametrenin bağlanabilir olup olmamasına bağlı olarak bazı 3ds Max (1 veya 3) parametresi oluşturuyoruz.
Aşağıda görebileceğiniz gibi, `unsigned_int` parametresi , parametre paketinde iki kontrole sahiptir: sayı ve harita yerleştirmek için bir alan. Üçüncüsü (haritayı etkinleştirmek için) Haritalar paketinde bulunabilir.
Dolayısıyla, “basit” gölgelendirici parametremiz olan `unsigned_int` için MAXtoA, `unsigned_int` , `unsigned_int.shader` ve `unsigned_int.connected` parametrelerini oluşturacaktır . Parametre adlarının büyük/küçük harf duyarlı olduğunu unutmayın.
MAXtoA, kullanıcı arayüzünü oluştururken iki özet tablo (Parametreler ve Haritalar) oluşturacak ve çeşitli kontrolleri bir ızgara düzeninde yerleştirecektir.
Bu durumda parametre türünden kontrol türüne dönüşüm otomatik olarak yapılır.

Meta veri kullanıcı arayüzü özelleştirmesi #
Shader arayüzünün ilk özelleştirme seviyesi, bir meta veri dosyası kullanılarak gerçekleştirilebilir. Bu dosyanın, shader DLL’si ile aynı temel ada sahip olması gerekir. Dolayısıyla örneğimizde, sampleShader.DLL ve sampleShader.mtd dosyalarımız bulunmaktadır.
Özellik Adı #
Yapabileceğimiz ilk ve en bariz özelleştirme, parametreler için kullanıcı dostu bir isim sağlamaktır. Bu, shader’ın her bir özniteliği için birkaç satır ekleyerek gerçekleştirilebilir. İşte kullanıcı dostu isimlere sahip shader arayüzümüz.

Kullanıcılar, özellik parametreleri aracılığıyla sayısal aralıkları kontrol edebilir, ipuçları ekleyebilir vb.
[node simple]
...
[attr unsigned_int]
max.label STRING "Unsigned Integer"
desc STRING "This is the UNSIGNED INTEGER tooltip"
min INT 0
max INT 6
Gölgelendirici Parametre Sıralaması #
Shader arayüzünü özelleştirmenin bir başka yolu da parametre sıralaması sağlamaktır. Bu işlem [düğüm] seviyesinde yapılmalıdır.

[node simple]
max.order STRING "boolean integer unsigned_int color acolor string"
Listede bulunmayan parametreler sona eklenir. Mevcut olmayan parametre adları dikkate alınmaz.
Toplama Üretimi #
Çok sayıda parametreye sahip gölgelendiriciler için kullanıcı, klasör parametresi aracılığıyla gruplandırmayı belirtebilir.

[node simple]
max.parm.folder.folder1 STRING "Rollup1;2;Rollup2;3"
Klasör bilgilerini belirtirken yalnızca belirtilen parametre sayısının gösterileceğini unutmayın. Güvenli olmak için kalan parametreleri de kapsayacak üçüncü bir toplama işlemi eklemek daha iyidir.
Qt .UI Dosyaları Aracılığıyla Özel Kullanıcı Arayüzü Oluşturma #
Özel kullanıcı arayüzü, gölgeleyici tasarımcısının gölgeleyici parametrelerini manipüle etmek için kullanılacak kullanıcı arayüzünü tamamen tasarlamasına olanak tanıyan bir mekanizmadır.
Kullanıcı arayüzü dosyaları, ücretsiz olarak indirilebilen Qt Designer kullanılarak düzenlenebilir ve dosya formatı burada açıklanmıştır ( http://doc.qt.io/qt-4.8/designer-ui-file-format.html ).
MAXtoA, Qt widget adını kullanarak, shader DLL’sini incelerken bulunan MAXtoA parametrelerine kullanıcı arayüzü kontrollerini eşler. Kullanıcı arayüzü dosyalarının konumu, yüklenen eklentilerin konumuna göre belirlenir.
Dolayısıyla, herhangi bir shader için kullanıcı, UI dosyalarını kaydedeceği bir alt dizin oluşturabilir. Meta veri özellikleri sayesinde MAXtoA, UI dosyalarını bulup yükleyebilecek ve bunları özel bir kullanıcı arayüzü oluşturmak için kullanabilecektir. UI dosyalarının konumu şu şekildedir:
<shader-location>/MAXtoA_ui/<Shader-Name>/<ui-files>
Örneğin, standard_surface shader UI dosyaları şu konumda bulunur:
<MAXtoA dir>/MAXtoA_ui/standard_surface
Mevcut dağıtımımızda, MAXtoA_ui/standard_surface dizininde yedi adet UI dosyası bulabilirsiniz: basic.ui, coating.ui, emission.ui, special.ui, specular.ui, sss.ui ve transparent.ui. Meta veri dosyası, standard_surface shader’ı için UI’da ne yapmak istediğimizi açıklamamıza olanak tanır ve bu da şu şekildedir:

Haritalama Kontrolleri #
Bunu başarmak için geliştiricinin hangi kontrollerin hangi parametre türünü düzenlemek için kullanılabileceğini bilmesi gerekir. max.parm.folder.folder1 ve özel kullanıcı arayüzünün uyumsuz olduğunu unutmayın. Parametre türleri, .ui dosyasında kontrol türleriyle doğru şekilde ilişkilendirilmelidir. İşte Arnold’un parametre türlerinin ve kullanılacak en uygun kontrolün listesi.
| Arnold | Kontrol |
|---|---|
| INT, BİRİM, BAYT | MaxSDK::QMaxSpinBox |
| BOOLEAN | QCheckbox |
| ENUM | QComboBox |
| BATMADAN YÜZMEK | MaxSDK::QMaxDoubleSpinBox,
birimler gerekiyorsa MaxSDK::QMaxWorldSpinBox’ı kullanın. |
| Bitmap | QDüğme |
| Gölgelendirici | QDüğme |
| Sicim | QEditField |
| NOKTA, VEKTÖR | MaxSDK::QMaxPoint2Spinner |
| NOKTA2 | MaxSDK::QMaxPoint2Spinner |
| NOKTA3 | MaxSDK::QMaxPoint3Spinner |
| MATRİS | MaxSDK::QMaxMatrix3Spinner |
| RGB, RGBA | MaxSDK::QMaxColorSwatch |
3ds Max’te kontrol oluşturmanın birkaç yolu vardır, ancak en kolayı (UI dosyasını elle düzenlemek dışında) Qt Designer kullanmak ve şu adımları izlemektir:
- Uygun widget türünü sürükleyip bırakarak yeni bir widget türü formuna ekleyin.
- Qt’ye özgü olmayan kontroller için, bir kontrol “widget’ını” sürükleyip bırakın.
- Yeni oluşturulan widget’ı kullanarak, bağlam menüsünden “Şuraya Tanıt…” seçeneğini seçin.
- Uygun temel sınıfı seçin (yukarıdaki listeye bakın).
- Lütfen yukarıdaki listeden uygun maksimum sınıf adını girin.
- Sistemin bir başlık dosyası oluşturmasına izin verin ve Ekle’ye tıklayın.
- Basın tanıtımı.
Genel olarak, özel bir kullanıcı arayüzü oluşturmak basittir, ancak uyulması gereken birkaç kural vardır:
- Rulo şeklindeki içeriğin genişliğini 300 pikselden fazla yapmayın.
- Widget’lar için sabit bir boyut belirlemeyin; bunun yerine, tüm widget’lar ana widget üzerine yerleştirildikten sonra, alt widget’ların boyutunu yönetecek bir ızgara düzeni oluşturun. Bu, özellikle HDPI ekranlar için en iyi performansı sağlar.
Parametre Adlandırma Kuralları #
Daha önce de belirtildiği gibi, her Arnold parametresi için MAXtoA, bağlanabilir olup olmamasına bağlı olarak 1 veya 3 parametre oluşturur. Ve “.connected” ve “.shader” parametreleri otomatik olarak Haritalar bölümüne eklenir.
Ancak, bu parametrelerin kullanıcı arayüzünün ana sayfalarında da (örneğin küçük harita düğmeleri vb. için) görünmesini istiyorsanız, bu parametreleri özel kullanıcı arayüzüne eklemenin yolu, uygun kontrolü kullanmak ve widget’ı parametre adıyla adlandırmaktır.
Dolayısıyla, `unsigned_int.connected` için kullanıcının bir onay kutusu denetimi oluşturması ve buna uygun bir isim vermesi gerekir. Ne yazık ki, Qt Designer, nokta ‘.’ karakterlerinin widget adlarında kullanılmasına izin vermez. Bunu çözmek için, MAXtoA, `unsigned_int__dot__connected` parametre adını anlayacak ve programatik olarak ” nokta “yı otomatik olarak “.” ile değiştirecektir.
Özel bir kullanıcı arayüzü etiketi için ipucu işlevinin çalışması için, kullanıcının etiket widget’ını parametre adının ardından _label ekleyerek adlandırması gerekir. Örneğin, “count” parametresi için etiket widget’ı “count_label” olarak adlandırılmalıdır.
MAXtoA Desteklenen Meta Veri Parametreleri #
Meta veri dosyaları Arnold’un meta veri spesifikasyonuna uygundur. Meta Veri Dosyaları bölümüne bakın. Not: Belgelerde şu ifade yer almaktadır: “Genel bir kural olarak, Maya’ya özgü meta veriler için “maya.” ile başlayan, XSI’ye özgü meta veriler için ise “xsi.” ile başlayan meta veri adları kullanıyoruz. Standart meta veri öğeleri için ayrı bir belgede yayınlanacak başka kurallar da mevcuttur.”
MAXtoA, bir dizi meta veri belirteci destekler. Düğüm bölümleri için [düğüm gölgelendirici adı]
| maksimum gizli | bool | Gölgelendirici Max’te görünmeyecektir. |
| maksimum yardım_url | sicim | Yardım bağlantısı |
| maksimum kategori | sicim | Kategori |
| maksimum etiket | sicim | Etiket |
| maksimum.parm.klasör.klasör[0..9] | sicim | Otomatik kullanıcı arayüzü mekanizması için
, toplama adlarını ve parametre sayısını tanımlar. Örnek: max.parm.folder.folder1 STRING “Diffuse;6;Specular;9” |
| maksimum.sıra[0..9] | sicim | Otomatik kullanıcı arayüzü mekanizması için
parametre sırasını tanımlar. max.order[1…9] kullanarak parametre listesini genişletebilirsiniz. |
Düğüm örneği:
# comment
[node standard]
max.category STRING "Shading"
max.parm.folder.folder1 STRING "Diffuse;8;Specular;10"
max.order STRING "folder1 Kd_color Kd direct_diffuse "
max.order2 STRING "Ks_color Ks direct_specular indirect_specular"
Öznitelik bölümleri için [Attr öznitelik-adı]
| maksimum tip | sicim | |
| maksimum etiket | sicim | Kullanıcı parametre adı |
| maksimum devre dışı bırakıldığında | sicim | Denetimi devre dışı bırak şu durumlarda… (açıklama gerekli) |
| dakika | uluslararası | Minimum aralık |
| maksimum | uluslararası | Maksimum aralık |
| açıklama | sicim | Açıklama (ipucu) |
| bağlantı verilebilir | bool | Parametrenin bir gölgelendirici çıktısına bağlanıp bağlanamayacağını tanımlayın. |
Özel bir kullanıcı arayüzü söz konusu olduğunda başka özellikler de kullanılabilir.
Not özelliği
| maksimum yuvarlanma | sicim | Özel kullanıcı arayüzü dosyalarının adlarını tanımlar.
Örnek: max.rollup STRING “diffuse;specular” Bu durumda, MAXtoA_ui/ dizininde diffuse.ui ve specular.ui dosyaları olacaktır.Dizin. Bu dizinin göreceli yolu, gölgelendiricinin DLL dosyasının yoluyla aynıdır. |
Örnek:
max.rollup STRING "diffuse;specular;reflection;refraction;sss;emission;aov"
[Attr rollup-<ui-name>]
| maksimum etiket | sicim | Rollup kullanıcı başlığı |
Örnek:
[attr rollup-diffuse]
max.label STRING "Diffuse"
