Войти
ФлеймФорумПроЭкты

3D редактор (3 стр)

Страницы: 1 2 3 4 513 Следующая »
#30
13:50, 7 мар. 2020

3dhater
> прогрессбар


#31
1:11, 8 мар. 2020

Ортографические вьюпорты.

Обнаружил проблему в функции screenToWorld (координата курсора в 3D координату). Если камера строго смотрит вниз или вверх (или ещё как под прямым углом) то результат не предсказуемый. Так как камеры летают на MMB на основе вектора созданной screenToWorld, то пришлось указать угол камеры не, грубо говоря, 90.градусов, а 90.5... Если крутить камеру то можно поймать удачу и нарваться на данный угол. Я не сделал обработку данной проблемы.

Моделька слишком тёмная в ортографических вьюпортах. Не знаю  в чём причина. Может быть нужно просто сделать источник света (начало вектора) позицией камеры...

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

#32
1:55, 8 мар. 2020

3dhater
> Если камера строго смотрит вниз или вверх (или ещё как под прямым углом) то
> результат не предсказуемый.
сделай камеру на кватернионе. )

#33
11:05, 8 мар. 2020

programina
> сделай камеру на кватернионе. )
она уже на кватернионе

проблема в

auto P = camera->getProjectionMatrix();
auto V = camera->getViewMatrix();
auto PV = P * V;
PV.invert();

kkVector4 coords;
coords.KK_X = (2.0f * ((float)(point.x) / (rc.z - rc.x))) - 1.0f;
coords.KK_Y = 1.0f  - (2.0f * ((float)(point.y) / (rc.w - rc.y)));
coords.KK_Z = Z;
coords.KK_W = 1.0;

v = math::mul( coords, PV );
      
v.KK_W = 1.0f / v.KK_W;
v.KK_X *= v.KK_W;
v.KK_Y *= v.KK_W;
v.KK_Z *= v.KK_W;

хотя быть может нужно просто ловить это значение которое всё ломает, и отправлять позицию камеры.

#34
12:28, 8 мар. 2020

3dhater
> проблема в
во вьюматрикс (lookAt) обычно используется up вектор, вектор относительно которого надо вращаться.
Это up вектор обычно указывает направление верха ( у меня например vec3(0,0,1) )
вот например как это выглядит с использованием GLM

sceviewmatrix  = glm::lookAt(campos, camtgt, camup);
Когда вектор взгляда совпадает с ним, тогда происходит сбой. Наверно надо в-общем вращать всю систему.
#35
(Правка: 16:18) 15:39, 8 мар. 2020

programina
cam_up не нужен, если ты вращаешь мышой по горизонтали вокруг определенного вектора то и вращай, а какой там вверх у матрицы камеры это её дело.

void Camera::setLookAt(const Point3& _pos, const Point3& _target){
  if (_pos == _target)
    return;

  pos = _pos;
  dir = _target - pos;
  dir.normalize();

  if(dir.z > 0.99999f || dir.z < -0.99999f)
    strafe = Point3(1.0, 0.0f, 0.0f);
  else
    strafe = dir.cross(Point3(0.0f, 0.0f, 1.0f)).getNormal();

  up = strafe.cross(dir);
}
3dhater
фрустум строить умеешь? Построй из него 8 (5) точек и дальше элементарно:
// F/N - far/near, U/D - up/down, P - position
Point3 Frustum::getFarPoint(float _x, float _y)
{
  return points[_PFLEFTU]+((points[_PFRIGHTU] - points[_PFLEFTU])*_x 
                          +(points[_PFLEFTD] - points[_PFLEFTU])*_y);
}

Point3 Frustum::getVecInWorldSpace(float _x, float _y)
{
  // для параллельного проецирования вместо  - points[_PCAMERAPOS]
  // делаешь аналогичное выражение как для точек с дальней плоскостью
  // но сама функция не имеет смысла для нее, так как
  // этот вектор будет совпадать с вектором взгляда камеры.
  return (getFarPoint(_x, _y) - points[_PCAMERAPOS]).getNormal();
}
#36
22:49, 8 мар. 2020

Aroch
> фрустум строить умеешь? Построй из него 8 (5) точек и дальше элементарно:
Спасибо, буду пробовать.

#37
(Правка: 23:25) 22:53, 8 мар. 2020
コメント 2020-03-08 224430 | 3D редактор

Подправил меню, и ещё всякие мелочи.
С вьюпортом пока не закончил... есть коекакие баги.
コメント 2020-03-08 225525 | 3D редактор


Пофиксил. Вьюпорты нужно обновлять рекурсивно, начиная с древнейшего предка.
#38
0:05, 9 мар. 2020

Из-за особенности показа прогрессбара теперь можно увидеть как загружается модель.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#39
0:59, 9 мар. 2020

3dhater
> Из-за особенности показа прогрессбара теперь можно увидеть как загружается
> модель.
имеет смысл с дискеты разве что :)

#40
20:35, 9 мар. 2020
コメント 2020-03-09 201751 | 3D редактор

Добавил настройку горячих клавиш. Работает примерно как в максе. Сохранение в XML. Нет никаких предупреждений если сочетание уже занято.


Надоел вьюпорт. Нужно добавить опцию для сброса, написать где-нибудь какой вьюпорт активен (top, front и т.д.), нарисовать в углу разноцветные линии и добавить развёртывание выбранного вьюпорта на всю область (как в максе alt+w).

#41
23:30, 9 мар. 2020

3dhater
> Из-за особенности показа прогрессбара теперь можно увидеть как загружается
> модель.
Теперь нельзя.

3dhater
> нарисовать в углу разноцветные линии
сделал

3dhater
> написать где-нибудь какой вьюпорт активен (top, front и т.д.)
сделал

#42
0:31, 10 мар. 2020

3dhater
> www.bandicam.com
есть же бесплатные программы, которые позволяют записывать видео из окна программы без всяких вотермарков-логотипов.
Например я записываю c помощью MSI Afterburner, а потом сжимаю полученное видео в Handbrake, и загружаю на imgur

#43
1:23, 10 мар. 2020

programina
> есть же бесплатные программы, которые позволяют записывать видео из окна
> программы без всяких вотермарков-логотипов.
"www.bandicam.com" не критично. Главное что не 1XBet или что-то подобное.

programina
> сжимаю полученное видео в Handbrake, и загружаю на imgur
Я использую ffmpeg через cmd.exe

imgur надо попробовать.

#44
2:11, 10 мар. 2020

3dhater
> "www.bandicam.com" не критично
ага, как страшный сон.
Тебе кажется не критичным, а посетителям кажется, что ты настолько их не уважаешь, что пытаешься им скормить рекламу какого-то сайта.

Страницы: 1 2 3 4 513 Следующая »
ФлеймФорумПроЭкты