Skocz do zawartości

Upgrade skryptów od Den-Stash [3ds Max]


Rekomendowane odpowiedzi

xray-tools-logo.png

Autor skryptów - Den-Stash
Poprawki z 20.02.2020 - justrainy (Khyzyr) 
Wersja Release 1 z 2016 - SkyLoader, Scarabay; paczka - Stalker_Alex333

 

OPIS:

Spoiler

Poprawka #1: Możliwość przeniesienia przycisku Add shader def z listy Utilities do obszaru roboczego w postaci osobnego przycisku z możliwością przypisania mu skrótu klawiszowego:

Spoiler

Właściwie, jaki jest sens danego "upgrade". Po instalacji skryptów, w panelu Utilities obszaru roboczego 3Ds Max pojawia się taki spoiler:

xvcWsonf.png?download=1

Nas interesuje przycisk Add shader def. Z pomocą jego na już zaznaczoną teksturę w Material Editor można umieścić materiały zrozumiałe dla silnika XRay. Wygląda to tak:

0vPn1efM.png?download=1

Jest to bardzo przydatne, nie trzeba tracić czasu na zaznaczanie materiałów przez SDK, ale...pewna ilość manipulacji zaczęła mnie irytować, bo dotarcie do tego przycisku to strata dodatkowego czasu. Twórca uprościł zadanie, wynosząc to utility na oddzielny przycisk (do którego można przypisać klawisz skrótu).

Jak zainstalować:

  • 1. Pobieramy plik i wrzucamy go do katalogu z 3Ds Max, folderu scripts, następnie Startup.
  • 2. Uruchamiamy 3Ds Max. Z folderu Startup skrypty, w rzeczywistości uruchamiają się od razu wraz z uruchomieniem programu, ale upewnijmy się. W obszarze roboczym programu wybieramy MAXScript/Run Script, wchodzimy do folderu Startup i uruchamiamy plik z nazwą xrShader_by_Khyzyr. Nic nie powinno się wydarzyć.

    Teraz przypiszmy nasz skrypt na oddzielny przycisk w obszarze roboczym. Dla wygody twórca stworzył osobną warstwę, na której umieszczam wszystkie tego typu narzędzia. Wyjaśnienia na przykładzie:
  • 1. W obszarze roboczym 3Ds Max naciskamy Customize/Customize User Interface.
  • 2. Przechodzimy do zakładki Toolbars, naciskamy przycisk New, ustawiamy dowolną nazwę i naciskamy ОК.
  • 3. Na ekranie pojawia się nowy toolbar, który można "przylepić" do dowolnego miejsca na obszarze roboczym.

 

4. Nie zamykając zakładki Toolbars, po lewej znajdujemy spoiler Category, otwieramy go i na dole znajdujemy xrShader. Wewnątrz niego jeden Action, nazywany XR. Chwytamy go i przenosimy na nasz toolbar, stworzony w 3. punkcie. Wyglądać to będzie przykładowo tak:

tgJatYzx.png?download=1

Aby przycisk nie zajmował takiego dużego miejsca, można ustawić dla niego ikonkę. Dlatego też naciskamy Aby to zrobić, kliknij go prawym przyciskiem myszy, następnie klikając w oknie Edit Button Appearance, wewnątrz którego wybieramy Image Button. Tam możesz wyszukać dowolną ikonkę.

PXm4Y8Lw.png?download=1KK7B0ZX7.png?download=1

Każda z dostępnych tam ikon jest dynamiczna: jeśli skrypt działa, ikona jest kolorowa, jeśli nie działa, odpowiednio czarno-biała.
Ostatecznie wszystko wygląda tak:

41VimwpS.png?download=1

Dla ulubieńców kodu. Kod skryptu wygląda tak:

macroScript shader
    category:"xrShader"
    toolTip:"XR"

(    
      Mtl = medit.getcurmtl()
      if classof Mtl != Multimaterial then Mtl = #(Mtl)
      for m in Mtl where classof m == Standardmaterial do
       if not (xrToolsUtil.HasShadersCA m) then custAttributes.add m xrShadersDataCA
     )
     
