Jump to content


Photo

Error: Error #2030: Обнаружен конец файла. Вопрос к разработчикам.


  • Please log in to reply
11 replies to this topic

#1 stweet

stweet

    Advanced Member

  • Members
  • PipPipPip
  • 85 posts

Posted 14 03 2012 - 00:00

Error: Error #2030: Обнаружен конец файла.
at flash.utils::ByteArray/readUTFBytes()
at alternativa.protocol.codec.complex::StringCodec/doDecode()
at alternativa.protocol.codec::AbstractCodec/decode()
at versionBase1Custom0.a3d.material.codec::A3DImageCodec/doDecode()[C:ProjectsA3DWorkspaceA3D_0.0.1.0targetclientfp10srcversionBase1Custom0a3dmaterialcodecA3DImageCodec.as:24]
at alternativa.protocol.codec::AbstractCodec/decode()
at platform.client.A3DModelsBase.versionBase1Custom0.a3d.material.codec::A3DImageNotNullVectorCodec/doDecode()[C:ProjectsA3DWorkspaceA3D_0.0.1.0targetclientfp10srcplatformclientA3DModelsBaseversionBase1Custom0a3dmaterialcodecA3DImageNotNullVectorCodec.as:28]
at alternativa.protocol.codec::AbstractCodec/decode()
at versionBase1Custom0.a3d.codec::A3DCodec/doDecode()[C:ProjectsA3DWorkspaceA3D_0.0.1.0targetclientfp10srcversionBase1Custom0a3dcodecA3DCodec.as:29]
at alternativa.protocol.codec::AbstractCodec/decode()
at alternativa.protocol::Protocol/decode()
at alternativa.engine3d.loaders::ParserA3D/parse()[G:worksAlternativa3Dsrcalternativaengine3dloadersParserA3D.as:95]
at SimpleViewer/setupModel()[C:UsersstweetDesktopNewParsesrcSimpleViewer.as:118]
at SimpleViewer/onContext3DCreate()[C:UsersstweetDesktopNewParsesrcSimpleViewer.as:100]

Что делаю я:
1. установил(уже повторно) Макс 2011.
2. Скачал плагины "_http://blog.alternativaplatform.com/ru/2012/03/01/alternativa3d-8270-s-tenyami-i-alfa-testom/#comments".
3. Аккуратно извлек файлы в папочку "3ds Max 2011plugins"
4. Скачал девелопер "_http://www.flashdevelop.org/community/viewtopic.php?f=11&t=9327".
5. Установил.
6. Скачал ваш движок "_http://alternativaplatform.com/ru/download8/".
7. Создаю новый AS3 проект в девелопере и копирую движок в папочку "lib".
8. Регистрирую пyть к движку в проекте "Add to Library".
9. Запускаю поочередно проекты из папочки "Alternativa3DExamples" приложенную в архиве с движком.

Всё работает безупречно!

10. Скачиваю исходник проекта "_http://wiki.alternativaplatform.com/Alternativa_8_%D0%B4%D0%BB%D1%8F_%D1%87%D0%B0%D0%B9%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2..._%D1%87%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D1%82%D0%BE%D1%80%D0%B0%D1%8F".
11. Запускаю.

Всё работает безупречно!

12. Создаю собственный объект в 3D Max 2011(Банальный куб).
13. Експортирую(не выставляя ни каких галочек), експорт проходит успешно.
14. Полученный файл заменяю на тот что проекте "cube.A3D" ==> "model.A3D".
15. Получаю на выходе: Error: Error #2030: Обнаружен конец файла.
16. Прочёл большую часть форума связанную с данной ошибкой. Вразумительных решений не нашёл а если и нашёл, они висели без ответов. "_http://forum.alternativaplatform.com/posts/list/8230.page#68090".
17. Начинаю заниматься мазохизмом. "_http://forum.alternativaplatform.com/posts/list/7905.page#67195".
18. Заново создаю примитив в 3D Maх-е и преабразую его в меш(Mesh).
19. Узнаю про занятную вещь. "_http://a3dplayer.com/".
20. Загружаю туда вами сделанный объект из примера. (см.п.10).
21. Вроде бы всё в порядке, но чего то не хватает на сцене, О_о а где машинка? В общем мне там ни чего не показали ни с 1-го раза ни с 10-го.
22. Пробую загрузить туда свою модель, плеер виснет! Ждал минут 10-15. не грузит а скорее не парсит т.к. прогресс загрузки объекта встаёт как раз на 100%.
23. Пробую загрузить модель(см.п.10) в 3D Max, встаёт на 75% что на первой попытке что на 20-ой и убивает редактор.
24. Пробую импортировать мною сделанный приметив, принимает, но показывает только в режиме "перспектива" В остальных окнах пусто.

В общем не старайтесь задать вопросов типа а текстуру накладывал, а FillMaterial пробовал и т.п. вопросы, я просто их опустил.
Сначала я сомневался в плагинах, но когда пошли недопонимания вашего же плеера(см.п.19) с вашем же объектом(см.п.10) сомнения отпали.

