ddd.mesh

Модуль, определяющий классы 3D-объектов (мешей), которые возможно вывести на экран:

  • Меш - для статических 3D-объектов
  • МешСоСкелетом - для 3D-объектов, к которым возможно применять скелетную анимацию


Дополнительно определены:

  • класс МешИсключение - для исключений, которые могут возникнуть при работе с мешами
  • функция выбор_меша - помогающая выяснить, к какому именно классу относится тот или иной файл с ресурсом меша
  • класс ЗагруженныеМеши, позволяющий получать объекты мешей из файлов-ресурсов с расширением ".me". Экземпляр этого класса присутствует в объекте DDDМенеджер. Рекомендуется получать объекты класса Меш (или, возможно, МешСоСкелетом) через него.

  • enum bool ЧЕРЕДУЮЩИЕСЯ_БУФЕРЫ;

    Вариант отрисовки меша, в котором буферы вершин, текстур и нормалей слиты в один чередующийся буфер.

  • enum bool ОТДЕЛЬНЫЕ_БУФЕРЫ;

    Вариант отрисовки меша, в котором буферы вершин, текстур и нормалей отдельны.

  • enum JSON_TYPE[string] Меш_JSON;

    Меш в json-файле 3D-объекта:

    • имя (строковый) - имя меша в программе, должно соответствовать имени ресурса меша
    • тип_отрисовки (json-логический) - что будет использоваться мешем, отдельные или чередующиеся буферы
    • независимые_копии (json-логический) - если true, то при каждом получении объекта из ресурса будет создаваться новый объект; если false, то будет отдаваться тот же объект, как это обычно делается со всеми остальными ресурсами; если поле отсутствует, то эта политика зависит от того, какой класс меша будет создан - для класса Меш будут возвращаться ссылки на тот же объект, для класса МешСоСкелетом будет возвращаться новый объект
    • скелет (строковый) - имя скелета в программе, который будет привязан к этому мешу, должно соответствовать имени ресурса скелета

  • class МешИсключение: object.Exception;

    Класс исключений, которые могут возникнуть при работе с мешами.

  • class Меш;

    Класс, представляющий геометрические данные о статическом 3D-объекте.

    • this(string имя_файла_меша, bool тип_отрисовки0 = ЧЕРЕДУЮЩИЕСЯ_БУФЕРЫ);

      Конструктор, принимающий имя файла с данными о меше.

      Параметры:

      string имя_файла_меша

      Имя файла типа ".me" с данными меша формата первой версии.

      bool тип_отрисовки0

      В каком виде будут представлены данные о координатах вершин, текстур и нормалей внутри класса, см. ЧЕРЕДУЮЩИЕСЯ_БУФЕРЫ и ОТДЕЛЬНЫЕ_БУФЕРЫ

      Исключения:

      МешИсключение, если заголовок файла не соответствует заголовку файла меша первой версии.

    • this(float[] координаты_вершин, float[] координаты_текстур, float[] координаты_нормалей, ushort[] индексы, bool тип_отрисовки0 = ЧЕРЕДУЮЩИЕСЯ_БУФЕРЫ);

      Конструктор, принимающий координаты вершин, текстур и нормалей, а также индексы для построения граней в виде массивов.

      Параметры:

      float[] координаты_вершин

      массив с координатами вершин (3 координаты на вершину)

      float[] координаты_текстур

      массив с текстурными координатами (2 координаты на вершину)

      float[] координаты_нормалей

      массив с координатами нормалей (3 координаты на вершину)

      ushort[] индексы

      массив индексов вершин, определяющих грани (3 индекса на грань)

      bool тип_отрисовки0

      В каком виде будут представлены данные о координатах вершин, текстур и нормалей внутри класса, см. ЧЕРЕДУЮЩИЕСЯ_БУФЕРЫ и ОТДЕЛЬНЫЕ_БУФЕРЫ

    • this(Меш другой_меш);

      Конструктор копирования.

      Параметры:

      Меш другой_меш

      Экземпляр класса Меш, данные которого используются для создания этого Меша

    • void рисовать();

      Вывод 3D-объекта этого меша на экран.

    • int количество_граней();

      Возвращает количество граней в этом меше.

    • void присвоить_скелет(Скелет скелет0);

      Функция для совместимости с анимированным мешем. В этом классе не выполняет никаких действий.

    • bool установить_состояние_анимации(string название_анимации, float положение_кадра);

      Функция для совместимости с анимированным мешем. В этом классе не выполняет никаких действий.

      Возвращаемое значение:

      false

    • bool объединить_состояния_анимации(string название_анимации1, float положение_кадра1, string название_анимации2, float положение_кадра2, float коэффициент);

      Функция для совместимости с анимированным мешем. В этом классе не выполняет никаких действий.

      Возвращаемое значение:

      false

    • string toString();

      Вывод части данных этого меша в строковое представление.

      Осторожно, может быть очень большая строка!

    • void изменить_координаты_текстур(float[] координаты_текстур);

      Функция, заменяющая текущие текстурные координаты на новые. Для текстурной анимации.

      Замечание: При применении этой функции тип отрисовки этого меша переводится на отдельные буферы.

    • @property ushort версия();

      Возвращает версию меша

  • class МешСоСкелетом: ddd.mesh.Меш;

    Класс, представляющий геометрические данные о 3D-объекте, к которому возможно применять скелетную анимацию. Для этого ему нужно присвоить уже существующий объект Скелет, имена костей которого должны соответствовать группам вершин меша. Анимация будет рассчитываться совместно обоими классами.

    Тип отрисовки этого класса всегда через отдельные буферы.

    • this(string имя_файла_меша);

      Конструктор, принимающий имя файла с данными о меше.

      Параметры:

      string имя_файла_меша

      Имя файла типа ".me" с данными меша формата второй версии.

      Исключения:

      МешИсключение, если заголовок файла не соответствует заголовку файла меша второй версии.

    • this(МешСоСкелетом другой_меш);

      Конструктор копирования.

      Параметры:

      МешСоСкелетом другой_меш

      Экземпляр класса МешСоСкелетом, данные которого используются для создания этого экземпляра МешСоСкелетом

    • string toString();

      Вывод части данных этого меша в строковое представление.

      Осторожно, может быть очень большая строка!

    • void присвоить_скелет(Скелет скелет0);

      Присваивает существующий скелет этому мешу.

    • bool установить_состояние_анимации(string название_анимации, float положение_кадра);

      Функция, устанавливающая форму (т.е. координаты вершин) этого меша в требуемое состояние анимации.

      Если этому мешу не был присвоен скелет, то функция не выполняет никаких действий.

      Параметры:

      string название_анимации

      Имя анимации, должно быть одним из существуюших имён анимаций (или, "действий") присвоенного скелета.

      float положение_кадра

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

      Возвращаемое значение:

      true, если установка формы успешно выполнена, false в противном случае.

    • bool объединить_состояния_анимации(string название_анимации1, float положение_кадра1, string название_анимации2, float положение_кадра2, float коэффициент);

      Функция, устанавливающая форму (т.е. координаты вершин) этого меша в требуемое состояние объединения двух анимаций.

      Если этому мешу не был присвоен скелет, то функция не выполняет никаких действий.

      Параметры:

      string название_анимации1

      Имя первой анимации, должно быть одним из существуюших имён анимаций (или, "действий") присвоенного скелета.

      float положение_кадра1

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

      string название_анимации2

      Имя второй анимации, должно быть одним из существуюших имён анимаций (или, "действий") присвоенного скелета.

      float положение_кадра2

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

      float коэффициент

      Если вычисляется состояние кости скелета, которая участвует в обеих анимациях, то этот параметр используется как коэффициент интерполяции между ними. Если кость, для которой вычисляется состояние, используется только в одной из анимаций, то этот параметр не используется.

      Возвращаемое значение:

      true, если установка формы успешно выполнена, false в противном случае.

    • void рисовать();

      Вывод 3D-объекта этого меша на экран.

  • Меш выбор_меша(string имя_файла_меша);

    Функция, строящая объект того класса меша, который указан в заголовке переданного файла.

    Параметры:

    string имя_файла_меша

    Имя (с путём к нему) файла, для которого определяется тип меша.

    Возвращаемое значение:

    Объект одного из классов: Меш или МешСоСкелетом, в зависимости от заголовка переданного файла.

    Исключения:

    МешИсключение, если заголовок файла не соответствует ни одному из заголовков файла меша первой или второй версии.

  • class ЗагруженныеМеши: ddd.resources.ЗагруженныеРесурсы!(Меш).ЗагруженныеРесурсы;

    Класс-контейнер ресурсов объектов класса Меш и его потомков.

    Экземпляр этого класса присутствует в объекте DDDМенеджер. Рекомендуется получать объекты классов мешей, построенных из файлов, через него.

    • this(ИменаРесурсов имена_ресурсов0);

      Конструктор, принимающий ссылку на объект типа ИменаРесурсов, в котором уже должны храниться имена всех доступных файлов ресурсов.

    • protected bool загрузить_один(string имя);

      Функция загрузки в контейнер одного файла с ресурсом.

      Возвращаемое значение:

      true, если файл удачно загрузился, false в противном случае.