![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2010
Сообщений: 57
|
Народ, кто может помочь решить проблему:
Рендерю модельку с несколькими текстурами при помощи нескольких drawTriangles, но as3 3d api не сортирует полигоны, которые должны рисоваться. Как были объявлены треугольники в модельке, так и рисует >.< Еффект, мягко говря, немного нереалистичный... Для сортировки полигонов использующих токо одну текстуру запихивал все в массив и методом sortOn сортировал по свойству z и все замечательно, но для полигонов у которых разные текстуры это не прокатит, тк drawTriangles принимает токо одну заливку =\ Как сортировать полигоны? |
|
|||||
|
Почитайте про GraphicsPath - может, наведет на нужные мысли.
А вообще - я бы сделал несколько Shape, у каждой из которых будет своя текстура для вывода. Ну и, соответственно, после сортировки полигонов учитывал их текстуру - то есть, если текстура данного полигона отличается от текстуры предыдущего, то данный полигон рисуем в другой шейп. Если нет - то в тот же. Тут как раз и пригодится IGraphicsData
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 57
|
неплохо))) еще и с "освещением" ))
но, попытаюсь сделать так: Цитата:
GraphicsBitmapFill-GraphicsTrianglePath-GraphicsEndFill Если другой материал следующего полигона, значит забиваю в новую тройку fill, tris, endfill... потом drawGraphicsData... =\ пошел думать ![]() (хм, думаю, если один полигон будет налезать на другой, один из них будет полностью покрыт верхним) |
|
|||||
|
Цитата:
А те. вы сами решили надумать, дело в том что я во вложении прикрепил архив зип, он называется blender.zip там так и сделано, если не смотрели архив то вот кусок кода drawTriangles это и есть GraphicsTrianglePath, только лучше, тк его не надо создавать. Не если сами будете думать, то что-ж.
__________________
Гоночка |
|
|||||
|
Можно склеивать текстуры на одной битмапе, и рисовать треугольники, заливая ей.
Т.е. есть например слой - имитация затенения по фонгу, второй слой - сама текстура. 1. copyPixels основной текстуры в общую битмап-дату 2. расчет освещения, отрисовка всего этого добра на shape в координатах текстуры, 3. отрисовка shape на общую битмапу 4. рисование треугольников в экранных координатах с заливкой общей битмапой По скорости почти тоже самое должно получиться - если бы треугольники все стразу рисовались - рендерилось бы такое же количество треугольников, тололько сразу а не в 2 этапа. Бонус - отрисовка текстуры на одной битмапе дает более гибкие настройки по склейке слоев Последний раз редактировалось expl; 30.09.2010 в 23:41. |
|
|||||
|
Цитата:
Кстати, deamoK, рекомендую Вам использовать класс Vector и собственную функцию сортировки. Ибо так оно побыстрее =)
__________________
...вселенская грусть Последний раз редактировалось gloomyBrain; 30.09.2010 в 23:45. |
|
|||||
|
Можно рендерить со многими текстурами, ну к примеру с двумя. Делаете битмап в который отрисовуете первую текстуру а с права вторую. Получится битмап с двумя текстурами, с лева одна справа другая, не знаю какая у вас цель. Однако подозреваю, к примеру, отрисовать свет и нанести затем какой-то рисунок на модельку.
Ну так с рисуном проблем нет, он делается в 3Д редакторе и у негу естественно будут UW координаты, при отрисовке их можно Теперь суем в массив треугольников на торисовку сначала треугольник с первой половины битмапа, а затем со второй, так они наложаться один на другой, естественно он должен быть с прозрачностью.
__________________
Гоночка |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 57
|
Цитата:
Vector токо и использую Собственную функцию сортировки я и хочу сделать, только алгоритм мне подскажите =\ По сути, мой просмотрщик моделек работает, за исключением сортировки... Переворошил away3dlite, там как-раз и рисуют несколько моделей с разными материалами, но после неск часов изучения той функции (sortFaces в BasicRender) уже начали кипеть мозги, там зло какое-то. Но он работает, так что придется еще его поизучать, ну лучше кончено просто знать алгоритм Добавлено через 3 минуты Цель: сделать просмотрщик моделек из квачи, дума, вобщем MD5Mesh моделек. Просто для себя, justfun, может пригодится, кто знает Хочу еще прикрутить MD5Anim для анимации, но сначала было бы неплохо с норм отображением разобраться =\ |
|
|||||
|
Цитата:
lvr.push(vr[j], vr[j + 1], vr[j + 2], vr[j + 3], vr[j + 4], vr[j + 5]); lvr.push(vr[j], vr[j + 1], vr[j + 2], vr[j + 3], vr[j + 4], vr[j + 5]); luv.push(0.6, normS[k], 1, normS[k], 0.6, normS[k]); luv.push(uv[j] /2, uv[j + 1], uv[j + 2] /2, uv[j + 3], uv[j + 4] /2, uv[j + 5]); 100 лет не открывал свой самодельный 3Д двиг и вот открыл 5мин и готово 2 текстуры на одном объекте, на заднем фоне их видно, куб можно крутить слайдерами, этакий псевдо свет получился.
__________________
Гоночка |
|
|||||
|
Цитата:
на счет изврата не знаю - по крайней мере в одной из версий Papervision так делали Однако, да, есть более объективные недостатки такого подхода: - если текстура зеркалится (т.е. одна и та же половина человека используется для одной и другой половины модели) - то освещение корректно не наложишь - придется дублировать текстуру - если объект состоит из нескольких и они динамически меняются - придется менять размер текстуры для каждой комбинации объектов, и искать место для нескольких объектов на одной общей текстуре, т.е. метод подходит только для неизменного количества объектов. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:22. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|