1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Вопрос к профи о MAX script

Тема в разделе "Общие вопросы", создана пользователем Leca, 23 янв 2002.

Модераторы: Артер
  1. Leca

    Leca Активный участник

    С нами с:
    19.01.2002
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    7
    Привет!
    удивительная штука, более недокументированного хелпа не видела больше нигде. собственно вопрос, мне нужно сделать кастомное оформление редактора материалов - урезать визуальное представление Стандартного максового материала, вот скрипт:

    plugin material StandertLTImaterial

    name:"Standart LTI mat"
    classID:#(695425,446583)
    extends:Standard replaceUI:true version:1

    (
    rollout XXX "Common LTI material"
    (
    groupBox BPgrp "Basic Parameters" pos:[6,8] width:313 height:120
    label AmbientLbl "Ambient:" pos:[41,34] width:50 height:17
    label DIffuseLbl "Diffuse:" pos:[40,69] width:41 height:15
    label SpecularLbl "Specular:" pos:[40,101] width:47 height:15

    colorPicker AmbientCp "" pos:[104,28] width:56 height:25 color:(color 150 150 150)
    colorPicker DiffuseCp "" pos:[104,62] width:56 height:25 color:(color 150 150 150)
    colorPicker SpecularCp "" pos:[104,96] width:56 height:25 color:(color 150 150 150)

    mapButton AmbientBtn "None" pos:[176,32] width:96 height:18 enabled:false toolTip:"Chose a Ambient map"
    mapButton DiffuseBtn "None" pos:[176,66] width:96 height:18 enabled:true toolTip:"Chose a Diffuse map"
    mapButton SpecularBtn "None" pos:[176,99] width:96 height:18 enabled:false toolTip:"Chose a Specular map"

    checkbox AmbDiff pos:[16,48] width:16 height:16 enabled:true checked:true
    checkbox DiffSpec pos:[16,87] width:16 height:16
    groupBox SHgpr "Specular Highlights" pos:[6,132] width:313 height:54
    spinner SpecularSpn "Power " pos:[30,156] range:[0,150,0] width:100 height:16 enabled:true type:#integer scale:1

    groupBox MAPgrp "Maps" pos:[6,190] width:313 height:82
    label MapsLblShading "Shading" pos:[150,200] width:42 height:18
    checkbox MapDiffuseEnable "" pos:[18,215] width:18 height:18
    label MapLblDiffuse "Diffuse:" pos:[36,217] width:48 height:18
    radioButtons MapDiffuseShade "" pos:[85,217] width:73 height:64 labels:#("100", "50x50", "MO 1x2", "Addsigned")
    mapButton MapDiffuseBtn "None" pos:[18,240] width:290 height:18 toolTip:""
    )
    parameters standartMat rollout: XXX
    (
    DiffuseColor type:#color default:(color 150 150 150) ui:DiffuseCp
    AmbientC type:#color default:(color 150 150 150) ui:AmbientCp
    SpecularColor type:#color default:(color 150 150 150) ui:SpecularCp

    SpecularLevels type:#integer default:0 ui:SpecularSpn

    DiffuseButton type:#textureMap ui:DiffuseBtn
    MapDiffuseButton type:#textureMap ui:MapDiffuseBtn

    on AmbientC set val do
    (
    delegate.ambient = val
    )
    on DiffuseColor set val do
    (
    delegate.diffuse = val
    )
    on SpecularColor set val do delegate.Specular = val
    on SpecularLevels set val do delegate.Specular_Level = val
    on DiffuseButton picked mapxx do delegate.map[2] = mapxx
    on MapDiffuseButton picked mapxx do delegate.map[2] = mapxx
    )
    )

    из всего этого работают только Дифузный, спекулярный цвета, Power...
    НЕ работают Амбиентный цвет - совсем непонятно почему.
    НЕ работают кнопки, ни одна, те текстуру то я задать могу только она не отображается в слоте материала, как и амбиентный цвет (остальные цвета видны)
    НЕ понятно почему с разделе parameters standartMat rollout: XXX(), я не могу написать например так
    on DiffuseColor set val do
    (
    delegate.diffuse = val
    if AmbDiff.state do delegate.ambient = val
    )

    точнее написать то могу, но такая конструкция почему то вызывает ошибку, макс говорит что не знает свойство .state у объекта AmbDiff, в определении роллаута такая конструкция не вызывает у него вопросов...

    Где порылась собака?
     
  2. Guest

    НЕ работают кнопки, ни одна, те текстуру то я задать могу только она не отображается в слоте материала, как и амбиентный цвет (остальные цвета видны)

    похоже, что объект material не создается как таковой. это видно уже при назначении слоту в редакторе материалов материала, созданного вами типа - в окне Material/Map Browser при выборе Standart LTI material отображается крест. также это видно, если в MAXScript Listener набрать команду meditMaterials[xx].maps, где xx - номер слота, в который помещен материал, созданного вами типа. попробуйте эту же команду для standardMaterial и увидите разницу. почему так происходит? пока не ясно.

    --------------------------------------------------------------------------------------------------------------------
    НЕ понятно почему с разделе parameters standartMat rollout: XXX(), я не могу написать например так
    on DiffuseColor set val do
    (
    delegate.diffuse = val
    if AmbDiff.state do delegate.ambient = val
    )

    надо так:

    on DiffuseColor set val do
    (
    delegate.diffuse = val
    if XXX.AmbDiff.state do delegate.ambient = val
    )
     
  3. Leca

    Leca Активный участник

    С нами с:
    19.01.2002
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    7
    Ага, посмотрела, действительно, очень странное-ведь я указываю в заголовке скрипта что это расширение стандартного материала, а максу похоже этого недостаточно не принимает он его за материал вообще.

    on DiffuseColor set val do
    (
    delegate.diffuse = val
    if XXX.AmbDiff.state do delegate.ambient = val
    )
    такая конструкция тоже не заработала, на этот раз его не устроило AmbDiff, нет, говорит, свойства у ХХХ...
    Изучеине хелпа ничего не дало, как сделать этот скриптовый мтериал материалом непонятно,
     
  4. Guest

    удивительная штука, более недокументированного хелпа не видела больше нигде. собственно вопрос, мне нужно сделать кастомное оформление редактора материалов - урезать визуальное представление Стандартного максового материала, вот скрипт:

    plugin material StandertLTImaterial

    name:"Standart LTI mat"
    classID:#(695425,446583)
    extends:Standard replaceUI:true version:1

    (
    rollout XXX "Common LTI material"
    (
    .
    .
    .
    )
    parameters standartMat rollout: XXX
    (
    .
    .
    .
    on DiffuseButton picked mapxx do delegate.map[2] = mapxx
    on MapDiffuseButton picked mapxx do delegate.map[2] = mapxx
    )
    )

    надо не "picked", а "set". "picked" было бы, если бы обработчик был в теле блока rollout, а не в теле блока parameters.

    --------------------------------------------------------------------------------------------------------------------
    НЕ понятно почему с разделе parameters standartMat rollout: XXX(), я не могу написать например так
    on DiffuseColor set val do
    (
    delegate.diffuse = val
    if AmbDiff.state do delegate.ambient = val
    )

    у меня работает так:

    if XXX.AmbDiff.state do delegate.ambient = val

    где XXX - наименование роллаута. Но если у вас и так не работает, то попробуйте так:

    if this.yourRolloutName.AmbDiff.state do delegate.ambient = val
     
  5. Leca

    Leca Активный участник

    С нами с:
    19.01.2002
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    7
    В конце концов заработало вот так:
    on DiffuseColor set val do
    (
    delegate.diffuse = val
    if this.XXX.AmbDiff.state do
    (
    delegate.ambient = val
    )
    )
    Однако, амбиентный цвет все также не видим в слоте материала.

    "надо не "picked", а "set". "picked" было бы, если бы обработчик был в теле блока rollout, а не в теле блока parameters."
    не заработало, я исполдьзовала вот такую конструкцию:
    on DiffuseButton set mapxx do
    if mapxx != undefined do delegate.map[2] = mapxx

    на что макс сказал: "неизвестное свойство "map" in (null):Standart"
    при этом в листенере:
    -- Error occurred in DiffuseButton()
    -- Frame:
    -- mapxx: Map #8:Bitmap

    Уррааааа!!! заработало вот так:
    on DiffuseButton set mapxx do
    if mapxx != undefined do delegate.diffuseMap = mapxx
     
Модераторы: Артер

Поделиться этой страницей