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
в противном случае.
-