使用 Optix 5 显示 X 粒子
Displaying X Particles Using Optix 5
我正在尝试使用 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 中的所有粒子,将它们转换为粒子类型的对象(查看上面的结构(并将它们放入如下所示的数组中:
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 中没有找到任何粒子。我查看了optixParticle Sample的源代码,发现在这种情况下,optix将粒子渲染为具有"平面"阴影的球体,因此在"搅拌器工作方式"中,使用发光着色器的球体。但是除了那个样本之外,我找不到任何东西,我也无法理解那个样本本身的部分内容。
我试图以相对简单的方式做的事情是可能的吗? 如果这要求太多或不清楚,是否有StackOverflow家族的网站可以要求对特定代码段进行解释?
通过将粒子添加到optix
的场景图中,将所有粒子数据CUDA
设备内存中。 然后分配一个default material
,该应仅根据generated ray
命中在屏幕空间上呈现粒子。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 使用 Optix 5 显示 X 粒子
- HLSL粒子系统将不显示
- 为什么 OpenGL 不显示我的火粒子