Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Away3D для 2D игры (Элементы 3D) (http://www.flasher.ru/forum/showthread.php?t=210561)

V01D 30.03.2015 14:02

Away3D для 2D игры (Элементы 3D)
 
Добрый день.

Перевожу игру с Papervision3D на Away3D...
Возникло несколько проблем:
1. Главная - Почемуто объекты Движка рисуются ЗА всеми объектами страницы (на каком бы слое Away3D-объекты не располагались).
2. Несмотря на п.1 - Слой Away3D (находясь поверх (например на stage)) блокирует все взаимодействия мыши. (только снимать со stage и предавать другим слоям?)
3. Ну и пока совсем второстепенный вопрос перспективы - Возможно ли на этом движке сделать 2D на 3D без перспективы, с отображением поодаль на странице.

Спасибо...

illuzor 30.03.2015 15:07

Для ui можно использовать Starling+Feathers. Вот статья.
И ещё видео.

dimarik 30.03.2015 21:08

Цитата:

Сообщение от V01D (Сообщение 1180733)
Добрый день.

Перевожу игру с Papervision3D на Away3D...
Возникло несколько проблем:
1. Главная - Почемуто объекты Движка рисуются ЗА всеми объектами страницы (на каком бы слое Away3D-объекты не располагались).

Stage3D имеет свой слой, он находится ниже классического DisplayList.

Цитата:

2. Несмотря на п.1 - Слой Away3D (находясь поверх (например на stage)) блокирует все взаимодействия мыши. (только снимать со stage и предавать другим слоям?)
Взаимодействие с мышью и клавиатурой по-прежнему возможно только через классический stage. Away3d не исключение, он слушает stage.

Цитата:

3. Ну и пока совсем второстепенный вопрос перспективы - Возможно ли на этом движке сделать 2D на 3D без перспективы, с отображением поодаль на странице.

Спасибо...
Думаю, что в движке есть возможность переопределить матрицу проекции на ортогональную.

V01D 31.03.2015 10:38

Цитата:

Сообщение от illuzor (Сообщение 1180735)
Для ui можно использовать Starling+Feathers. Вот статья.
И ещё видео.

Starling - Это портирование игры с нуля
Чего стоит только - starling.display.Sprite
А хотелось бы просто добавить слой Stage3D где и отрисовать 3D объекты и с кажем некоторые партиклы...

Тем не менее спасибо - не знал о этом API.

Цитата:

Сообщение от dimarik
Stage3D имеет свой слой, он находится ниже классического DisplayList.

Так и хочется спросить:
И че никак? ВАЩЕ НИКАК?
:(

illuzor 31.03.2015 11:56

Цитата:

Starling - Это портирование игры с нуля
При чём тут портирование? Это 2d движок с отрисовкой через gpu.
Я хотел предложить перенести на него только ui.

Одновременно могут работать несколько stage3d. Опять же, посмотрите мои ссылки.

ZackMercury 31.03.2015 12:20

Цитата:

И че никак? ВАЩЕ НИКАК?
Можно рисовать в растровый буффер, находящийся в DL, неужели всё настолько туго?

V01D 31.03.2015 12:27

Цитата:

Сообщение от illuzor (Сообщение 1180763)
При чём тут портирование? Это 2d движок с отрисовкой через gpu.
Я хотел предложить перенести на него только ui.

Одновременно могут работать несколько stage3d. Опять же, посмотрите мои ссылки.

Это понятно как раз.
1. А как быть с UI отрисованными в CS? (заново разрабатывать) (портирование именно в этом смысле!)
2. UI переносить совсем не хотел.
3. Если переносить то переносить именно слой экшена. (У меня Там больше завязано все на bittmapы).
4. Хотелось именно минимальным воздействием. (Только те объекты которые относятся к 3D изобразить на слое Stage3D)
5. Ссылки смотрел и пытался кое что перенести, но споткнулся как раз на - starling.display.Sprite (По началу думал что там обычный - ан нет все спрайты заново писать!)

Добавлено через 5 минут
Цитата:

Сообщение от ZackMercury (Сообщение 1180769)
Можно рисовать в растровый буффер, находящийся в DL

А можно подробней...

или ссылку.

ZackMercury 31.03.2015 12:42

http://away3d.com/forum/viewthread/1960/

Цитата:

_view.renderer.swapBackBuffer = false;
_view.render();
_view.stage3DProxy.context3D.drawToBitmapData(bitmapHolder.bitmapData);
_view.renderer.swapBackBuffer = true;

V01D 31.03.2015 14:33

1.
Context3D - AS3

drawToBitmapData() метод
Цитата:

Потенциально это очень медленная операция, выполнение которой может занять около секунды. Используйте с осторожностью.
т.е. смысла нет...

2. Код
Код:

_view.renderer.swapBackBuffer = false;
_view.render();
_view.stage3DProxy.context3D.drawToBitmapData(bitmapHolder.bitmapData);
_view.renderer.swapBackBuffer = true;

Устарел - _view.renderer.swapBackBuffer параметр отсутствует

3. Альтернативный код из ссылки

Код:

var stageBMD:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
  var stageBitmap:Bitmap = new Bitmap(stageBMD);
  view.renderer.queueSnapshot(stageBMD);

Тоже не работал... Возможно какие то настройки надо было посмотреть -Разбираться не стал из за П.1

Спасибо... что пытались...

ПОКА ВЫВОДЫ:
1. Возможно позже разберусь со starling - потенциально интересно и реально, но пока трудо-затратно!
2. Пока остается Papervision3D.


Часовой пояс GMT +4, время: 20:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.