Вопрос по созданию 3d демо-приложения flash
Здравствуйте. Решил сделать небольшую демку на флеш.
i68.tinypic.com/2dk086h.jpg
i63.tinypic.com/240xg61.jpg
i63.tinypic.com/k9w45c.jpg
1. Идея — что-то вроде rpg — Сделано
2. 3d модели — Выполнено на 60%
3. Текстуры — 0%, их на потом оставил
4. Создание приложения — Пока только немного набросал, инициалиацию 3d и немного загрузчика — Сделано на 30%
5. Материалы — тут вопрос — как на flash away3d или Stage3d добавить карту яркости текстуры, для окошек дома, и фонариков, для вечера или ночи? Вроде какого ни будь Self-Illumination Material или возможно шейдерами agal, или pixel bender? Может есть где-то примеры реализации подобных задач?
20 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівЕсли очень уж хочется поизвращаться, то можно и на голом AGAL набросать. Только, думаю, нет в этом смысла. По любому в движках должно быть. Только ходить надо на специализированные форумы, думаю
С agal не могу разобраться, на нем было бы тоже интересно, когда есть к примеру модель, к ней uv карта с текстурами и с этой же uv картой картинка в градациях серого как бы это шейдером сделать. Или хотя бы общие примеры понять как шейдейр работает, как передать с изображения с градациями серого в шейдер значение яркости, совместить с цветом текстуры и вывести на экран.
в инете все есть. Примеров масса. Когда-то игрался с ним, особых трудностей с поиском инфы не было, при том что10-й плеер (в нем же вроде 3д добавили?) был самой последней версией, то есть инфы было намного меньше чем сейчас
Вроде бы в 10. Попробую поискать нужные примеры, нашел описание команд и регистров.
Примерно разобрался, есть регистры, есть команды для работы с регистрами, а описаний с примерами нашел мало, по интересующей задаче в частности и по ним все выглядит запутанным.
Сегодня чуть позже попробую по найденным примерам разобраться.
Агал — та ещё кака. По сути малоюзабельный ассемблер, приходится какие-то компиляторы юзать и особенности иметь.
Поразбираться с шейдерами — я бы рекомендовал OpenGL. Юнити тоже можно.
Я не могу разобраться в том, как в шейдер передаются входящие данные. И как туда передать битмап в градациях серого для изменения яркости на выходе. Opengl и Unity3d интересно было бы поучить, dx11, — не тянет комп. Хотя я на скринах видел, всевозможные панельки свойств, нод-редакторы, выглядит очень удобно и привлекательно.
По поводу компиляторов интересно, с ними не работал но тоже почитаю о них, как там с ними дела обстоят.
Достаточно паршиво, по-моему, как и вообще с 3D на флеше. Если вы уже знакомы с хардварным 3D API, представляете аналоги на огл/директе/юнити, то вы можете достаточно эффективно использовать это и на флеше. API на самом деле критично не отличается, у агала только несколько беднее из-за того, что агал и на мобилах работает и софтверный какой-то фоллбек есть и адобы — раздолбаи. Зато обёртка во флеш на самом деле простая и удобная. И писать на ассемблере агала — это полный пц по сравнению с няшным glsl. Потому у 3д движков на флеше какие-то свои компилеры и особенности использования и надо очень интенсивно изучать именно конкретный движок. При том, что ВСЕ 3д движки на флеше мягко говоря не идеальны и больше подходят для опытных, кто знаком с хардварным API.
А вот хардварное API и шейдеры я бы советовал учить по OpenGL. Достаточно медленно, нативный гемор с библиотеками, но learning curve достаточно пологая и знания фундаментальные.
Немного знаком с хардварным 3d. В agal не совсем понятно, почему для входящих данных для фрагментного шейдера испольуется регистр вершинного. Пока не эскпериментировал с agal, но понял что его используют для stage3d, попробую настроить для 11 плеера среду разработки. Посмотрел, попробовал pixel bender, редактор удобный, с превью. Оказалось материалы away3d реализованы шейдерами pixel bender.
Opengl интересно было бы учить, но я не знаю, есть ли какой-то редактор шейдеров с превью для opengl 1.3.
Еще была как-то задумка, для шейдеров сделать небольшой редактор.
Pixel Bender пришёл из до агаловских времён пришёл и скоре всего не из хардварного апи. Для
думаю есть какие-то редакторы, и написать не проблема на самом деле.По моему это надо копать в сторону HDRI освещения. www.derschmale.com/...-lighting-in-fp10-away3d
Хотя на мой взгляд разницу дня и ночи можно сделать и одним источником света.
да. пример этот видел. но для общего освещения, а интересует как в вечернее или ночное время сделать материал у поверхностей окошек у домика и фонариков более ярким чем материалы у других объектов.
Можно попробовать флешевый фильтр глоу, хотя память скушает.
var lightMat:ColorMaterial = new ColorMaterial(0xffffff); lightMesh = new RegularPolygon( { material:lightMat, radius:100, sides:32 } ); lightMesh.ownCanvas = true; lightMesh.filters = [ new GlowFilter(0xffffbe, 1, 6, 6, 3, 3, false, false), new GlowFilter(0xffffbe, 1, 6, 6, 3, 3, true, false) ];Спасибо, попробую такой вариант, поробую объеденить в мультиматериале с обычным материалом png.
У флеша довольно тормозная VM, потому будут ОЧЕНЬ жёсткие ограничения по полигонам, например, крайне сложно влезть, особенно если такие вопросы возникают. Не юзал авей, но emissiveMap — не то?
Подумайте таки о юнити, если это для игры, а не просто для сцены.
Да, есть ограничения, но сцена не слишком большая, вернее очень маленькая.
Unity3d интересно было бы учить, у меня не запускается этот редактор.
не нашел описания как это реализовать для stage3d или какого-то из движков.причем тут ВМ-ка к 3D ?
Начиная с появления Stage3D/Molehill вся геометрия рендерится внутри GPU силами графического интерфейса (opengl/directx). Скорость VM и байт кода (если аккуратно написан и быстр) на нем сказывается мало.