我试图显示250帧的动画使用Nvidia Optix射线追踪.我有一个基本的粒子类:
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的粒子上没有发现任何东西。我查看了optixParticles示例的源代码,发现在这种情况下,optix将粒子呈现为带有“平面”阴影的球体,因此在“混合器工作方式”中使用了发射着色器。但我找不到比这个样本更多的东西,我也无法理解样本本身的部分内容。
我试图用一种相对简单的方式做些什么?如果这是太多的要求或它不清楚,是否有一个网站的StackOverflow的家人要求解释特定的一段代码?
发布于 2018-09-14 19:25:19
将所有粒子数据添加到CUDA设备内存中,方法是将粒子添加到optix的屏幕上。然后分配一个default material,它应该只呈现屏幕空间中与generated ray点击有关的粒子。
https://stackoverflow.com/questions/50669588
复制相似问题