medium bugfixes
parent
9afac73a70
commit
627201a172
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
|
|
||||||
// Uncomment to enable nearest-neighbor direction interpolation
|
// Uncomment to enable nearest-neighbor direction interpolation
|
||||||
//#define VINTERP_NEAREST_NEIGHBOR
|
// #define VINTERP_NEAREST_NEIGHBOR
|
||||||
|
|
||||||
// Uncomment to enable linear direction interpolation (usually a bad idea)
|
// Uncomment to enable linear direction interpolation (usually a bad idea)
|
||||||
//#define VINTERP_LINEAR
|
//#define VINTERP_LINEAR
|
||||||
|
@ -413,13 +413,14 @@ public:
|
||||||
(((fz < .5) ? z1 : z2) * m_res.y +
|
(((fz < .5) ? z1 : z2) * m_res.y +
|
||||||
((fy < .5) ? y1 : y2)) * m_res.x +
|
((fy < .5) ? y1 : y2)) * m_res.x +
|
||||||
((fx < .5) ? x1 : x2)].toVector();
|
((fx < .5) ? x1 : x2)].toVector();
|
||||||
};
|
}
|
||||||
break;
|
break;
|
||||||
case EQuantizedDirections: {
|
case EQuantizedDirections: {
|
||||||
value = lookupQuantizedDirection(
|
value = lookupQuantizedDirection(
|
||||||
(((fz < .5) ? z1 : z2) * m_res.y +
|
(((fz < .5) ? z1 : z2) * m_res.y +
|
||||||
((fy < .5) ? y1 : y2)) * m_res.x +
|
((fy < .5) ? y1 : y2)) * m_res.x +
|
||||||
((fx < .5) ? x1 : x2));
|
((fx < .5) ? x1 : x2)).toVector();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return Vector(0.0f);
|
return Vector(0.0f);
|
||||||
|
|
|
@ -74,19 +74,19 @@ public:
|
||||||
stream->setByteOrder(Stream::ELittleEndian);
|
stream->setByteOrder(Stream::ELittleEndian);
|
||||||
Float xmin = stream->readSingle(), ymin = stream->readSingle(), zmin = stream->readSingle();
|
Float xmin = stream->readSingle(), ymin = stream->readSingle(), zmin = stream->readSingle();
|
||||||
Float xmax = stream->readSingle(), ymax = stream->readSingle(), zmax = stream->readSingle();
|
Float xmax = stream->readSingle(), ymax = stream->readSingle(), zmax = stream->readSingle();
|
||||||
m_aabb = AABB(Point(xmin, ymin, zmin), Point(xmax, ymax, zmax));
|
AABB aabb = AABB(Point(xmin, ymin, zmin), Point(xmax, ymax, zmax));
|
||||||
m_res = Vector3i(stream);
|
m_res = Vector3i(stream);
|
||||||
m_filename = filename;
|
m_filename = filename;
|
||||||
size_t nCells = m_res.x*m_res.y*m_res.z;
|
size_t nCells = m_res.x*m_res.y*m_res.z;
|
||||||
m_blocks = new VolumeDataSource*[nCells];
|
m_blocks = new VolumeDataSource*[nCells];
|
||||||
memset(m_blocks, 0, nCells*sizeof(VolumeDataSource *));
|
memset(m_blocks, 0, nCells*sizeof(VolumeDataSource *));
|
||||||
Vector extents = m_aabb.getExtents();
|
Vector extents = aabb.getExtents();
|
||||||
m_worldToVolume = m_volumeToWorld.inverse();
|
m_worldToVolume = m_volumeToWorld.inverse();
|
||||||
m_worldToGrid = Transform::scale(Vector(
|
m_worldToGrid = Transform::scale(Vector(
|
||||||
(m_res[0]) / extents[0],
|
(m_res[0]) / extents[0],
|
||||||
(m_res[1]) / extents[1],
|
(m_res[1]) / extents[1],
|
||||||
(m_res[2]) / extents[2])
|
(m_res[2]) / extents[2])
|
||||||
) * Transform::translate(-Vector(m_aabb.min)) * m_worldToVolume;
|
) * Transform::translate(-Vector(aabb.min)) * m_worldToVolume;
|
||||||
|
|
||||||
m_supportsFloatLookups = true;
|
m_supportsFloatLookups = true;
|
||||||
m_supportsVectorLookups = true;
|
m_supportsVectorLookups = true;
|
||||||
|
@ -117,7 +117,11 @@ public:
|
||||||
++numBlocks;
|
++numBlocks;
|
||||||
}
|
}
|
||||||
Log(EInfo, "%i blocks total, %s, stepSize=%f, resolution=%s", numBlocks,
|
Log(EInfo, "%i blocks total, %s, stepSize=%f, resolution=%s", numBlocks,
|
||||||
m_aabb.toString().c_str(), m_stepSize, m_res.toString().c_str());
|
aabb.toString().c_str(), m_stepSize, m_res.toString().c_str());
|
||||||
|
|
||||||
|
m_aabb.reset();
|
||||||
|
for (int i=0; i<8; ++i)
|
||||||
|
m_aabb.expandBy(m_volumeToWorld(aabb.getCorner(i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool supportsFloatLookups() const {
|
bool supportsFloatLookups() const {
|
||||||
|
|
Loading…
Reference in New Issue