Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "PolyVoxCore/VoxelFilters.h"
00025
00026 namespace PolyVox
00027 {
00028 template< template<typename> class VolumeType>
00029 float computeSmoothedVoxel(typename VolumeType<uint8_t>::Sampler& volIter)
00030 {
00031 float sum = 0.0;
00032
00033 if(volIter.peekVoxel1nx1ny1nz() != 0) sum += 1.0f;
00034 if(volIter.peekVoxel1nx1ny0pz() != 0) sum += 1.0f;
00035 if(volIter.peekVoxel1nx1ny1pz() != 0) sum += 1.0f;
00036 if(volIter.peekVoxel1nx0py1nz() != 0) sum += 1.0f;
00037 if(volIter.peekVoxel1nx0py0pz() != 0) sum += 1.0f;
00038 if(volIter.peekVoxel1nx0py1pz() != 0) sum += 1.0f;
00039 if(volIter.peekVoxel1nx1py1nz() != 0) sum += 1.0f;
00040 if(volIter.peekVoxel1nx1py0pz() != 0) sum += 1.0f;
00041 if(volIter.peekVoxel1nx1py1pz() != 0) sum += 1.0f;
00042
00043 if(volIter.peekVoxel0px1ny1nz() != 0) sum += 1.0f;
00044 if(volIter.peekVoxel0px1ny0pz() != 0) sum += 1.0f;
00045 if(volIter.peekVoxel0px1ny1pz() != 0) sum += 1.0f;
00046 if(volIter.peekVoxel0px0py1nz() != 0) sum += 1.0f;
00047 if(volIter.getVoxel() != 0) sum += 1.0f;
00048 if(volIter.peekVoxel0px0py1pz() != 0) sum += 1.0f;
00049 if(volIter.peekVoxel0px1py1nz() != 0) sum += 1.0f;
00050 if(volIter.peekVoxel0px1py0pz() != 0) sum += 1.0f;
00051 if(volIter.peekVoxel0px1py1pz() != 0) sum += 1.0f;
00052
00053 if(volIter.peekVoxel1px1ny1nz() != 0) sum += 1.0f;
00054 if(volIter.peekVoxel1px1ny0pz() != 0) sum += 1.0f;
00055 if(volIter.peekVoxel1px1ny1pz() != 0) sum += 1.0f;
00056 if(volIter.peekVoxel1px0py1nz() != 0) sum += 1.0f;
00057 if(volIter.peekVoxel1px0py0pz() != 0) sum += 1.0f;
00058 if(volIter.peekVoxel1px0py1pz() != 0) sum += 1.0f;
00059 if(volIter.peekVoxel1px1py1nz() != 0) sum += 1.0f;
00060 if(volIter.peekVoxel1px1py0pz() != 0) sum += 1.0f;
00061 if(volIter.peekVoxel1px1py1pz() != 0) sum += 1.0f;
00062
00063 sum /= 27.0f;
00064 return sum;
00065 }
00066 }