forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Изометрия. Что первым рендериться, что вторым и тд (http://forum.boolean.name/showthread.php?t=3413)

Earlind 20.05.2007 12:50

Изометрия. Что первым рендериться, что вторым и тд
 
Собственно, что-то у меня не совсем получается. Через поиск тоже ничего не нашёл, в общем, как это реализовать, чтобы всё быстро работало, не используя сетку, а используя только координаты объектов?

Зы: Вид сверху-сбоку, надо чтобы нужный объект был за нужным объектом а не на нём. И наоборот.

mr.DIMAS 20.05.2007 12:55

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Че то толком не понял вопрос, ты юзаешь DrawImage? Если да то если хош чтобы объект рендерился поверх других то DrawImage ставь перед всеми ресуемыми рисунками, и все должно работать.
зы. Толком не понял вопр.

johnk 20.05.2007 13:01

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Цитата:

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

Earlind 20.05.2007 13:03

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Это я знаю, я о другом. Как правильно их на сцене расставить, чтобы когда один объект ниже другого, он рендорится вторым, если выши, то первым, тоесть перекрывается другим. Вот с этим я не могу разобраться...

Вернее проблема с проверкой, что ниже, что выше, когда объектов много.

mr.DIMAS 20.05.2007 13:05

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Цитата:

Это я знаю, я о другом. Как правильно их на сцене расставить, чтобы когда один объект ниже другого, он рендорится вторым, если выши, то первым, тоесть перекрывается другим. Вот с этим я не могу разобраться...
проверять Y и Х и взависимости от них рендерить рисунок. помойму так

Earlind 20.05.2007 13:10

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Да проверять нужно только У..., но, с кодом я запутался. Не получается. По идеи надо создать список объктов по порядку стоящих по у и потом в зависимости от этого списка их отрисовывать, но этот список чтото мне никак не получается создать... тоесть написать код, который его создаёт.

mr.DIMAS 20.05.2007 13:15

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Список объектов? Юзаем типы.

alcoSHoLiK 20.05.2007 13:18

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Можо так сделать.
Ссылки на картинки всех объектов находятся в одном списке. У каждого эелемента списка есть свой приоритет. После просчета логики все объекты рисуются из списка в одном месте в порядке увеличения их приоритета.
Допустим, есть игрок, который должен быть то под домом, то перед домом, в зависимости от его положения на карте. Если считать, что координаты объекта задают одну из верхних вершин, то достаточно проверять такое условие:
Код:

if player.y + player.height < house.y + house.height then
    ; сделать приоритет player меньше, чтобы он рисовался раньше
else
    ; сделать приоритет player больше, чтобы он рисовался позже
end if

Тут house.height - это не высота картинки, а высота дома, которая задается программистом. Должно быть понятно.
Перед рендером сортируешь список и рисуешь.

Earlind 20.05.2007 13:39

Re: Изометрия. Что первым рендериться, что вторым и тд
 
2alcoSHoLiK

Натолкнуло на мысль сделать так:
Получить список объектов и потом проверять по очереди, если позиция 0 объекта по у меньше чем у 1, то менять их местами в списке, потом так между 1 и 2, 2 и 3 и тд... наконец-то заработало, спасибо.

Progger_Leo 20.05.2007 14:40

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Жалко, в блице нету команды задачи глубины рисования - было бы куда проще ИМХО

jimon 20.05.2007 19:10

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Progger_Leo
ну зделай себе систему слоев как в фотошопе ... тоже самое :)
и делать ее минут 5-20 (в зависимости от того чего хочеш)

Progger_Leo 22.05.2007 11:51

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Спс, пока не надо ;)

Черный крыс 21.06.2007 00:42

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Я хочу развить тему......

А если у тебя юниты 3-х мерные - как быть?

Суть проблеммы : Все 3Д юниты будут рендерятся за один проход функции RenderWorld() тоесть отдельному юниту никак нельзя поставить свою очередь рендера.....знаю - есть EntityOrder() - но эта функция перекалашматит анимированный обьект до неузнаваемости......А если зеленый и желтый обьекты попадут в кадр одновременно.....причем один За забором а другой ПЕРЕД забором......как тогда быть?

jimon 21.06.2007 01:05

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Diablo1909
если обьекты 3д, а забор 2д, то банально сделай забор 3д :)
смешаная техника особо не применяется :)

ps. или я чето не понял ?
устал просто

HolyDel 21.06.2007 01:10

Re: Изометрия. Что первым рендериться, что вторым и тд
 
на крайняк можно и в два прохода отрендерить.
сначала юниты за забором, потом забор,потом перед забором(конечно с вырубленной отчисткой екрана для камеры) (ессено если забор будет тока один - дальше хуже).
ЗЫ:
Цитата:

смешаная техника особо не применяется

Черный крыс 21.06.2007 01:21

Re: Изометрия. Что первым рендериться, что вторым и тд
 
А как же такие хиты как Commandos 2\3 ??? тама все движущиеся обьекты были в 3Д а фон - отрендеренные спрайты......как они добились этого?

alcoSHoLiK 21.06.2007 02:03

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Не знаю, можно ли так в блице. Сделай активной матрицу проекции. Тогда будет применима та же технология, что и с обычными спрайтами - что ближе к камере, то перекрывает объекты, которые дальше от камеры. Нужно будет менять местами z координаты объектов, когда они меняют порядок перекрывания.

Черный крыс 21.06.2007 02:31

Re: Изометрия. Что первым рендериться, что вторым и тд
 
алкоШолик - спасибо! Я тоже об этом подумал....и уже реализовал. правда с таким подходом есть кое-какие ограничения в геометрии обьекта.....! А так вроде выглядит ничего.....=)))

Но кажется я нашел где зарыта собака.....мне кажется в коммандос применена небольшая хитрость.....
Играя в сотый раз в коммандос-2 я замечал....что если герои заходят в помещения (а они как известно - полностью 3-х мерные) то при максимальном приближении камеры видно что обьекты тоже полностью 3-х мерные.....а когда выходишь на улицу (тут окружение 2-д) и если приблизишь камеру - то явно видно пикселявость персов и техники.... - это значит что все персы и техника - ....плоские..... - а если они плоские то отпадает вся вышеописанная проблемма..... - мне почему то так кажется что все герои на экране - не что иное - как банальный "рендер то текстур" с последующим наложением этой текстуры на плашку или прорисовкой этой текстуры в 2-д.....а сами 3-д герои "пляшут" где то за пределами игрового уровня предварительно направленной на них камеры под нужным углом.....тоесть они проигрывают все анимационные действия которые необходимы на данный момент (ходьба\стрельба\поворот) а камера фоткает этого перса (где то с разрешением 64*64 ) и отображает полученную картинку на экране в нужном месте......

Имеет ли этот метод право на жизнь? как сильно этот метод ударит по перфомансу???

johnk 21.06.2007 07:04

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Цитата:

как сильно этот метод ударит по перфомансу???
От рук зависит, имхо. А так, может это просто проекция? Зачем разрабам такой гемор? Если 2д -> 3д, то должен же быть заметен переход. Хотя б подтормозить немного должно, а хотя хз.

jimon 21.06.2007 10:57

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Diablo1909
а может ето уже все было заранее от рендерено ?

HolyDel 22.06.2007 02:43

Re: Изометрия. Что первым рендериться, что вторым и тд
 
Цитата:

Имеет ли этот метод право на жизнь? как сильно этот метод ударит по перфомансу???
думаю игра свеч не стоит.

Цитата:

а может ето уже все было заранее от рендерено ?
ага, я тоже так считаю.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot