无法在一个OpenVDB文件中获得两个网格

Cannot get two grids working in one OpenVDB file

本文关键字:网格 两个 一个 OpenVDB 文件      更新时间:2023-10-16

问题是:

我有两个不同的 float 相同空间的估值(密度(网格

我可以将它们都写给一个OpenVDB文件,其中包括以下代码。但是,当我尝试使用 arnold Maya 中进行体积渲染时,两个网格似乎都包含相同的值。

我可以确认网格在预览中完全不同(在孟塔流(中,文件包含两个网格。

在我看来,第一个网格的值在某种程度上被第二个网格的值覆盖。

这是孟塔流量插件的相关部分,用于编写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();
}

所以我用它来写两个网格"绿色"answers"红色",但是在我的渲染图片中,两者看起来都应该看起来像红色。

这是我对Maya/Arnold设置的相应设置的屏幕截图...

选择两个网格作为输入

我刚刚尝试了体积船员的不同频道并获得了相同的图片。

可以更改频道,都看起来像"红色"

,在这里值得的是渲染图片的样子:

红色来自上方,绿色缺失

解决方法:导出多个VDB文件,并将其加载到多个Arnold卷中。