IPB
ЛогинПароль:

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Изометрия 2,5, Игра в 2,5
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Доброе всем время суток. Очень нужна помощь. Хочу написать игру в изометрии. Проблема с расчетом глубины (дальности) объектов. http://animbook.mirmap.com/content/view/35/43/ вот тут есть нормальный альгоритм. Только он работает, если весь мир разделен на равные ромбики. А что делать если объект занимает например 3 на 2 клетки????
Итак. Требуется функция, которая зная расположение объектов (координаты i и j по клеточкам) и их ширину по i и ширину по j определяла бы какой из них находится дальше, а какой ближе.

Заранее спасиба!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Объект - материальная точк или имеет некоторую протяженность?
Если точка - проблем нет.
А если имеет протяженность, то ЧТО следует брать в качестве расстояния до него? Самую ближнюю точку? Самую дальнюю точку? Геометрический центр?
Самое интересное, что какой бы из вариантов мы ни выбрали, всегда найдется случай, при котором более удаленный объект ДОЛЖЕН при отображении перекрывать более близкий.

Отсюда напрашивается вывод, на самом деле тебе нужно совсем не то, что ты просишь. (т.е. функцию по заданному критерию написать можно, но она не поможет тебе в правильной отрисовке объектов)

Предлагаю разбивать объекты на фрагменты по одной клетке и уже эти фрагменты отображать в нужном порядке.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Поняятно, я так и думал, что так надо. Протсо если делать так, то будет много других проблем.
Каждый объект - это не точка, а объект, у которого есть ширина по i и ширана по j.
Но мы же визуально можем как то определить какой объект ближе, какой дальше. Нужна как раз эта функция по определению какой объект ближе, а какой дальше (сравние дальности двух объектов)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Возможно можно каким то образом определить каку точку принять за растояние до объекта?? может тоже есть зависимость?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


А если ограничить объекты по размеру... Типа ввести ограничение на максимальную ширину и длину объекта???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(kosyak @ 8.12.2009 13:20) *

Возможно можно каким то образом определить каку точку принять за растояние до объекта?? может тоже есть зависимость?

Нельзя.
Никак невозможно подобрать ЕДИНСТВЕННОЕ число для каждого объекта, чтобы по нему можно было определить порядок отрисовки.
Попытка использовать единственное расстояние для протяженного объекта в данной задаче - тупик.

Сообщение отредактировано: andriano -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


А возможно узнать эту точку в зависимости от расположения объектов? Т.е. эта точка разная для каждой пары объектов??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(kosyak @ 9.12.2009 0:01) *

А возможно узнать эту точку в зависимости от расположения объектов? Т.е. эта точка разная для каждой пары объектов??

Какая "эта" толчка?

Цитата
А возможно узнать эту точку в зависимости от расположения объектов? Т.е. эта точка разная для каждой пары объектов??

Ты тут приводил ссылку на какую-то статью. Я туда не заглядывал, но подозреваю, что там рассмотрено именно в условиях ограничения, что размер не превосходит одной клетки.

Сообщение отредактировано: andriano -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Ну точка относительно которой будет считаться глубина объекта. И эта точка будет определятся в зависимости от их расположения
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Ладно, я решил тоже отбросить эту идею. И разделить весь мир на тайлики. Тогда подскажите пожалуста, как большоей объект, который занимает много клеток разбить на тайлы??
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(kosyak @ 9.12.2009 10:26) *

Ну точка относительно которой будет считаться глубина объекта. И эта точка будет определятся в зависимости от их расположения
Можно ввести такую точку для каждой из "клеточек" объекта. Т.е. все возвращаетсмя на круги своя.

Представь, что у нас есть некоторая постройка, окруженная забором. Очевидно, построка должна загораживать заднюю часть забора, но передняя часть забора должна загораживать постройку. Очевидно, как бы мы не "крутили" точки, ничего путного мы не получим. Да и вообще, оба возможных порядка отрисовки этих двух объектов целиком приедут к неверному изображению.
Откуда вывод: сложные объекты НЕОБХОДИМО отображать по частям.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Гость @ 9.12.2009 12:35) *

Ладно, я решил тоже отбросить эту идею. И разделить весь мир на тайлики. Тогда подскажите пожалуста, как большоей объект, который занимает много клеток разбить на тайлы??

