|
Загрузка моделей в формате OBJ OBJ — это формат файлов описания геометрии, разработанный в Wavefront Technologies для их анимационного пакета Advanced Visualizer. Формат файла является открытым и был принят другими разработчиками приложений 3D графики и может быть экспортирован/импортирован в e-Frontier's Poser, Autodesk's Maya, XSI, Blender, MeshLab, Misfit Model 3D, 3D Studio Max и Rhinoceros 3D, Hexagon, Newtek Lightwave, Art of Illusion и т. д. По большей части это общепринятый формат. Формат файлов OBJ — это простой формат данных, который содержит только 3D геометрию, а именно, позицию каждой вершины, связь координат текстуры с вершиной, нормаль для каждой вершины, а также параметры, которые создают полигоны. Основные особенности формата OBJ:
Подготовка модели в 3D MAX
Так, мы экспортировали модель из 3D MAX в формат OBJ, в данном случае получили файлы House.obj и House.mtl, самое время перейти к загрузке этой модели в движок. Загрузка модели Для начала мы создаем переменную в классе. private var loader:LoaderOBJ; Создадим метод и назовем его например, setupLoading. private function setupLoading():void { this.loader = new LoaderOBJ(); this.loader.load("resources/House.obj"); this.loader.addEventListener(LoaderEvent.PARSING_COMPLETE, this.onParsingComplete); } В этом методе мы создаем экземпляр загрузчика, затем передаем в метод загрузчика load() адрес файла и подписываемся на событие "Разбор файла завершен". Теперь создадим метод, который будет вызываться по событию "Разбор файла завершен" и назовем его например, onParsingComplete. private function onParsingComplete(event:LoaderEvent):void { var i:int; var len:int = this.loader.meshs.length; while (i < len) { this.mesh = this.loader.meshs[i]; this.scene.addChild(this.mesh); i++; } this.loader.removeEventListener(LoaderEvent.PARSING_COMPLETE, this.onParsingComplete); this.loader = null; } В методе мы обходим массив созданных объектов this.loader.meshs из файла и добавляем все созданные объекты на сцену, после чего удаляем событие "Разбор файла завершен" и удаляем лоадер. ![]() Этот пример и более полный исходник вы можете скачать. |