Войти
ПрограммированиеФорумГрафика

Все об устройстве и отрисовке сцены

Страницы: 1 2 310 11 Следующая »
#0
0:23, 29 апр. 2016

Как в 3d движке правльно и удобно сделать класс для отрисовки и управления сценой?


#1
0:30, 29 апр. 2016

Как жить? Как устроена человеческая жизнь?
Как правильно все это сделать?(рождение, учение, отдых, работа и т.д.)
Прошу помочь.

#2
7:26, 29 апр. 2016

bool
Ну не на столько же)

#3
7:38, 29 апр. 2016

Vlad2001_MFS
> Ну не на столько же)
Тут где-то была тема про движки с открытым исходным кодом. Вот можешь там поизучать.

#4
9:16, 29 апр. 2016

Vlad2001_MFS
управления на ивентах, обрабатывается в ином потоке. Но так не совсем удобно. Отрисовка обычная.

#5
9:49, 29 апр. 2016

Vlad2001_MFS
Сценой управляет граф сцены - он обеспечивает иерархию и привязку одних узлов сцены к другим. Отрисовкой должен заниматься один класс в котором в методе Render описана полная процедура рендеринга. Не нужно городить свои абстракции для DirectX и OpenGL. Просто делай прямолинейный рендер в одном классе, который будет использовать граф сцены для получения нужной информации (буферы, матрицы и т.п.). И никогда не делай метод Render в классе узла сцены. В общем щас начнется кококо, что абстракция дает возможность менять рендер на лету и прочая ересь.

#6
9:55, 29 апр. 2016

mr.DIMAS
Ну абстракция мне не нужна. То, что рендер надо делать общий, а не для каждого объекта свой знаю. Меня больше интересует как работать с игровыми объектами: создавать или добавлять их к сцене, удалять и т.д.
Я как-то делал такой вариант, но меня он не очень устраивает(очень сокращенный класс сцены):

+ Показать
#7
10:09, 29 апр. 2016

Нужен граф сцены.

Тоесть каждый узел сцены будет иметь примерно такой вид.

class SceneNode {
public:
  Vector3 position;
  Vector3 scale;
  Quaternion rotation;
  SceneNode * parent;
  vector<SceneNode*> children;
  ...
  SceneNode * next;
  SceneNode * prev;
}

next, prev - используются для создания двусвязного списка узлов сцены.

#8
10:12, 29 апр. 2016

mr.DIMAS
> что абстракция дает возможность менять рендер на лету

Можно узнать, кому такое потребовалось ?

#9
10:14, 29 апр. 2016

Всяким "крутым" движкописателям, не раз таких встречал

#10
10:19, 29 апр. 2016

mr.DIMAS
Спасибо! А что из себя будет представлять граф сцены? И как понять двусвязный список узлов сцены?
Знаю, что слишком много вопросов, но я еще новичок, поэтому многого не знаю. А узнать хочется)

#11
10:29, 29 апр. 2016

mr.DIMAS
Проход по связанному списку не очень быстрая операция. Лучше в обычный массив всё положить.

#12
10:49, 29 апр. 2016

думаю, что узлам вообще лучше ничего не знать о том, что у них есть "собратья". некий движок должен разбирать сценграф и вызывать исполнение отдельных модулей, привязанных к узлам, в заданной последовательности

#13
10:51, 29 апр. 2016

mr.DIMAS
> Vector3 position;
> Vector3 scale;
> Quaternion rotation;

class Transform {
  Vector3 position;
  Vector3 scale;
  Quaternion rotation;
...
};

#14
10:58, 29 апр. 2016

Vlad2001_MFS
Самый лучший вариант.
Это тебе самому сделать в 3д максе простую 3д сцену (скажем 40 разных моделей, с разными материалами), в которой будут повторяющиеся 3д модели.
И самому разработать алгоритм и классы для вывода 3д сцены.
Так ты сам научишься видить и понимать что и в какой ситуации будет лучше.

Практика и еще раз практика.

Универсального класса нет.
Как правило один класс расширяют\дополняю другим.
Потому в разных движках свои форматы 3д моделей и свой формат уровней.

Страницы: 1 2 310 11 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.