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

Как подружить plug-in на C++ MAX SDK с кнопкой на toolbar

Тема в разделе "MAXScript", создана пользователем -, 1 апр 2004.

Модераторы: Savin Denis
  1. Guest

    Я написал плагин (объект) в MAX SDK соответственно на C++ и кнопка для его создания появилась на Create панели.
    Но как связать запуск создания с кнопкой на тулбаре - пытался разобраться то вобщем скрипт то не сложный, но для стандартных максовских объектов он вызывает то ли порожденные от них скрипт-объекты то ли wrapper объекты.
    Например в одном таком скрипте для кнопки команда:
    StartObjectCreation Spotlight , но в макс сдк такого объекта нет - он называется чут-чуть по-дугому. А чуть-чуть тут не проходит.
     
  2. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Метод StartObjectCreation <maxobjclass> эмулирует нажатие кнопки в Create Panel для твоего класса обьекта.

    Точно узнать класс своего обьекта можеш с помощью фн. - classOf $
    Хотя если сам писал то должен знать.

    В остальном обыкновенный макроскрипт:

    macroScript Target_Camera category:"Cameras"
    tooltip:"Targeted Camera" Icon:#("Cameras",1)
    (
    StartObjectCreation TargetCamera
    )
     
  3. Guest

    Дело обстоит вот как:
    В максе все источники света представлены одним классом GeneralLight, то что мы ставляем в сцену - один клас, но с различными параметрами - тип, mesh.
    Для связи плагин объектов с максом существует дескриптор классов ClassDesc, который имеет метод Create() - который вызывается для создания объекта.
    Для источников света порождено несколько дескрипторов - по одному для каждого типа, которые обозваны приблизительно так: OmniLightClassDesc,
    SpotLightClassDecs итд. А метод Create() каждого из них содержит нечто вроде return new GeneralLight(int тип источника);

    Тоесть нет никакой связи всего вышеописанного с

    StartObjectCreation Spotlight

    Даже имени такого Spotlight в макс сдк не существует.
    Хотя есть похожие имена типа OmniLight, SpotLight но они связанны с классом ObjLightDeesc - который имеет отношение только к рендерингу, и возвращается GeneralLight::GetObjLightDesc() только в начале рендеринга - то есть к созданию источника света никакого отношения не не имеет.

    Хотя нашел в SDK Help какие-то разделы посвященные скриптам - стр. 40-50
    буду читать
     
  4. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Да с источниками света там намудрили малость.
    MAXClass можно прописать для скрипта более детально
    что повидемому и сделали со светом,

    MAXClass box
    ("Box", Class_ID(BOXOBJ_CLASS_ID, 0), GEOMOBJECT_CLASS_ID, &geom_class, 0,
    accessors,
    paramblock,
    "length", BOXOBJ_LENGTH, TYPE_FLOAT, 25.0,
    ................
    end,
    end,
    end

    );

    Более детальный пример есть в testdlx\tester.cpp
    Если не секрет что будет за лампочка ?
     
  5. Guest

    Спасибо за помощь - бкду пробовать.
    Да вот пытаюсь написать рендерер. Ядро вроде уже как бы сделал, хотя оно еще очень нуждается в доработке - улучшить структуры данных и т.д. Пока нет сглаживания. Скорость для eye rays по сравнению с металом - если у ментала настройка самплинга [-1;0] - 0.67 самплов на пиксель - то скорость у меня выше на 5%, если настройка [0;0] - 1.06 самплов на пиксель то скорость у меня выше на 15-20%. Для отраженных и преломленных лучей скорость вобщем то сравнима с mental и VRay. Хотя есть еще некоторые глюки.
    Для ускорения использовал двухуровневое bsp-дерево (дерево кластеров и bsp внутри каждого кластера). Еще реализовал HLCTS (использование общих путей траверсинга для когерентных лучей) для дерева кластеров, хотя это не принесло того результата, что я ожидал - всего 1-2% ускореня. Возможно если ее реализовать еще и внутри кластеров это еще даст 3-4%, но это позже.
    А лампочка должна стать AreaLight. Хотя пока я на стадии передирания интерфейса. А их то около 5000 строчек.
     
  6. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Рендер это хорошо.
    Но пока до самого интереного не добрался :)

    PS
    Нужно будет потестить пиши.
     
Модераторы: Savin Denis

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