Ствол дерева может быть как с ветками так и без веток и может быть либо автоматически генерированным, либо сделанным вручную. Для придания реалистичности ствол искажается функцией Sin в плоскости XZ, аргумент функции зависит от координаты y. Если дерево содержит много частиц, возможно применение оптимизации: 2 ближайших частицы срастаются в одну, при этом линейно меняется размер обоих частиц: одна увеличивается, другая ЂЂЂ уменьшается (центр второй интерполируется к центру первой).
Каждый Billboard состоит из 4 вершин и 6 индексов, описывающих 2 треугольных полигона. Поскольку VertexShader1.0 работает отдельно с каждой вершиной, то вершина должна содержать информацию о центре всего Billboard, к которому она принадлежит. Изначально Billboard ЂЂЂ это прямоугольник с координатами вершин (-sz, sz,0), (sz, sz,0), (sz,- sz,0), (-sz,- sz,0) (прямоугольник в плоскости XY). SZ ЂЂЂ радиус частицы, если предполагается оптимизация через сливание смежных частиц, то SZ=1 и вершина должна содержать информацию о размере частицы. VertexShader должен ориентировать этот прямоугольник на камеру и сместить его на центр частицы. Для придания объема частицы используется Bumpmapping.
Как уже было сказано, частицы представляют листву. Предполагается, что частица должна прорисовываться как Billboard с текстурой, через Alpha test. Так как нам надо минимизировать вызовы DrawIndexedPrimitive и использовать VertexBuffer-ы для ускорения прорисовки, предполагается ориентация Billboard-ов через VertexShader1.0. Это позволяет прорисовать всю листву за один вызов DrawIndexedPrimitive.
Естественно, что единственно быстрый способ прорисовки деревьев является прорисовка с наименьшим числом изменений RenderState, и вызовов DrawIndexedPrimitive. Существует множество методов представления деревьев: это и плоскостное представление (дерево представлено 3 квадратными полигонами, содержащими текстуру проекций дерева), трехмерное представление дерева и способ представления в виде частиц, описанный в [8]. В данном документе будет описано представление дерева как ствола с ветками и частиц, представляющих листву. Частицы позволяют хорошо описать объем листвы с наименьшими затратами на прорисовку.
Визуализация лесных массивов и рельефа местности в реальном времени. (3 стр.)
/ / / Визуализация лесных массивов и рельефа местности в реальном времени. (3 стр.)
Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
Визуализация лесных массивов и рельефа местности в реальном времени. (3 стр.) / Статьи / Программирование игр / GameDev.ru ЂЂЂ Разработка игр
Комментариев нет:
Отправить комментарий