Russian Qt Forum

Qt => OpenGL => Тема начата: DistinctVision от Август 28, 2016, 15:56



Название: Трехмерный движок для qt
Отправлено: DistinctVision от Август 28, 2016, 15:56
Добрый день.
Делал трехмерный движок для qt, может кому здесь пригодится:
https://github.com/DistinctVision/QScrollEngine (https://github.com/DistinctVision/QScrollEngine)
К слову есть еще один велосипед, используемый совместно с тем велосипедом:
https://github.com/DistinctVision/PhysicsEngine (https://github.com/DistinctVision/PhysicsEngine)


Название: Re: Трехмерный движок для qt
Отправлено: __Heaven__ от Август 29, 2016, 09:33
Вас не смущает 178 предупреждений конвертации size_t в int?


Название: Re: Трехмерный движок для qt
Отправлено: DistinctVision от Август 29, 2016, 17:33
Смущало бы, если бы они у меня были. Разные компиляторы, по разному на все реагируют.
Видимо когда менял код, что то забыл


Название: Re: Трехмерный движок для qt
Отправлено: __Heaven__ от Август 29, 2016, 17:59
Какой у вас компилятор? Версия?


Название: Re: Трехмерный движок для qt
Отправлено: DistinctVision от Август 29, 2016, 18:07
Qt 5.6,1, msvc 2013


Название: Re: Трехмерный движок для qt
Отправлено: Day от Август 29, 2016, 23:35
Вас не смущает 178 предупреждений конвертации size_t в int?
Там какой-то простой флажок нужно выставить. Типа "не предупреждать о потере значности при приведении типов" size_t = unsigned int. Вряд ли размер чего-то в нормальном проекте превысит int-значность. :)


Название: Re: Трехмерный движок для qt
Отправлено: __Heaven__ от Август 30, 2016, 07:30
Согласен, что int значность не превысится. Но такой флажок, как мне известно будет игнорировать и потери для переменных меньшей разрядности.
Если использовать этот код в ином проекте (как это и предполагается), то разработчик скорее всего не захочет отключать такие предупреждения. По сути тут всего лишь добавить static_cast


Название: Re: Трехмерный движок для qt
Отправлено: kamre от Август 30, 2016, 07:40
Смущало бы, если бы они у меня были.
Попробуйте собрать 64-битную версию, обычно такие ошибки в MSVC именно на 64-битной сборке вылезают.


Название: Re: Трехмерный движок для qt
Отправлено: __Heaven__ от Август 30, 2016, 09:45
Там даже встречаются предупреждения size_t => qint16
У меня компиль msvc2015 x64


Название: Re: Трехмерный движок для qt
Отправлено: __Heaven__ от Август 30, 2016, 10:02
Цитировать
Isosurfaces (marching cubes)
А что это?


Название: Re: Трехмерный движок для qt
Отправлено: DistinctVision от Август 30, 2016, 12:14
https://ru.wikipedia.org/wiki/Marching_cubes
Грубо говоря, это визуализация трехмерной функции.
На github есть гифка, непонятный меняющийся объект слева, это оно и есть.


Название: Re: Трехмерный движок для qt
Отправлено: Igors от Август 30, 2016, 12:49
Чуть подробнее. Напр как построить такую бяку (аттач)? Запускается полигонайзер (marching cubes) который зовет Ваш калбэк (density function). Калбэк получает координаты точки в пр-ве и должен вернуть -1 если точка "снаружи" или +1 если "внутри". Упрощенный пример
Код
C++ (Qt)
// Исходные данные
QVector<QVector3D> cntr;  // точки в пр-ве
float radius;               // один радиус для всеx
 
float MyDensityFunction( const QVector3D & pos )
{
 for (int i = 0; i < cntr.size(); ++i)
  if ((pos - cntr[i]).length() < radius)
   return 1;
 
 return -1;
}
Меняя density function можно получать очень причудливые формы. В общем - классика


Название: Re: Трехмерный движок для qt
Отправлено: __Heaven__ от Август 30, 2016, 14:17
А это интересненько. Только мне marching tetrahedrons больше подойдёт. Но, в далёком будущем.