Войти
ПрограммированиеФорумГрафика

Volume Rendering (12 стр)

Страницы: 111 12 13 1416 Следующая »
#165
11:47, 28 окт. 2010

Офигенно! С тенями очень здорово смотрится! Да и вообще очень красиво у тебя рендерится!

#166
14:15, 28 окт. 2010

Кстати, плоскость, на которую падает тень - полигональная или воксельная?

#167
14:23, 28 окт. 2010

шикарно!

#168
16:11, 28 окт. 2010

innuendo
> этот raw не выложишь ?
это спец.технологии по процедурной генерации дэйтасетов:

  virtual void LoadData()
  {
    const int spheres1 = 20;
    Vector3d centers1[spheres1];

    for(int p = 0; p < spheres1; p++)
    {
      centers1[p] = Vector3d(random(0.2, 0.8), random(0.2, 0.8), random(0.2, 0.8));
    }
    for(int i = 0; i < volumeData->width; i++)
    {
      for(int j = 0; j < volumeData->height; j++)
      {
        for(int k = 0; k < volumeData->depth; k++)
        {
          double intensity = 0;
          Vector3d point(double(i) / volumeData->width, double(j) / volumeData->height, double(k) / volumeData->depth);
          for(int p = 0; p < spheres1; p++)
          {
            double r1 = max(0, 0.2 - (point - centers1[p]).Len()) / 0.2;
            intensity = max(r1, intensity);
          }
          if(point.x < 0.01) intensity = 1;
          volumeData->scalarData[i + j * volumeData->width + k * volumeData->width * volumeData->height] = float(intensity);
        }
      }
    }
    volumeData->volumeObject->LoadScalarData(volumeData->scalarData, 0);
  }
igo
> с подобных данных - наверно мягкие тени - одно удовольствие строить? а четкие - наверно "сложнее"?...
screen000 | Volume Rendering
вообще всё равно
Shalom
> Кстати, плоскость, на которую падает тень - полигональная или воксельная?
if(point.x < 0.01) intensity = 1;

всем спасибо за добрые комментарии

#169
9:14, 30 окт. 2010

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

каков фпс-ик на данный момент?... по моему продукт можно выводить уже в инструментарий для масс народа... формат данных сверх-понятный... качество рендера - офигительное... можно еще добавить анализу всякого...  лучше волуме рендеров пока - не видел...

#170
16:04, 30 окт. 2010

igo
> другая фильтрация? это шо, что бы тени четче сделать - фильтрацию "менее размытую" брать надо?
это моя сверхтехнология клепать бесплатные мягкие тени. если честно, получились случайно, но вышло прикольно :D

> каков фпс-ик на данный момент?...
на текстуре супервысокого разрешения 512х512х512, рендерящейся во весь экран на максимальное качество фпсик так себе, около 10. на обычных - 30-40.

>по моему продукт можно выводить уже в инструментарий для масс народа...
я ж говорил уже, это закрытый продукт.

#171
17:19, 29 ноя. 2010

Надо будет нам тоже тени доприделывать. Классно выглядит.

Прошло более 2 лет
#172
19:49, 29 ноя. 2012

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

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Таким образом получается что-то вроде изоповерхностей. Хотя никаких эвристик именно для рендера изоповерхностей я не использую - только для непрерывного изменения плотности с произвольной transfer function.

очевидно, preintegration рулит и педалит, хоть и занимает какое-то время после загрузки transfer function'а(считаю на CPU)

ну и по мелочи переписал весь рендер с Cg на GLSL, впилил depth peeling(на видео нету), придумал нормальную модель освещения для непрерывно меняющейся плотности.

#173
20:12, 29 ноя. 2012

Suslik
Непрерывная плотность? Задана непрерывной функцией? Т.е. тут не 3д текстура чтоли?

#174
20:22, 29 ноя. 2012

не, текстура как раз 3д. просто текстура содержит в себе непрерывно изменяющееся в объёме значение 0..1. а вот это значение уже переводится в пару цвет + плотность функцией, которая называется transfer function. так вот если трёхмерная текстура изменяется непрерывно, а transfer function разрывна, то будут получаться как раз вот такие изоповерхности.

#175
12:54, 30 ноя. 2012

Suslik
Блин здорово получилось! Хотел спросить, а как это в плане производительности? На видео все довольно бодро крутиться, на каком железе это снималось?

#176
12:59, 30 ноя. 2012

pascal.ilya
> Хотел спросить, а как это в плане производительности? На видео все довольно
> бодро крутиться, на каком железе это снималось?
>

Нормально так крутится на нормальном железе, зависит от шагов разных :)

#177
16:16, 30 ноя. 2012

pascal.ilya
> Блин здорово получилось! Хотел спросить, а как это в плане производительности?
> На видео все довольно бодро крутиться, на каком железе это снималось?
все презентации гоняю на ноутбуке в реальном времени. там есть параметр, который определяет минимальный шаг адаптивного алгоритма. если его задать таким, чтобы артефакты было невозможно рассмотреть не вооружённым глазом, то фпс на обычных данных порядка 20, железо - mid-end ноутбук.

#178
16:25, 30 ноя. 2012

Suslik
А адаптивный алгоритм при вычислении размера следующего шага опирается на значение прозрачности? Отличное значение ФПС особенно для ноутбучного железа.

#179
16:29, 30 ноя. 2012

pascal.ilya
> А адаптивный алгоритм при вычислении размера следующего шага опирается на
> значение прозрачности?
да, конечно. точнее он опирается на значение изменения цвета пиксела, которое вносит элемент с текущим шагом. то есть точность определяется в цветовом пространстве(r, g, b) - максимально допустимое изменение цвета, вносимое на шаге интегрирования. а уже это значение зависит непосредственно от прозрачности.

Страницы: 111 12 13 1416 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.