Чтобы получить объект класса Model
, вам необходимо использовать один из двух методов:
ObjReader.read(File file)
- принимает файл, из которого необходимо считать модельObjReader.read(String content)
- принимает строку, из которой необходимо считать модель - например, содержимое файла или введенную вручную строку
Добавлен soft режим. Если он включен, то исключения типа "Слишком много аргументов" и "Неправильный токен"
будут игнорироваться. Рекомендуется использовать его, потому что в моделях из учебного репозитория есть такие ситуации:
vt 0.4612 0.4725 0.0000.
Они выбрасывают исключения в обычном режиме. Soft режим по умолчанию включен в вышеупомянутых методах. Если вы хотите
изменить этот параметр, то можете использовать соответствующие методы ObjReader.read(File file, boolean isSoft)
и
ObjReader.read(String content, boolean isSoft)
.
Эти методы выбрасывают исключения при возникновении ошибок считывания. Все исключения наследуются от одного
класса ObjReaderException
, который является RuntimeException.
Это означает, что вам необязательно отлавливать их через try/catch. Среда разработки не будет ругаться,
и программа в любом случае запустится.
Тем не менее настоятельно рекомендуется использовать при создании модели конструкцию по типу:
//...
// some code
Model model;
try {
model = ObjReader.read(new File("some/path"));
} catch (ObjReader exception) {
// some exception handling
}
// more code
// ...
В противном случае, вся ваша программа будет прекращать работу из-за небольшой ошибки в файле модели.
При возникновении ошибок и непредвиденных ситуаций можете создавать вопросы в разделе Issues данного репозитория, либо сообщать напрямую мне.
Далее идет описание папок и классов. В пояснениях указано, что вам необходимо скопировать себе для корректной работы программы.
- math
Vector2f, Vector3f
- классы-заготовки для работы с математикой, полностью скопированы из учебного репозитория. в них я переопределил методы equals и hashCode, но они используются только в тестах. Можете не копировать себе, если у вас есть собственная реализация.
- model
Group
- класс, представляющий собой группу полиномов (токен g). Необходимо скопировать себе.Model, Polygon
- классы, взятые из учебного репозитория. Необходимо скопировать себе все поля и методы, которые идут после строки с комментарием "Добавленные мной поля и методы".
- objreader - необходимо полностью скопировать себе данную папку
- exceptions - здесь хранятся исключения для разных ошибок. Они наследуются от одного родительского класса ObjReaderException.
FaceWord
- класс, который представляет собой слово полигона и производит парсинг каждого отдельного слова.ObjReader
- основной класс, содержащий логику и производящий парсинг файла.WordType
- enum для определения, содержит ли полигон определенные компоненты (вершины, текстурные вершины, нормали).
Кроме того, есть тесты:
FaceWordTest
- для тестирования классаFaceWord
отдельноObjReaderFileParsingTest
- для тестирования всегоObjReader
с использованием считывания файловObjReaderTest
- для дополнительного тестирования некоторых методовObjReader
без считывания файлов
В методичке сказано, что тесты тоже желательно копировать себе. Если будете это делать, то вам также понадобятся тестовые файлы, которые лежат в директории src/test/resources/ObjFiles.