Не на тайлы, а на фрагменты.
Простейший случай - разрезать по границам клеток.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Тогда вопрос. Какие должны быть объекты чтобы их можно было отсортировать по глубине?? т.е. какие брать эти простейшие объекты?? Может подскажите где взять алгоритм?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






С забором согласен, что никак.. Но если принять, что один объект не может быть внутри другого. и все объекты только выпуклые.... можно ли тогда ?? и как?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Гость @ 9.12.2009 21:37) *
Тогда вопрос. Какие должны быть объекты чтобы их можно было отсортировать по глубине?? т.е. какие брать эти простейшие объекты??
Точечные (не имеющие протяженности). В общем случае - только так. И именно этот факт служит основой алгорима построения сцены с помощью Z-буфера.
Но существует масса частных случаев, когда можно оперировать протяженными объектами. Например, объекты, вписанные в ячейки сетки. Тогда за "ту самую точку" можно брать центр клетки.
Цитата
Может подскажите где взять алгоритм?
Алгоритм чего?
Цитата(Гость @ 9.12.2009 21:38) *
С забором согласен, что никак.. Но если принять, что один объект не может быть внутри другого. и все объекты только выпуклые.... можно ли тогда ?? и как?
Забор - лишь простейший и наиболее наглядный случай. Можно привести случаи 3 и более объектов.
Ты спрашиваешь, "можно ли?", но не заканчиваешь вопрос. Можно ли что? Собственно в этом я вижу основную проблему - ты не даешь себе труда сформулировать, чего же ты хочешь. А если бы попытался - сам бы нашел ответы на половину своих вопросов. А на оставшиеся - мы бы помогли. Ну или сообщили, что на данном этапе развития науки это невозможно ;).
Попытайся задавать конкретные вопросы. Поверь, то, что ты не дописываешь и держишь у себя в уме, никому кроме тебя не известно. Гораздо проще тебе написать в вопросе на 2-3 слова больше, чем мне в нескольких абзацах пытаться перебрать все варианты того, что ты мог иметь в виду.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Хорошо, постараюсь заново задать вопрос конкретно.

Имеется поле I x J клеток в изометрической проекции. Есть набор объектов (объекты только выпуклые, т.е. в матрице ландшафта выглядят как прямоугольники).

Пример объекта, который может быть:

0 0 0 0 0 0 0
0 0 0 * * 0 0
0 0 0 * * 0 0
0 0 0 * * 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0

0 - пусто, * - это объект



Пример объекта, которого быть НЕ может:
0 0 0 0 0 0 0
0 0 0 * * 0 0
0 0 0 * 0 0 0
0 0 0 * * 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0

Пример расположения объектов:

0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0 0 2 0
0 0 0 0 1 1 0 0 0 0 2 0
0 0 0 0 0 0 0 0 0 0 2 0
3 3 3 3 0 0 0 0 0 0 0 0
3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 4 4 4 0 0 0 0 0 0
0 0 0 4 4 4 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0

1 - первый объект, 2 - второй, 3 - третий, 4 - четвертый

Вопрос
Можно ли такие объекты отсортировать по глубине?? Можно ли однозначно сказать для 2ух объектов, кто из них ближе, а кто дальше??? и если можно, то как.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


1. Можно, если определить, что считать глубиной.
2. Можно, если определить, что такое "ближе" и "дальше" для протяженных объектов. В общем случае это можно сделать только в случае, когда ближайшая точка одного объекта находится дальше дельней точки другого. Во всех остальной существуют варианты.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Поставлю вопрос подругому. Можно ли отсортировать эти объекты по дальности? чтобы получился список объектов по порядку появления их на экране.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Можно уточнить: отсортировать по дальности или отсортировать по прядку отрисовки?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Мне нужно каким то образом расположить объекты на экране. т.е. я сначала должен положить на экран самые дальние объект, а потом те что ближе.... чтобы те что ближе перекрывали, те что дальше. получится массив объектов. и я их размещаю на экране в порядке этого массива:

for i:=0 to Кол-во_объектов -1 do
begin
нарисовать объект;
end

Разве не одно и тоже: сортировка по дальности и порядок отрисовки?? если нет, то чем они отличаются?

Сообщение отредактировано: kosyak -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.10.2020 10:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name