fn HasShadersCA Mtl =   -----------------------------------------------------------------------------
    (
  if Mtl != undefined then
  (
   local i, ca
   
   for i = 1 to (custAttributes.count Mtl) do
   (
    ca = custAttributes.get Mtl i
    if ca.name == "xrShadersData" then return true
   )
  )
  return false
    )

macroScript shader - nazwa makro-skryptu
category:"xrShader" - kategoria w customize
toolTip:"XR" - nazwa przycisku
Mtl = medit.getcurmtl - parametr przypisujący materiały
fn HasShadersCA Mtl = - funkcja określająca atrybuty dla parametru getcurmtl. Atrybuty są czytane z pliku skryptu xrTools.CAMtl.

 

Poprawka #2: Usuwa przycisk Add shader def z listy Utilities. Daje możliwość automatycznego podłączenia listy xray_shader_params we wszystkich materiałach obszaru Material Editor. Nie jest zalecane używanie tego, problem opisany został w poście: https://ap-pro.ru/forums/topic/1660-3ds-max-apgreyd-skriptov-dan-stash/page/2/?tab=comments#comment-151756

Spoiler

Nie ma tu wiele do wyjaśnienia, wszystko będzie więcej niż jasne na zrzucie ekranu

jNHILP75.png?download=1

Teraz nie trzeba naciskać żadnych zbędnych przycisków. Wraz z uruchomieniem programu lista xray_shader_params będzie się już znajdować we wszystkich standardowych materiałach i automatycznie będzie dodawana do nowych.

Dla ulubieńców kodu:

fn OnMtl =
(
    local mtl = callbacks.notificationParam()
    format "mtlRefAdded: %\n" mtl
    if isKindOf mtl material do
    (
                 Mtl = medit.getcurmtl()
     if classof Mtl != Multimaterial then Mtl = #(Mtl)
     for m in Mtl where classof m == Standardmaterial do
     if not (HasShadersCA m) then custAttributes.add m xrShadersDataCA
)
)
callbacks.removeScripts #mtlRefAdded id:#xxx
callbacks.addScript #mtlRefAdded "OnMtl()" id:#xxx

To sama funkcja. Wszystko co jest wyżej w samym skrypcie - oryginalne linijki kodu od Den-Stash. Na początku był pomysł, aby nie zaśmiecać skryptu i zrobić po prostu objaśnienia w kodzie na sąsiednie pliki, ale to wpływało na optymalizację.

Instalacja:

1. Umieścić folder Startup w folderze scripts w katalogu głównym z 3Ds Max
2. W folderze xray_tools są dwa pliki: xrTools.gui_bak(29.042019) - oryginalny z 29.04.2019 roku na wypadek jakichkolwiek problemów; xrTools.gui - autorska poprawka. Umieścić folder w folderze scripts w katalogu głównym 3Ds Max

 

 

LINKI:

Spoiler

Finalne wersje skryptów: https://disk.yandex.com/d/gb5a6-Ka2M6lDA

Poprawki od justrainy z 20.02.2020: https://disk.yandex.ru/d/RR0Q6klRlWQ-lA

Archiwum ze wszystkim, co jest na dany moment, włączając w to wideo: https://disk.yandex.ru/d/3kqBzLDWKqEazw

Google Drive (wszystko to co jest, włączając w to wideo): https://drive.google.com/file/d/1xPXyjsu9qm41aDY18yxG_qOtU8xqzt5a/view?usp=sharing

 

DODATKI:

Spoiler

Dodatki od WolfHeart:

 

Przydatne skrypty:

Spoiler

- resetObjState - przywraca XForm, centruje Pivot, pokazuje prawdziwą "twarz" normal'ów obiektu.

Link: https://drive.google.com/file/d/18c5yWJTIkgO2eU6_mbvsvdwhmupZk_ly/view

Instalacja: wrzucamy gdzie nam wygodnie, uruchamiamy z maxa przez Run script, wchodzimy w Customize User Interface > mainUI i szukamy go tam w formie szachownicy. Da się przenieść na dowolny toolbar obszaru roboczego i działa po kliknięciu myszką. Można utworzyć dla niego oddzielny toolbar i ustawić go, gdzie się chce.

 

 

ŹRÓDŁO:

ap-pro.ru

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.