Removed use of convertToDensity() from VolumeResampler.

This commit is contained in:
unknown 2012-07-04 16:33:41 +02:00
parent ec8b2f374c
commit c488cf162e

View File

@ -64,9 +64,9 @@ namespace PolyVox
{ {
for(int32_t sx = m_regSrc.getLowerCorner().getX(), dx = m_regDst.getLowerCorner().getX(); dx <= m_regDst.getUpperCorner().getX(); sx++,dx++) for(int32_t sx = m_regSrc.getLowerCorner().getX(), dx = m_regDst.getLowerCorner().getX(); dx <= m_regDst.getUpperCorner().getX(); sx++,dx++)
{ {
//Note: Consider what should happen if src and dest have different voxel types. const typename SrcVolumeType::VoxelType& tSrcVoxel = m_pVolSrc->getVoxelAt(sx,sy,sz);
typename SrcVolumeType::VoxelType voxel = m_pVolSrc->getVoxelAt(sx,sy,sz); const typename DestVolumeType::VoxelType& tDestVoxel = static_cast<DestVolumeType::VoxelType>(m_pVolSrc->getVoxelAt(sx,sy,sz));
m_pVolDst->setVoxelAt(dx,dy,dz,voxel); m_pVolDst->setVoxelAt(dx,dy,dz,tDestVoxel);
} }
} }
} }
@ -104,23 +104,14 @@ namespace PolyVox
sz += m_regSrc.getLowerCorner().getZ(); sz += m_regSrc.getLowerCorner().getZ();
sampler.setPosition(sx,sy,sz); sampler.setPosition(sx,sy,sz);
typename SrcVolumeType::VoxelType voxel000 = sampler.peekVoxel0px0py0pz(); const typename SrcVolumeType::VoxelType& voxel000 = sampler.peekVoxel0px0py0pz();
typename SrcVolumeType::VoxelType voxel001 = sampler.peekVoxel0px0py1pz(); const typename SrcVolumeType::VoxelType& voxel001 = sampler.peekVoxel0px0py1pz();
typename SrcVolumeType::VoxelType voxel010 = sampler.peekVoxel0px1py0pz(); const typename SrcVolumeType::VoxelType& voxel010 = sampler.peekVoxel0px1py0pz();
typename SrcVolumeType::VoxelType voxel011 = sampler.peekVoxel0px1py1pz(); const typename SrcVolumeType::VoxelType& voxel011 = sampler.peekVoxel0px1py1pz();
typename SrcVolumeType::VoxelType voxel100 = sampler.peekVoxel1px0py0pz(); const typename SrcVolumeType::VoxelType& voxel100 = sampler.peekVoxel1px0py0pz();
typename SrcVolumeType::VoxelType voxel101 = sampler.peekVoxel1px0py1pz(); const typename SrcVolumeType::VoxelType& voxel101 = sampler.peekVoxel1px0py1pz();
typename SrcVolumeType::VoxelType voxel110 = sampler.peekVoxel1px1py0pz(); const typename SrcVolumeType::VoxelType& voxel110 = sampler.peekVoxel1px1py0pz();
typename SrcVolumeType::VoxelType voxel111 = sampler.peekVoxel1px1py1pz(); const typename SrcVolumeType::VoxelType& voxel111 = sampler.peekVoxel1px1py1pz();
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType voxel000Den = convertToDensity(voxel000);
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType voxel001Den = convertToDensity(voxel001);
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType voxel010Den = convertToDensity(voxel010);
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType voxel011Den = convertToDensity(voxel011);
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType voxel100Den = convertToDensity(voxel100);
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType voxel101Den = convertToDensity(voxel101);
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType voxel110Den = convertToDensity(voxel110);
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType voxel111Den = convertToDensity(voxel111);
//FIXME - should accept all float parameters, but GCC complains? //FIXME - should accept all float parameters, but GCC complains?
double dummy; double dummy;
@ -128,14 +119,9 @@ namespace PolyVox
sy = modf(sy, &dummy); sy = modf(sy, &dummy);
sz = modf(sz, &dummy); sz = modf(sz, &dummy);
//Note: Consider what should happen if src and dest have different voxel types. typename SrcVolumeType::VoxelType tInterpolatedValue = trilinearlyInterpolate<float>(voxel000,voxel100,voxel010,voxel110,voxel001,voxel101,voxel011,voxel111,sx,sy,sz);
typename VoxelTypeTraits<typename SrcVolumeType::VoxelType>::DensityType uInterpolatedDensity = trilinearlyInterpolate<float>(voxel000Den,voxel100Den,voxel010Den,voxel110Den,voxel001Den,voxel101Den,voxel011Den,voxel111Den,sx,sy,sz);
//Note: Consider what should happen if src and dest have different voxel types.
typename DestVolumeType::VoxelType result;
//result.setDensity(uInterpolatedDensity);
result = uInterpolatedDensity;
typename DestVolumeType::VoxelType result = static_cast<DestVolumeType::VoxelType>(tInterpolatedValue);
m_pVolDst->setVoxelAt(dx,dy,dz,result); m_pVolDst->setVoxelAt(dx,dy,dz,result);
} }
} }