MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/SPlisHSPlasH / writeParticles

Method writeParticles

Utilities/PartioReaderWriter.cpp:191–237  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

189
190
191void PartioReaderWriter::writeParticles(const std::string &fileName, const unsigned int numParticles, const Vector3r *particlePositions,
192 const Vector3r *particleVelocities, const Real particleRadius)
193{
194 if (numParticles == 0)
195 return;
196
197 Partio::ParticlesDataMutable& particleData = *Partio::create();
198 Partio::ParticleAttribute posAttr = particleData.addAttribute("position", Partio::VECTOR, 3);
199 Partio::ParticleAttribute velAttr;
200 if (particleVelocities != NULL)
201 velAttr = particleData.addAttribute("velocity", Partio::VECTOR, 3);
202 Partio::ParticleAttribute scaleAttr;
203 if (particleRadius != 0.0)
204 scaleAttr = particleData.addAttribute("pscale", Partio::FLOAT, 1);
205 Partio::ParticleAttribute idAttr = particleData.addAttribute("id", Partio::INT, 1);
206
207 for (unsigned int i = 0; i < numParticles; i++)
208 {
209 Partio::ParticleIndex index = particleData.addParticle();
210 float* pos = particleData.dataWrite<float>(posAttr, index);
211 int* id = particleData.dataWrite<int>(idAttr, index);
212
213 const Vector3r &x = particlePositions[i];
214 pos[0] = (float)x[0];
215 pos[1] = (float)x[1];
216 pos[2] = (float)x[2];
217
218 if (particleVelocities != NULL)
219 {
220 float* vel = particleData.dataWrite<float>(velAttr, index);
221 const Vector3r &v = particleVelocities[i];
222 vel[0] = (float)v[0];
223 vel[1] = (float)v[1];
224 vel[2] = (float)v[2];
225 }
226
227 if (particleRadius != 0.0)
228 {
229 float* scale = particleData.dataWrite<float>(scaleAttr, index);
230 scale[0] = (float)particleRadius;
231 }
232 id[0] = i;
233 }
234
235 Partio::write(fileName.c_str(), particleData, true);
236 particleData.release();
237}

Callers

nothing calls this directly

Calls 5

createFunction · 0.50
writeFunction · 0.50
addAttributeMethod · 0.45
c_strMethod · 0.45
releaseMethod · 0.45

Tested by

no test coverage detected