@@ -106,26 +106,30 @@ public static List<Voxel> Voxelize (Mesh mesh, int count = 10) {
106
106
return voxels ;
107
107
}
108
108
109
- static List < Voxel > Build ( Ray ray , List < HitResult > results , float size ) {
109
+ static List < Voxel > Build ( Ray ray , List < HitResult > results , float unit ) {
110
110
var voxels = new List < Voxel > ( ) ;
111
111
112
112
for ( int i = 0 , n = results . Count ; i < n ; i ++ ) {
113
113
if ( i % 2 == 0 ) {
114
114
if ( i == n - 1 ) { // last
115
- voxels . Add ( new Voxel ( ray . origin + results [ i ] . distance * ray . direction , size ) ) ;
115
+ voxels . Add ( new Voxel ( ray . origin + Grid ( results [ i ] . distance , unit ) * ray . direction , unit ) ) ;
116
116
}
117
117
} else {
118
- var from = results [ i - 1 ] ;
119
- var to = results [ i ] ;
120
- for ( float distance = from . distance ; distance < to . distance ; distance += size ) {
121
- voxels . Add ( new Voxel ( ray . origin + distance * ray . direction , size ) ) ;
118
+ var from = Grid ( results [ i - 1 ] . distance , unit ) ;
119
+ var to = Grid ( results [ i ] . distance , unit ) ;
120
+ for ( float distance = from ; distance < to ; distance += unit ) {
121
+ voxels . Add ( new Voxel ( ray . origin + distance * ray . direction , unit ) ) ;
122
122
}
123
123
}
124
124
}
125
125
126
126
return voxels ;
127
127
}
128
128
129
+ static float Grid ( float distance , float unit ) {
130
+ return Mathf . FloorToInt ( distance / unit ) * unit ;
131
+ }
132
+
129
133
static bool Hit ( Ray ray , List < Triangle > triangles , out List < HitResult > results ) {
130
134
results = new List < HitResult > ( ) ;
131
135
for ( int i = 0 , n = triangles . Count ; i < n ; i ++ ) {
0 commit comments