Jump to content

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


Recommended Posts

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.