Движёк конечно навароченный, тут без споров, да и выше упомянутое не в упрёк, цель данной ветки "помочь решить данную задачу" не более.

Заранее буду благодарен.

#2 Dmitriev

Dmitriev

    Advanced Member

  • Members
  • PipPipPip
  • 52 posts

Posted 14 03 2012 - 01:28

stweet, доброе утро!
1. "Скачиваю исходник проекта "_http://wiki.alternativaplatform.com/Alternativa_8_%D0%B4%D0%BB%D1%8F_%D1%87%D0%B0%D0%B9%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2..._%D1%87%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D1%82%D0%BE%D1%80%D0%B0%D1%8F". Это очень полезная информация... )))
Лучше выложи код, который грузит модель.
2. Проверь соответствие названия модели в примере и в твоем Максовском проекте.


#3 stweet

stweet

    Advanced Member

  • Members
  • PipPipPip
  • 85 posts

Posted 14 03 2012 - 01:50

Это очень полезная информация... )))
-- Что не так в ссылке?

Лучше выложи код, который грузит модель.
10. Скачиваю исходник проекта

Не внимательно читаете, это первое!
Второе: где говориться, что явно давать имена объектам в максе является обязательным действием и после проверять их в движке?
И всё же отвечу, по умолчанию в максе объектам даются имена, прочитав ваш пост, попробовал, результат без изменений. Вообще не пойму какое отношение иммет имя объекта если в сцене они явно не указываются???

2. Проверь соответствие названия модели в примере и в твоем Максовском проекте.
Давайте по делу!

#4 stweet

stweet

    Advanced Member

  • Members
  • PipPipPip
  • 85 posts

Posted 14 03 2012 - 01:53

Да и ... если внимательно прочитать стартап то из поста можно понять что разговор более о движке идёт а не о моделях.

#5 Dmitriev

Dmitriev

    Advanced Member

  • Members
  • PipPipPip
  • 52 posts

Posted 15 03 2012 - 01:24

-- Что не так в ссылке?
Ничего. Она просто не открывается.

10. Скачиваю исходник проекта

Нужны всего лишь строчки, где происходит загрузка.


Вообще не пойму какое отношение имеет имя объекта если в сцене они явно не указываются???
А это скорее всего и будет третьей ошибкой, которую ты допускаешь, не уверен, код еще не видел.




#6 The Enemy

The Enemy

    Newbie

  • Members
  • Pip
  • 3 posts

Posted 11 05 2012 - 08:09

Та же проблема.
если че вот код загрузки А3Д

var loaderA3D:URLLoader = new URLLoader();
loaderA3D.dataFormat = URLLoaderDataFormat.BINARY;
loaderA3D.load(new URLRequest("model.A3D"));
loaderA3D.addEventListener(Event.COMPLETE, onA3DLoad);


прасинг


