Я представляю систему частиц из вершин, которые затем тесселируются в квадрациклы в геом-шейдере и текстурируются/отображаются как точечные спрайты. Затем они масштабируются по размеру в зависимости от того, как далеко они находятся от камеры. Я пытаюсь отобразить каждый кадр моей сцены в карты куба. Поэтому по существу я помещаю шесть камер в свою сцену и указываю их в каждом направлении для лица куба и сохраняю изображение.Rendering Point Sprites через камеры в кубических картах
Мои точечные спрайты различного размера. Когда они приближаются к границе одной камеры (если они достаточно большие), они появляются в двух камерах одновременно. Поскольку точечные спрайты всегда обращены к камере, это означает, что они не являются непрерывными вдоль шва, когда я перевожу карту куба обратно в 3D-пространство. Это особенно заметно, когда точки находятся достаточно близко к камере, так как точки больше, и растягиваются дальше в оба вида камеры. Я также делаю альфа-смешение, так что это может также помочь в решении проблемы.
Я не думаю, что могу просто отбросить точки, расположенные рядом с краем камеры, потому что когда я все вернусь в 3d, я подумаю, что там будут странные области, где облако будет более малонаселенным. Еще одна мысль, которая у меня была, заключалась в том, чтобы размыть края каждой камеры, но я думаю, что это тоже дало бы мне странную размытую зону, когда я вернусь в 3D-пространство. Я чувствую, что могу вручную отредактировать рамки в Photoshop, чтобы они выглядели нормально, но это было бы больно, так как это анимация со скоростью 30 кадров в секунду.
Изображение, прикрепленное, является деталью с карты куба. Вы можете видеть горизонтальный шов, где спрайты не выровнены правильно, и немного менее заметный вертикальный на правой стороне изображения. Я уверен, что настройки моей камеры верны, потому что я использовал эту настройку камеры в других сценах, и мои кубические диаграммы выглядят хорошо.
У кого-нибудь есть идеи?
Я делаю это в openFrameworks/openGL fwiw.
Можете ли вы сделать изображение только с одним (или несколькими) спрайтов помещенной на краю, так что мы может видеть именно проблему? – Jerem
Я потратил некоторое время, пытаясь воспроизвести проблему, не выполняя мое смешение и не мог заставить его произойти. На изображении выше я использовал glBlendFunc (GL_SRC_ALPHA, GL_ONE); с отключением глубины. Я думаю, что проблема может быть в том, что я смешиваю частицы. Они смешиваются с тем, что находится за или перед ними, и в зависимости от направления моей камеры я получаю разные распределения частиц. Не уверен, есть ли лучший способ для смешивания. Пока, установка камеры рядом с клипом немного дальше, кажется, достаточно хороша, чтобы замаскировать края. – aferriss