gpt4 book ai didi

c++ - 使用 Optix 5 显示 X 粒子

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:05:42 32 4
gpt4 key购买 nike

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

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

}

我正在从 blender 中生成的 .txt 文件中检索每个帧的每个粒子的所有信息(位置、大小、颜色和状态)。txt 文件看起来像这样:

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

frame 002:
...

我还在迭代 trought 帧 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 家族的网站可以询问特定代码段的解释?

最佳答案

通过将粒子添加到 optix 的场景图,将所有粒子数据存储到 CUDA 设备内存中。然后分配一个默认 Material ,它应该只根据生成的光线命中在屏幕空间上渲染粒子。

关于c++ - 使用 Optix 5 显示 X 粒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669588/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com