private function onA3DLoad(e:Event):void {

var parser:ParserA3D = new ParserA3D();

parser.parse((e.target as URLLoader).data);

car = new Mesh();
rootContainer.addChild(car);

for each (var object:Object3D in parser.objects){
if (object is Mesh){
var mesh:Mesh = Mesh(object);
mesh.setMaterialToAllSurfaces(new FillMaterial(Math.random() * 0xFFFFFF));
car.addChild(mesh);
}
}



#7 The Enemy

The Enemy

    Newbie

  • Members
  • Pip
  • 3 posts

Posted 11 05 2012 - 08:20

это из стандартного примера
http://redefy.net/20...iva8-chapter-2/

#8 Dmitriev

Dmitriev

    Advanced Member

  • Members
  • PipPipPip
  • 52 posts

Posted 12 05 2012 - 02:25

The Enemy, привет.
model.A3D располагается в той же папке? Модель эмбедена (Embed)? Может быть надо указать полный адрес?
p.s. Выложи пожалуйста весь код.


#9 vanRepin

vanRepin

    Advanced Member

  • Members
  • PipPipPip
  • 149 posts

Posted 12 05 2012 - 03:00

По стак трейсу, похоже, что подключена старая версия библиотеки A3DModelsBase

#10 The Enemy

The Enemy

    Newbie

  • Members
  • Pip
  • 3 posts

Posted 12 05 2012 - 04:50


package {

import alternativa.engine3d.controllers.SimpleObjectController; //нужные нам классы Alternativa 8
import alternativa.engine3d.core.Camera3D;
import alternativa.engine3d.core.Object3D;
import alternativa.engine3d.core.Resource;
import alternativa.engine3d.core.View;
import alternativa.engine3d.loaders.ParserA3D;
import alternativa.engine3d.materials.FillMaterial;
import alternativa.engine3d.objects.Mesh;
import alternativa.engine3d.resources.Geometry;

import flash.display.Sprite; //классы Flash
import flash.display.Stage3D;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;

public class Main extends Sprite {

private var rootContainer:Object3D = new Object3D(); //тут все ясно, если нет читаем прошлый урок
private var camera:Camera3D;
private var stage3D:Stage3D;
private var car:Mesh; //контейнер для нашей машинки
/* Класс Mesh наследуется от Object3D и может содержать в себе 3d модель с произвольной геометрией
* Также может выступать в роли контейнера. В принципе здесь бы и Object3D хватило, но я написал уже так
*/
private var simpleController:SimpleObjectController;

public function Main(){
stage.align = StageAlign.TOP_LEFT; //выравниваем контент по верхнему левому углу
stage.scaleMode = StageScaleMode.NO_SCALE; //запрещаем масштабирование контента

camera = new Camera3D(0.1, 10000); //создаем камеру и позиционируем ее
camera.view = new View(550, 400); //создаем вьюпорт
camera.rotationX = -120 * Math.PI / 180;
camera.y = -100;
camera.z = 50;
addChild(camera.view);
addChild(camera.diagram); // добавляем диаграмму
/* Диаграмма, на которой отображается отладочная информация. Чтобы отобразить диаграмму, её нужно добавить на экран.
* FPS — Среднее количество кадров в секунду за промежуток в fpsUpdatePeriod кадров.
* MS — Среднее время выполнения замеряемого с помощью startTimer — stopTimer участка кода в миллисекундах за промежуток в timerUpdatePeriod кадров.
* MEM — Количество занимаемой плеером памяти в мегабайтах.
* DRW — Количество отрисовочных вызовов в текущем кадре.
* PLG — Количество видимых полигонов в текущем кадре.
* TRI — Количество отрисованных треугольников в текущем кадре.

* У камеры также есть методы для позиционирования диаграммы
*
* diagramAlign --> Используя константы класса StageAlign указываем где будет расположена диаграмма
* Пример: camera.diagramAlign = StageAlign.BOTTOM_LEFT;
*
* diagramHorizontalMargin --> отступ от края рабочей области по горизонтали
* Пример: camera.diagramHorizontalMargin = 50;
*
* diagramVerticalMargin --> отступ от края рабочей области по вертикали
* Пример: camera. diagramVerticalMargin = 50;
*/
rootContainer.addChild(camera);

stage3D = stage.stage3Ds[0]; //получаем stage3D
stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContextCreate);
stage3D.requestContext3D(); //запрашиваем контекст
}

private function onContextCreate(e:Event):void {
stage3D.removeEventListener(Event.CONTEXT3D_CREATE, onContextCreate);

var loaderA3D:URLLoader = new URLLoader(); //о чем я и говорил: создаем URLLoader
loaderA3D.dataFormat = URLLoaderDataFormat.BINARY; //указываем чтобы контент грузился как массив байтов, а не как текст
loaderA3D.load(new URLRequest("model.A3D"));
loaderA3D.addEventListener(Event.COMPLETE, onA3DLoad); //окончание загрузки
}

private function onA3DLoad(e:Event):void {

var parser:ParserA3D = new ParserA3D(); //создаем парсер
/*
* ParserA3D — этот класс разбирает модель загруженную из формата a3d
* и забивает массив [objects] трехмерными объектами
*/
parser.parse((e.target as URLLoader).data); //разбираем модель

car = new Mesh(); //создаем Mesh.
rootContainer.addChild(car); //добавляем в главный контейнер

for each (var object:Object3D in parser.objects){ //перебираем массив objects
if (object is Mesh){
var mesh:Mesh = Mesh(object); //преобразуем в Mesh
mesh.setMaterialToAllSurfaces(new FillMaterial(Math.random() * 0xFFFFFF)); //просто «красим»
car.addChild(mesh); //добавляем в контейнер для машины
}
}

for each (var resource:Resource in rootContainer.getResources(true)){
resource.upload(stage3D.context3D);
} // все ресурсы загружаем в context3D
//Я не помню говорил я или нет но чтобы у нас хоть что-то появилось мы должны все ресурсы обязательно загрузить context3D и мы должны всегда об этом помнить
simpleController = new SimpleObjectController(stage, car, 1000); // назначаем контроллер для контейнера car(подробно в другом уроке) [
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}

private function onEnterFrame(e:Event):void {
simpleController.update(); //обновляем контроллер
camera.render(stage3D); //рендерим сцену
}
}
}

вот полный код примера. С их моделью работает, но если заменить ее на другую, то пишет: [Fault] exception, information=Error: Error #2030: Обнаружен конец файла.

#11 yava

yava

    Advanced Member

  • Members
  • PipPipPip
  • 44 posts

Posted 19 06 2012 - 18:28

Да, тоже хотел свою модель из max2011 поставить и не получилось. Flash-плеер повис.

#12 QW01_01_

QW01_01_

    Advanced Member

  • Members
  • PipPipPip
  • 694 posts

Posted 19 06 2012 - 18:36

yava wrote: Да, тоже хотел свою модель из max2011 поставить и не получилось. Flash-плеер повис.
Если модель без анимации то лучше из макса сохранить в 3ds, а потом перегнать в a3d в онлайн плеере.
Причем если в одном меше >65 тыс. вершин, то лучше его сразу разделить.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users