59 using namespace Hdf5Util;
70 const string k_nullMappingDataName(
"NullFieldMapping data");
72 const string k_matrixMappingDataName(
"MatrixFieldMapping data");
73 const string k_matrixMappingNumSamples(
"num_time_samples");
74 const string k_matrixMappingTime(
"time_");
75 const string k_matrixMappingMatrix(
"matrix_");
77 const string k_frustumMappingNumSamples(
"num_time_samples");
78 const string k_frustumMappingTime(
"time_");
79 const string k_frustumMappingScreenMatrix(
"screen_to_world_");
80 const string k_frustumMappingCameraMatrix(
"camera_to_world_");
81 const string k_frustumMappingZDistribution(
"z_distribution");
90 if (!
readAttribute(mappingGroup, k_nullMappingDataName, nfmData)) {
102 string nfmAttrData(
"NullFieldMapping has no data");
103 if (!
writeAttribute(mappingGroup, k_nullMappingDataName, nfmAttrData)) {
133 readAttribute(mappingGroup, k_matrixMappingDataName, 16, mtx.x[0][0]);
134 mm->setLocalToWorld(mtx);
145 if (!
readAttribute(mappingGroup, k_matrixMappingNumSamples, 1, numSamples)) {
147 k_matrixMappingNumSamples);
154 for (
int i = 0; i < numSamples; ++i) {
156 string timeAttr = k_matrixMappingTime + boost::lexical_cast<
string>(i);
157 string matrixAttr = k_matrixMappingMatrix + boost::lexical_cast<
string>(i);
162 std::vector<unsigned int> attrSize;
163 attrSize.assign(2,4);
165 if (!
readAttribute(mappingGroup, matrixAttr, attrSize, mtx.x[0][0])) {
169 mm->setLocalToWorld(time, mtx);
183 FIELD_DYNAMIC_CAST<MatrixFieldMapping>(mapping);
192 const SampleVec &samples = mm->localToWorldSamples();
193 int numSamples =
static_cast<int>(samples.size());
195 if (!
writeAttribute(mappingGroup, k_matrixMappingNumSamples, 1, numSamples)) {
197 k_matrixMappingNumSamples);
203 for (
int i = 0; i < numSamples; ++i) {
204 string timeAttr = k_matrixMappingTime + boost::lexical_cast<
string>(i);
205 string matrixAttr = k_matrixMappingMatrix + boost::lexical_cast<
string>(i);
206 if (!
writeAttribute(mappingGroup, timeAttr, 1, samples[i].first)) {
210 std::vector<unsigned int> attrSize;
211 attrSize.assign(2,4);
213 samples[i].second.x[0][0])) {
245 if (!
readAttribute(mappingGroup, k_frustumMappingNumSamples, 1, numSamples)) {
247 k_frustumMappingNumSamples);
256 for (
int i = 0; i < numSamples; ++i) {
257 string timeAttr = k_frustumMappingTime + boost::lexical_cast<
string>(i);
258 string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<
string>(i);
259 string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<
string>(i);
264 std::vector<unsigned int> attrSize;
265 attrSize.assign(2,4);
267 if (!
readAttribute(mappingGroup, ssAttr, attrSize, ssMtx.x[0][0])) {
271 if (!
readAttribute(mappingGroup, csAttr, attrSize, csMtx.x[0][0])) {
276 fm->setTransforms(time, ssMtx, csMtx);
286 if (!
readAttribute(mappingGroup, k_frustumMappingZDistribution, 1, distInt)) {
288 k_frustumMappingZDistribution);
296 fm->setZDistribution(dist);
309 FIELD_DYNAMIC_CAST<FrustumFieldMapping>(mapping);
318 const SampleVec &ssSamples = fm->screenToWorldSamples();
319 const SampleVec &csSamples = fm->cameraToWorldSamples();
320 int numSamples =
static_cast<int>(ssSamples.size());
322 if (!
writeAttribute(mappingGroup, k_frustumMappingNumSamples, 1, numSamples)) {
324 k_frustumMappingNumSamples);
330 for (
int i = 0; i < numSamples; ++i) {
331 string timeAttr = k_frustumMappingTime + boost::lexical_cast<
string>(i);
332 string ssAttr = k_frustumMappingScreenMatrix + boost::lexical_cast<
string>(i);
333 string csAttr = k_frustumMappingCameraMatrix + boost::lexical_cast<
string>(i);
334 if (!
writeAttribute(mappingGroup, timeAttr, 1, ssSamples[i].first)) {
339 std::vector<unsigned int> attrSize;
340 attrSize.assign(2,4);
343 ssSamples[i].second.x[0][0])) {
348 csSamples[i].second.x[0][0])) {
356 int dist =
static_cast<int>(fm->zDistribution());
358 if (!
writeAttribute(mappingGroup, k_frustumMappingZDistribution, 1, dist)) {
360 k_frustumMappingNumSamples);