【问题标题】:Displaying X Particles Using Optix 5使用 Optix 5 显示 X 粒子
【发布时间】:2018-11-13 03:21:47
【问题描述】:

我正在尝试使用 Nvidia Optix 光线追踪显示 250 帧动画。 我有这个基本的粒子类:

struct Particle{
   float[3] location;
   float size;
   float[4] color;
   string State;

}

我正在从搅拌机中生成的 .txt 文件中检索每个粒子的所有信息(位置、大小、颜色和状态)。 txt 文件如下所示:

frame 001:
particle1 = {loc = (0,0,0), size = 0.1, color =(255, 255, 255, 255), state = "BORN"}

frame 002: 
...

我也在迭代帧 x 中的所有粒子,将它们转换为 particle 类型的对象(查看上面的结构。)并将它们放入一个看起来像这样的数组中:

Particles = {{part1, part2, part3}, {...}, {...}}

主数组中的每个数组代表动画的一帧。

所以我不需要使用 c++ 或 Optix 进行任何计算,我只需要在那个颜色的那个位置渲染一个那个大小的粒子。

我认为代码看起来像这样:

for(int frame = 0; frame <250; frame++){ //Iterate trought all the frames
   for(int i; i <= Particles[frame].size(), i++){ //Iterate trought all the particles in that frame
       //render them.
     }

} 

我只是缺少渲染它们的步骤。我尝试在网上寻找参考资料,但在 Optix 中的粒子上一无所获。我查看了 optixParticles Sample 的源代码,发现在这种情况下,optix 将粒子渲染为具有“平面”着色的球体,因此在“混合器工作方式”中使用发射着色器的球体。但我找不到比那个样本更多的东西,我也无法理解那个样本本身的部分内容。

我正在尝试做的事情是否可能以相对简单的方式进行? 如果这个问题太多或不清楚,是否有 StackOverflow 家族的网站要求对特定代码的解释?

【问题讨论】:

    标签: c++ optix


    【解决方案1】:

    通过将粒子添加到optix 的场景图中,将所有粒子数据保存到CUDA 设备内存。然后分配一个default material,它应该只在屏幕空间上渲染与generated ray命中相关的粒子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2019-02-08
      相关资源
      最近更新 更多