purebasic.info

PureBasic forum
Текущее время: Ср апр 25, 2018 1:47 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Пн авг 12, 2013 2:08 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Чт авг 01, 2013 7:07 am
Сообщений: 22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Привет всем!

Такой вопрос: каким методом организовать динамическую подгрузку частей Entity вокруг камеры?

Исходные таковы: мир пока маленький 1000х1000, туман ограничивает вид вокруг на 200х200. Нужно динамически подгружать окружающий камеру Entity, состоящий из полигонов по 4 вертекса.
То есть, в какую сторону движется камера, в той стороне и происходит подгрузка по одному ряду, а сзади убирается по одному ряду. Если камера движется по диагонали, то подгрузка осуществляется спереди и сбоку.

Принцип я представляю. Но не понимаю как это реализовать на PB.
Спасибо за ответы.

_________________
PB 5.11; WinXP 32; GForce GT240; 2Gb


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 4:16 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн мар 02, 2009 3:46 pm
Сообщений: 201
Откуда: РФ Тверская область
Благодарил (а): 4 раз.
Поблагодарили: 8 раз.
Пункты репутации: 0
Думаю через двумерный массив можно сделать. в массиве хранить нечто вроде ID объектов. При движении камеры исходя из ее координат грузить ближайшие 9 квадратов, как только камера переходит по координатам на соседний квадрат - грузить другие 9 квадратов, беря его за центр.
пысы: скорее всего это не самый оптимальный способ, но на мой взгляд это простейший.

_________________
Жизнь коротка. Потерпи немножко.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 4:20 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн мар 02, 2009 3:46 pm
Сообщений: 201
Откуда: РФ Тверская область
Благодарил (а): 4 раз.
Поблагодарили: 8 раз.
Пункты репутации: 0
Ну или еще вариант, если объектов не очень много, можно пользовать функцию, определяющую расстояние до каждого объекта в цикле и сравнивать полученное число с нужным радиусом. Если меньшеравно, то отрисовываем. Но для этого надо объекты в список собрать.

_________________
Жизнь коротка. Потерпи немножко.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 6:53 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Чт авг 01, 2013 7:07 am
Сообщений: 22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
ALEXix писал(а):
Думаю через двумерный массив можно сделать. в массиве хранить нечто вроде ID объектов. При движении камеры исходя из ее координат грузить ближайшие 9 квадратов, как только камера переходит по координатам на соседний квадрат - грузить другие 9 квадратов, беря его за центр.
пысы: скорее всего это не самый оптимальный способ, но на мой взгляд это простейший.

Согласен. Это уже делается. Но я чуть о другом.
Функция Terrain в PB реализована в высшей мере неаккуратно. Terrain изменяется по ходу движения камеры и бывает, что края одного полигона не совпадают с краями соседнего. В этом смысле, я хочу пользовать вместо Terrain собственный Mesh, составленный из полигонов. Так вот, полигоны надо подгружать динамически по ходу движения камеры.
А с реализацией этой задумки проблема.

_________________
PB 5.11; WinXP 32; GForce GT240; 2Gb


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 7:19 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2270
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Ландшафт чуть по другому делают, он детализируются ближе к игроку, меняется "на глазах" у игрока. Это наглядно видно в Battlefield 2 например.
Тем не менее, самая простая реализация твоей задумки — проверка расстояния от каждой Entity до координат камеры.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 7:27 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Чт авг 01, 2013 7:07 am
Сообщений: 22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
qpAHToMAS писал(а):
Ландшафт чуть по другому делают, он детализируются ближе к игроку, меняется "на глазах" у игрока.

Нет, это работает мип-маппинг. А подгрузка полигонов ландшафта - совсем другое.

qpAHToMAS писал(а):
Тем не менее, самая простая реализация твоей задумки — проверка расстояния от каждой Entity до координат камеры.

Подгрузку объектов мы уже делаем. Но сейчас меня интересует подгрузка ландшафта впереди камеры и уничтожение ранее созданного ландшафта сзади камеры.
Было бы очень интересно решить эту проблему.

_________________
PB 5.11; WinXP 32; GForce GT240; 2Gb


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 7:39 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн мар 02, 2009 3:46 pm
Сообщений: 201
Откуда: РФ Тверская область
Благодарил (а): 4 раз.
Поблагодарили: 8 раз.
Пункты репутации: 0
Можно я думаю использовать массив высот. Под камерой есть фиксированного размера меш, перемещающийся вместе с камерой. Так же имеется массив данных - высоты, как только камера переезжает расстояние равное размеру квадрата сетки, вместе с ним "переезжает" и меш, используя данные для отрисовки по высоте из источника данных.

