71 const string k_nullMappingDataName(
"NullFieldMapping data");
73 const string k_matrixMappingDataName(
"MatrixFieldMapping data");
74 const string k_matrixMappingNumSamples(
"num_time_samples");
75 const string k_matrixMappingTime(
"time_");
76 const string k_matrixMappingMatrix(
"matrix_");
78 const string k_frustumMappingNumSamples(
"num_time_samples");
79 const string k_frustumMappingTime(
"time_");
80 const string k_frustumMappingScreenMatrix(
"screen_to_world_");
81 const string k_frustumMappingCameraMatrix(
"camera_to_world_");
82 const string k_frustumMappingZDistribution(
"z_distribution");
91 if (!
readAttribute(mappingGroup, k_nullMappingDataName, nfmData)) {
104 mappingGroup.findAttribute<
string>(k_nullMappingDataName);
105 if (!data.isValid()) {
107 k_nullMappingDataName);
118 string nfmAttrData(
"NullFieldMapping has no data");
119 if (!
writeAttribute(mappingGroup, k_nullMappingDataName, nfmAttrData)) {
131 string nfmAttrData(
"NullFieldMapping has no data");
159 readAttribute(mappingGroup, k_matrixMappingDataName, 16, mtx.x[0][0]);
160 mm->setLocalToWorld(mtx);
171 if (!
readAttribute(mappingGroup, k_matrixMappingNumSamples, 1, numSamples)) {
173 k_matrixMappingNumSamples);
180 for (
int i = 0; i < numSamples; ++i) {
182 string timeAttr = k_matrixMappingTime + boost::lexical_cast<string>(i);
183 string matrixAttr = k_matrixMappingMatrix + boost::lexical_cast<string>(i);
188 std::vector<unsigned int> attrSize;
189 attrSize.assign(2,4);
191 if (!
readAttribute(mappingGroup, matrixAttr, attrSize, mtx.x[0][0])) {
195 mm->setLocalToWorld(time, mtx);
213 mappingGroup.findAttribute<
int>(k_matrixMappingNumSamples);
214 if (!numSamplesAttr.isValid()) {
216 k_matrixMappingNumSamples);
219 numSamples = numSamplesAttr.value();
224 for (
int i = 0; i < numSamples; ++i) {
225 string timeAttr = k_matrixMappingTime + boost::lexical_cast<string>(i);
226 string matrixAttr = k_matrixMappingMatrix + boost::lexical_cast<string>(i);
229 mappingGroup.findAttribute<
float32_t>(timeAttr);
230 if (!time.isValid()) {
236 mappingGroup.findAttribute<
mtx64_t>(matrixAttr);
237 if (!mtx.isValid()) {
241 mm->setLocalToWorld(time.value(), mtx.value());
255 FIELD_DYNAMIC_CAST<MatrixFieldMapping>(mapping);
264 const SampleVec &samples = mm->localToWorldSamples();
265 int numSamples =
static_cast<int>(samples.size());
267 if (!
writeAttribute(mappingGroup, k_matrixMappingNumSamples, 1, numSamples)) {
269 k_matrixMappingNumSamples);
275 for (
int i = 0; i < numSamples; ++i) {
276 string timeAttr = k_matrixMappingTime + boost::lexical_cast<string>(i);
277 string matrixAttr = k_matrixMappingMatrix + boost::lexical_cast<string>(i);
278 if (!
writeAttribute(mappingGroup, timeAttr, 1, samples[i].first)) {
282 std::vector<unsigned int> attrSize;
283 attrSize.assign(2,4);
285 samples[i].second.x[0][0])) {
302 FIELD_DYNAMIC_CAST<MatrixFieldMapping>(mapping);
311 const SampleVec &samples = mm->localToWorldSamples();
312 const int numSamples =
static_cast<int>(samples.size());
319 for (
int i = 0; i < numSamples; ++i) {
321 const string timeAttr =
322 k_matrixMappingTime + boost::lexical_cast<string>(i);
323 const string matrixAttr =
324 k_matrixMappingMatrix + boost::lexical_cast<string>(i);
355 if (!
readAttribute(mappingGroup, k_frustumMappingNumSamples, 1, numSamples)) {
357 k_frustumMappingNumSamples);
366 for (
int i = 0; i < numSamples; ++i) {
367 string timeAttr = k_frustumMappingTime + boost::lexical_cast<string>(i);
368 string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<string>(i);
369 string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<string>(i);
374 std::vector<unsigned int> attrSize;
375 attrSize.assign(2,4);
377 if (!
readAttribute(mappingGroup, ssAttr, attrSize, ssMtx.x[0][0])) {
381 if (!
readAttribute(mappingGroup, csAttr, attrSize, csMtx.x[0][0])) {
386 fm->setTransforms(time, ssMtx, csMtx);
396 if (!
readAttribute(mappingGroup, k_frustumMappingZDistribution, 1, distInt)) {
398 k_frustumMappingZDistribution);
406 fm->setZDistribution(dist);
424 mappingGroup.findAttribute<
int>(k_frustumMappingNumSamples);
425 if (!numSamplesAttr.isValid()) {
427 k_frustumMappingNumSamples);
436 for (
int i = 0; i < numSamples; ++i) {
438 string timeAttr = k_frustumMappingTime + boost::lexical_cast<string>(i);
439 string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<string>(i);
440 string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<string>(i);
443 mappingGroup.findAttribute<
float>(timeAttr);
444 if (!time.isValid()) {
450 mappingGroup.findAttribute<
mtx64_t>(ssAttr);
452 mappingGroup.findAttribute<
mtx64_t>(csAttr);
453 if (!ssMtx.isValid()) {
457 if (!csMtx.isValid()) {
462 fm->setTransforms(time.value(), ssMtx.value(), csMtx.value());
472 mappingGroup.findAttribute<
int>(k_frustumMappingZDistribution);
473 if (!zDist.isValid()) {
475 k_frustumMappingZDistribution);
483 fm->setZDistribution(dist);
496 FIELD_DYNAMIC_CAST<FrustumFieldMapping>(mapping);
505 const SampleVec &ssSamples = fm->screenToWorldSamples();
506 const SampleVec &csSamples = fm->cameraToWorldSamples();
507 int numSamples =
static_cast<int>(ssSamples.size());
509 if (!
writeAttribute(mappingGroup, k_frustumMappingNumSamples, 1, numSamples)) {
511 k_frustumMappingNumSamples);
517 for (
int i = 0; i < numSamples; ++i) {
518 string timeAttr = k_frustumMappingTime + boost::lexical_cast<string>(i);
519 string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<string>(i);
520 string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<string>(i);
521 if (!
writeAttribute(mappingGroup, timeAttr, 1, ssSamples[i].first)) {
526 std::vector<unsigned int> attrSize;
527 attrSize.assign(2,4);
530 ssSamples[i].second.x[0][0])) {
535 csSamples[i].second.x[0][0])) {
543 int dist =
static_cast<int>(fm->zDistribution());
545 if (!
writeAttribute(mappingGroup, k_frustumMappingZDistribution, 1, dist)) {
547 k_frustumMappingNumSamples);
562 FIELD_DYNAMIC_CAST<FrustumFieldMapping>(mapping);
566 "Couldn't get FrustumFieldMapping from pointer");
572 const SampleVec &ssSamples = fm->screenToWorldSamples();
573 const SampleVec &csSamples = fm->cameraToWorldSamples();
574 const int numSamples =
static_cast<int>(ssSamples.size());
581 for (
int i = 0; i < numSamples; ++i) {
582 const string timeAttr = k_frustumMappingTime +
583 boost::lexical_cast<string>(i);
584 const string ssAttr = k_frustumMappingScreenMatrix +
585 boost::lexical_cast<string>(i);
586 const string csAttr = k_frustumMappingCameraMatrix +
587 boost::lexical_cast<string>(i);
596 int dist =
static_cast<int>(fm->zDistribution());