Проблема заключается в следующем:
У меня два разных поплавок оцененные (плотность) сетки для то же пространство.
Я могу написать им обоим один файл OpenVDB с кодом ниже. Но когда я пытаюсь сделать объемный рендеринг с Арнольд в майя, Кажется, обе сетки содержат одинаковые значения.
Я могу подтвердить, что сетки в предварительном просмотре (в Mantaflow) совершенно разные и что файл содержит две сетки.
Мне кажется, что значения первой сетки каким-то образом перезаписываются значениями второй сетки.
Вот соответствующая часть из плагина Mantaflow для записи файла OpenVDB:
void
write_grids_to_vdb(
const std::vector<
std::pair<const Grid<Real>&,
const std::string>
> & grids_names,
const std::string filename)
{
openvdb::initialize();
openvdb::GridPtrVec grids;
for (const auto& gn: grids_names) {
auto vdb_grid = openvdb::FloatGrid::create(0.0);
vdb_grid->setTransform(
openvdb::math::Transform::createLinearTransform(1.0));
vdb_grid->setGridClass(openvdb::GRID_FOG_VOLUME);
vdb_grid->setName(gn.second);
openvdb::Coord ijk;
typename openvdb::FloatGrid::Accessor
accessor = vdb_grid->getAccessor();
FOR_IJK(gn.first)
{
ijk[0] = i; ijk[1] = j; ijk[2] = k;
accessor.setValue(ijk, gn.first(i,j,k));
}
grids.push_back(vdb_grid);
}
openvdb::io::File file(filename);
file.write(grids);
file.close();
}
Поэтому я использую это, чтобы написать две сетки: «зеленую» и «красную», но на моей отрисованной картине обе должны выглядеть как красные.
А вот скриншот из моей соответствующей настройки для настройки Maya / Arnold …
Выбор обеих сеток в качестве входных данных
Я просто опробовал разные каналы от громкоговорителя и получил ту же картинку.
Можно изменить канал, оба выглядят как «красные»
И то, что стоит, вот как выглядят отрисованные картинки:
Обходной путь: экспортируйте несколько файлов VDB и загрузите их в несколько томов arnold.
Других решений пока нет …