_________________
Жизнь коротка. Потерпи немножко.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 7:42 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн мар 02, 2009 3:46 pm
Сообщений: 201
Откуда: РФ Тверская область
Благодарил (а): 4 раз.
Поблагодарили: 8 раз.
Пункты репутации: 0
"дорисовывать" и удалять к мешу трианглы динамически, я полагаю будет занимать больше времени, нежели выборка из БД. (хотя не уверен)

_________________
Жизнь коротка. Потерпи немножко.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 7:45 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Чт авг 01, 2013 7:07 am
Сообщений: 22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
ALEXix писал(а):
Можно я думаю использовать массив высот. Под камерой есть фиксированного размера меш, перемещающийся вместе с камерой. Так же имеется массив данных - высоты, как только камера переезжает расстояние равное размеру квадрата сетки, вместе с ним "переезжает" и меш, используя данные для отрисовки по высоте из источника данных.

Спасибо. Но этот метод не годится, т.к. необходимо постоянно подгружать огромный массив данных, т.к. туман ограничивает облать в 200 метров, а это 200х200 текстурированных полигонов с высотой, считанной из массива данных. Камера тормозит на подгрузке. Я уже пробовал.
Тут суть в том, что подгружается только необходимый маленький массив - всего 200 полигонов с одной стороны и 200 с другой. И столько же уничтожается сзади. Это 800 полигонов всего, вместо 40000 по методу постоянного создания.

_________________
PB 5.11; WinXP 32; GForce GT240; 2Gb


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 7:47 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Чт авг 01, 2013 7:07 am
Сообщений: 22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
ALEXix писал(а):
"дорисовывать" и удалять к мешу трианглы динамически, я полагаю будет занимать больше времени, нежели выборка из БД. (хотя не уверен)

Я пробовал делать это рандомно. Камера даже не замечает создания 400 полигонов. :)

_________________
PB 5.11; WinXP 32; GForce GT240; 2Gb


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 7:50 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
А может тогда просто подгружать полигоны вокруг текущей координаты камеры?

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 8:19 pm 
Не в сети
ассистент
Аватар пользователя

Зарегистрирован: Чт авг 01, 2013 7:07 am
Сообщений: 22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Никита Однороб писал(а):
А может тогда просто подгружать полигоны вокруг текущей координаты камеры?

Ну да, об этом мы и говорим.

_________________
PB 5.11; WinXP 32; GForce GT240; 2Gb


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 8:54 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Ср май 08, 2013 10:51 am
Сообщений: 621
Откуда: Новотроицк
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
stalker
Цитата:
Согласен. Это уже делается. Но я чуть о другом.
Функция Terrain в PB реализована в высшей мере неаккуратно. Terrain изменяется по ходу движения камеры и бывает, что края одного полигона не совпадают с краями соседнего. В этом смысле, я хочу пользовать вместо Terrain собственный Mesh, составленный из полигонов. Так вот, полигоны надо подгружать динамически по ходу движения камеры.
А с реализацией этой задумки проблема.
а может оно не надо?возможно просто терраниум со статичными отрисованными объектами ,а потом уже добавлять некоторыми динамичными

ну что ты думаешь? ищешь х и у персонажа изагружаешь вокруг него например 200х200,как только кордината меняется вычисляешь положение новой

_________________
Порядок необходим глупцам, гений же властвует над хаосом(А.Эйнштейн ©)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 12, 2013 8:58 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11108
Благодарил (а): 4 раз.
Поблагодарили: 395 раз.
Владислав писал(а):
загружаешь вокруг него например 200х200
stalker писал(а):
облать в 200 метров, а это 200х200 текстурированных полигонов с высотой, считанной из массива данных. Камера тормозит на подгрузке. Я уже пробовал.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 13, 2013 12:11 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн мар 02, 2009 3:46 pm
Сообщений: 201
Откуда: РФ Тверская область
Благодарил (а): 4 раз.
Поблагодарили: 8 раз.
Пункты репутации: 0
просто подгружать не получится, если их не склеивать, могут быть косячки на границах и будет избыточность в виде вершин с одинаковыми координатами. Надо пользовать индексный буфер.

_________________
Жизнь коротка. Потерпи немножко.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB