3D Universe - Альтернативный метод трансформации геометрии [an error occurred while processing this directive]
Логотип сайта 3D Univerce
Новое на сайте
Альтернативный метод трансформации геометрии
BSP-дерево и его применение в 3D графике
Матричные операции
Блики на линзах (Lens Flare)
Проверка пересечения луча с треугольником

(c)2000 by Doc

Альтернативный метод трансформации геометрии

Введение
     Многие из вас хорошо осведомлены о современных методах трансформации геометрии в трехмерных приложениях и играх, а точнее о матрицах и эвклидовых уравнениях. О первых вы можете узнать, ознакомившись с материалом "Матричные операции" на этом сайте, а статьи о вторых вам придется поискать где-нибудь в другом месте.
     Сейчас я представлю вам третий, альтернативный способ трансформации геометрии - управляющими кубами. Материал о нем я читал уже очень давно, и тогда на этот метод не обратили должного внимания, хотя он и имеет неплохие перспективы. Сейчас я попытаюсь возродить прошлое и расскажу о нем еще раз, теперь уже по-русски и со своими добавлениями и исправлениями.
     Внимание! Этот материал рассчитан на людей, очень хорошо владеющих понятиями и тезисами компьютерной графики, а совсем не на новичка.
.
Метод управляющих кубов
     Представьте, что у вас есть модель. Она состоит из точек - каждой точке соответствуют ее координаты в трехмерном пространстве и координаты текстуры. Вокруг любой модели можно описать куб, так называемый bounding box, думаю, это умеют все.
     Теперь отбросим все координаты модели относительно мира (сцены) и вычислим ее координаты относительно куба, предположив, что его сторона - единичный отрезок, т.е все координаты модели после преобразования будут находиться в пределах [0,1].
Предположим куб задан так:
struct b_cube
{
     Point3D base, v1, v2, v3;
};
Куб Что соответствует трем векторам - (base,v1), (base,v2) и (base,v3). Это минимальное количество векторов, необходимое для задания куба в трехмерном пространстве. А выглядит это примерно так, как на рисунке.
Я думаю, вы уже догадались, куда я клоню: теперь, когда нам известны координаты модели относительно единичного куба, мы можем восстановить ее в любом месте сцены, указанном положением, масштабом и ориентацией управляющего куба.
Итак, теперь повторим еще раз, что же нам необходимо сделать для успешной реализации данного метода:
1.Перед началом работы программы надо преобразовать все пространственные координаты модели в кубические (координаты относительно управляющего куба).
2.В основном цикле трансформировать ТОЛЬКО управляющий куб любым из двух методов - или за счет использования матриц или при помощи формул. Именно на этом шаге достигается некоторый выигрыш в производительности - трансформируем мы только 4(!!!) точки
3.Перед каждой прорисовкой вычислять пространственные координаты модели по ее кубическим координатам. Для этого требуется примерно столько же действий, как и при использовании формул вращения, но, как мы знаем, линейная интерполяция очень неплохо оптимизируется на ассемблере, так что и здесь можно получить небольшой выигрыш. Правда он будет очень небольшим.
.
Выводы
     Данный метод представляет собой хорошую альтернативу современным методам трансформации. Надеюсь, кто-нибудь заставит его работать быстрее существующих. Кстати, а ведь кубы могут параллельно очень неплохо пригодиться и в расчете столкновений объектов, так что если кто заинтересован в создании приложения, применяющего этот метод, пишите мне на mi81@bay.da.ru.
Copyright 2001 by AWDP

.

[вернуться в оглавление]

TopList