Как преобразовать вершины Z-Up в вершины Y-Up, не нарушая порядок намотки меша. (DX9c)

У меня есть движок рендеринга C++ DirectX9 с Y в качестве оси вверх. Когда я импортирую модель, которая была смоделирована с Z в качестве оси вверх, я просто меняю значения Y и Z всех вершин модели, чтобы модель была правильно ориентирована. Это работает хорошо, за исключением того факта, что порядок намотки большинства (не всех) ячеек неправильный.

Поскольку я рендерил модель с включенным отбраковкой лицевой стороны, внешняя оболочка моделей не видна, а внутренние оболочки видны.

Я перевернул индексы в попытке исправить проблему, и она работает нормально... но, поскольку не все модели страдают от одного и того же неправильного порядка намотки, я сижу с половиной моделей с правильными порядками намотки, а другая половина с неправильными порядками намотки.

Поэтому я предполагаю, что мой вопрос заключается в следующем: как правильно преобразовать 3d-модель с Z в качестве оси вверх в 3d-модель с Y в качестве оси вверх, не нарушая при этом порядок намотки.

Заранее спасибо.

1 ответ

Порядок намотки неверен, если вы не сохраняете управляемость своей системы координат. Как правило, (x, y, z) представляет собой ПРАВИЛЬНУЮ систему координат: то есть, если вы направите свой большой палец правой руки в направлении +x и указательный палец правой руки в направлении +y, естественно скручивая остальные три пальца, они должен указывать в направлении +z. Возможно, вы перевернули свои координаты таким образом, что система сменилась с правой на левую. (x,y,z) можно изменить на (y,z,x) или (z,x,y), но другие перестановки покажут неправильную намотанность.

Другие вопросы по тегам