Деревья повторяющихся сцен (Java3d/OpenGL)

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

Моя текущая реализация настолько плоха, что стыдно признаться в этом. Я перерисовываю каждое изменение двадцать семь раз, чтобы сделать куб сцены 3x3x3. Когда пользователь достигает конца среднего куба, я перепрыгиваю его на другую сторону. Поддержание согласованности (не говоря уже о производительности) — это кошмар. Полная катастрофа.

Это не похоже на необычный запрос, поэтому мне интересно, знает ли кто-нибудь более законное решение.

Спасибо!

РЕДАКТИРОВАТЬ/ПРИМЕЧАНИЕ. В Java3d нет функций рендеринга в текстуру.


person Jim    schedule 09.04.2010    source источник


Ответы (2)


Без какого-либо знания вашей конкретной сцены и того, какие объекты вы визуализируете, 27 кубов звучат как «правильный, но не оптимальный» способ сделать это.

Однако, если вы не можете придумать что-либо еще, вы можете, по крайней мере, сначала выполнить отбраковку усеченной пирамиды на своей камере, что означает выяснить, какие из 27 кубов в настоящее время находятся в поле зрения камеры.

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

Это предполагает, что вы можете видеть максимум 1 куб на расстоянии... В противном случае вам придется выполнять рендеринг текстуры.

person Mikepote    schedule 11.04.2010

Я могу придумать другой вариант, но он не очень красивый.

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

person Incredulous Monk    schedule 13.04.2010