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);
Trivial class, world space is equal to local space, i.e. the field is contained in the unit cube [0...
Contains utility functions and classes for Hdf5 files.
FIELD3D_API bool writeAttribute(hid_t location, const std::string &attrName, const std::string &value)
Writes a string attribute.
#define FIELD3D_NAMESPACE_SOURCE_CLOSE
Namespace for Exception objects.
const string k_matrixMappingName("MatrixFieldMapping")
virtual FieldMapping::Ptr read(hid_t mappingGroup)
Reads the field mapping and tries to create a NullFieldMapping object from it.
FIELD3D_API bool readAttribute(hid_t location, const std::string &attrName, std::string &value)
Reads a string attribute.
virtual std::string className() const
Returns the class name.
virtual std::string className() const
Returns the class name.
FIELD3D_API void print(Severity severity, const std::string &message)
Sends the string to the assigned output, prefixing the message with the severity. ...
virtual bool write(hid_t mappingGroup, FieldMapping::Ptr mapping)
Writes the given field mapping to disk.
Contains various utility functions for Hdf5.
boost::intrusive_ptr< FieldMapping > Ptr
boost::intrusive_ptr< NullFieldMapping > Ptr
Convenience typedef.
virtual bool write(hid_t mappingGroup, FieldMapping::Ptr mapping)
Writes the given field mapping to disk.
Represents the mapping of a field by a perspective transform.
ZDistribution
Enumerates the Z slice distribution. .f3d files will store values as an int, so be very careful not t...
virtual bool write(hid_t mappingGroup, FieldMapping::Ptr mapping)
Writes the given field mapping to disk.
const string k_nullMappingName("NullFieldMapping")
virtual std::string className() const
Returns the class name.
std::vector< Sample > SampleVec
virtual FieldMapping::Ptr read(hid_t mappingGroup)
Reads the field mapping and tries to create a FrustumFieldMapping object from it. ...
virtual FieldMapping::Ptr read(hid_t mappingGroup)
Reads the field mapping and tries to create a MatrixFieldMapping object from it.
Represents the mapping of a field by a matrix transform.
boost::intrusive_ptr< MatrixFieldMapping > Ptr
Convenience typedef.
boost::intrusive_ptr< FrustumFieldMapping > Ptr
Convenience typedef.
const string k_frustumMappingName("FrustumFieldMapping")
Contains the FieldMappingIO base class and the NullFieldMappingIO and MatrixFieldMappingIO subclasses...