Skip to content

Commit 65bbcc5

Browse files
authored
Merge pull request #264 from simlu/qa
Release
2 parents 1923b4e + fe23c23 commit 65bbcc5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+166
-90
lines changed

.travis.yml

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,24 @@ after_success:
2727
- "~/.local/bin/aws s3 cp $TRAVIS_BUILD_DIR/target/build/voxelshop-bin.zip s3://$S3_BUCKET/build/$TRAVIS_BRANCH/voxelshop-bin.zip --region=$S3_REGION"
2828

2929
deploy:
30-
provider: releases
31-
prerelease: true
32-
api_key:
33-
secure: "mA6DaAr2VXyE8Zn0LPq7XX3e3/Dnlk3trkNDhuWNbs4jCISbCLBJalJEaovgd392/tKYjmOdN7kN+PUVyOwQZgwl2v7Q4cx0epMksibLhjICvVegGRMM/epPaOBqrQXy31gZN6RDKxVG/XFw9K9ez3TUZr0GmsjaRjQ9rNL62eRwvywrNzNFHLDJAWtM4Jl/DijN1LHO17OcecQArRA/Dk8y2r52DlKBXqQlksqfr3slJOH2natY/Nf2ZkfEyYZNRZ+6J9uKbkCTFncVoN80V/1nlA9QQ17gJx5ZnhpWqytebMgdRBKHgVECuLRHfw7vUzkQkk3V9U/VMxYTassWYYcfV9PNWCSshL4czl5LjMzRU65M+H2l/pISFwpwFM4E5u7A8lJ4KWclgfU7vFn/iWkb95NeAbYvPOfvB4OGIiaSI8xTWWL/tKdX+hmjWIKPSdhQd8B26syfJeqL2DcgE8uFjgisLZuBlWl7dKr11ausTPcA8lu4A4dWsZpuBVIPT6/Oi0XEFYVaTiy3CSV/XVV1XORME6G3UC0098DlWW/sZw5dA6jv/cf0o4IwttYDZdNq8fQVL2aXM7uJpv54gAjtBUpoFb/nNnkMw6MuN/xSzcgKs/ZWQk3HSPNuSuiWi/XPftNPUYJIJsZCeZscfKIBupzUhU9W8NX4r+LmYHA="
34-
file: $TRAVIS_BUILD_DIR/target/build/voxelshop-bin.zip
35-
skip_cleanup: true
36-
on:
37-
repo: $DEPLOY_REPO
38-
branch: qa
39-
tags: true
40-
jdk: oraclejdk8
41-
42-
deploy:
43-
provider: releases
44-
api_key:
45-
secure: "mA6DaAr2VXyE8Zn0LPq7XX3e3/Dnlk3trkNDhuWNbs4jCISbCLBJalJEaovgd392/tKYjmOdN7kN+PUVyOwQZgwl2v7Q4cx0epMksibLhjICvVegGRMM/epPaOBqrQXy31gZN6RDKxVG/XFw9K9ez3TUZr0GmsjaRjQ9rNL62eRwvywrNzNFHLDJAWtM4Jl/DijN1LHO17OcecQArRA/Dk8y2r52DlKBXqQlksqfr3slJOH2natY/Nf2ZkfEyYZNRZ+6J9uKbkCTFncVoN80V/1nlA9QQ17gJx5ZnhpWqytebMgdRBKHgVECuLRHfw7vUzkQkk3V9U/VMxYTassWYYcfV9PNWCSshL4czl5LjMzRU65M+H2l/pISFwpwFM4E5u7A8lJ4KWclgfU7vFn/iWkb95NeAbYvPOfvB4OGIiaSI8xTWWL/tKdX+hmjWIKPSdhQd8B26syfJeqL2DcgE8uFjgisLZuBlWl7dKr11ausTPcA8lu4A4dWsZpuBVIPT6/Oi0XEFYVaTiy3CSV/XVV1XORME6G3UC0098DlWW/sZw5dA6jv/cf0o4IwttYDZdNq8fQVL2aXM7uJpv54gAjtBUpoFb/nNnkMw6MuN/xSzcgKs/ZWQk3HSPNuSuiWi/XPftNPUYJIJsZCeZscfKIBupzUhU9W8NX4r+LmYHA="
46-
file: $TRAVIS_BUILD_DIR/target/build/voxelshop-bin.zip
47-
skip_cleanup: true
48-
on:
49-
repo: $DEPLOY_REPO
50-
branch: master
51-
tags: true
52-
jdk: oraclejdk8
30+
- provider: releases
31+
prerelease: true
32+
api_key:
33+
secure: "mA6DaAr2VXyE8Zn0LPq7XX3e3/Dnlk3trkNDhuWNbs4jCISbCLBJalJEaovgd392/tKYjmOdN7kN+PUVyOwQZgwl2v7Q4cx0epMksibLhjICvVegGRMM/epPaOBqrQXy31gZN6RDKxVG/XFw9K9ez3TUZr0GmsjaRjQ9rNL62eRwvywrNzNFHLDJAWtM4Jl/DijN1LHO17OcecQArRA/Dk8y2r52DlKBXqQlksqfr3slJOH2natY/Nf2ZkfEyYZNRZ+6J9uKbkCTFncVoN80V/1nlA9QQ17gJx5ZnhpWqytebMgdRBKHgVECuLRHfw7vUzkQkk3V9U/VMxYTassWYYcfV9PNWCSshL4czl5LjMzRU65M+H2l/pISFwpwFM4E5u7A8lJ4KWclgfU7vFn/iWkb95NeAbYvPOfvB4OGIiaSI8xTWWL/tKdX+hmjWIKPSdhQd8B26syfJeqL2DcgE8uFjgisLZuBlWl7dKr11ausTPcA8lu4A4dWsZpuBVIPT6/Oi0XEFYVaTiy3CSV/XVV1XORME6G3UC0098DlWW/sZw5dA6jv/cf0o4IwttYDZdNq8fQVL2aXM7uJpv54gAjtBUpoFb/nNnkMw6MuN/xSzcgKs/ZWQk3HSPNuSuiWi/XPftNPUYJIJsZCeZscfKIBupzUhU9W8NX4r+LmYHA="
34+
file: $TRAVIS_BUILD_DIR/target/build/voxelshop-bin.zip
35+
skip_cleanup: true
36+
on:
37+
repo: $DEPLOY_REPO
38+
branch: qa
39+
tags: true
40+
jdk: oraclejdk8
41+
- provider: releases
42+
api_key:
43+
secure: "mA6DaAr2VXyE8Zn0LPq7XX3e3/Dnlk3trkNDhuWNbs4jCISbCLBJalJEaovgd392/tKYjmOdN7kN+PUVyOwQZgwl2v7Q4cx0epMksibLhjICvVegGRMM/epPaOBqrQXy31gZN6RDKxVG/XFw9K9ez3TUZr0GmsjaRjQ9rNL62eRwvywrNzNFHLDJAWtM4Jl/DijN1LHO17OcecQArRA/Dk8y2r52DlKBXqQlksqfr3slJOH2natY/Nf2ZkfEyYZNRZ+6J9uKbkCTFncVoN80V/1nlA9QQ17gJx5ZnhpWqytebMgdRBKHgVECuLRHfw7vUzkQkk3V9U/VMxYTassWYYcfV9PNWCSshL4czl5LjMzRU65M+H2l/pISFwpwFM4E5u7A8lJ4KWclgfU7vFn/iWkb95NeAbYvPOfvB4OGIiaSI8xTWWL/tKdX+hmjWIKPSdhQd8B26syfJeqL2DcgE8uFjgisLZuBlWl7dKr11ausTPcA8lu4A4dWsZpuBVIPT6/Oi0XEFYVaTiy3CSV/XVV1XORME6G3UC0098DlWW/sZw5dA6jv/cf0o4IwttYDZdNq8fQVL2aXM7uJpv54gAjtBUpoFb/nNnkMw6MuN/xSzcgKs/ZWQk3HSPNuSuiWi/XPftNPUYJIJsZCeZscfKIBupzUhU9W8NX4r+LmYHA="
44+
file: $TRAVIS_BUILD_DIR/target/build/voxelshop-bin.zip
45+
skip_cleanup: true
46+
on:
47+
repo: $DEPLOY_REPO
48+
branch: master
49+
tags: true
50+
jdk: oraclejdk8

images/splash.png

5 Bytes
Loading
707 Bytes
Loading
Loading
Loading
Loading
-6.37 KB
Binary file not shown.

src/main/java/com/vitco/app/export/MagicaVoxelExporter.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,11 @@ protected boolean writeFile() throws IOException {
8484

8585
// ensure generated file is deterministic
8686
Voxel[] voxels = data.getVisibleLayerVoxel();
87-
Arrays.sort(voxels, new Comparator<Voxel>() {
88-
@Override
89-
public int compare(Voxel o1, Voxel o2) {
90-
return o2.posId - o1.posId;
91-
}
92-
});
87+
Arrays.sort(voxels, Comparator.comparingInt(o -> o.posId));
9388

9489
// write voxel data
9590
for (Voxel voxel : voxels) {
96-
final int vx = -(voxel.x - max[0]);
91+
final int vx = voxel.x - min[0];
9792
final int vy = -(voxel.y - max[1]);
9893
final int vz = voxel.z - min[2];
9994
final int colorId = colorPalette.get(voxel.getColor().getRGB()) + 1;

src/main/java/com/vitco/app/export/collada/ColladaExportWrapper.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,14 @@ public void setObjectName(String objectName) {
3030
this.objectName = objectName;
3131
}
3232

33-
// true if every voxel layer should be exported as its own object
34-
private boolean useLayers = false;
35-
public final void setUseLayers(boolean state) {
36-
useLayers = state;
33+
// the origin mode
34+
public static final int SEPARATION_MERGED = 0;
35+
public static final int SEPARATION_LAYER = 1;
36+
public static final int SEPARATION_VOXEL = 2;
37+
// setter for origin mode
38+
private int separationMode = SEPARATION_MERGED;
39+
public final void setSeparationMode(int separationMode) {
40+
this.separationMode = separationMode;
3741
}
3842

3943
// true if holes should be removed
@@ -125,7 +129,7 @@ public final boolean export(Data data, ErrorHandlerInterface errorHandler, File
125129
// create data export objects
126130
ExportDataManager exportDataManager = new ExportDataManager(
127131
getProgressDialog(), getConsole(), data, padTextures, removeHoles, algorithm, useYUP, originMode,
128-
forcePOT, useLayers, triangulateByColor, useVertexColoring, fixTJunctions, exportTexturedVoxels, useOverlappingUvs,
132+
forcePOT, separationMode, triangulateByColor, useVertexColoring, fixTJunctions, exportTexturedVoxels, useOverlappingUvs,
129133
useSkewedUvs);
130134
ColladaFileExporter colladaFileExporter = new ColladaFileExporter(
131135
getProgressDialog(), getConsole(), exportDataManager, prefix, objectName, useYUP, exportOrthogonalVertexNormals, useVertexColoring);

src/main/java/com/vitco/app/export/collada/ColladaFileExporter.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ public class ColladaFileExporter extends ProgressReporter {
3737
// overwriting of textures that belong to different files)
3838
private final String texturePrefix;
3939

40+
// scale factor (useful for Blender)
41+
private static final float SCALE = 0.05f;
42+
4043
// constructor
4144
public ColladaFileExporter(ProgressDialog dialog, ConsoleInterface console, ExportDataManager exportDataManager,
4245
String texturePrefix, String name, boolean useYUP, boolean exportOrthogonalVertexNormals, boolean useVertexColoring) {
@@ -48,7 +51,7 @@ public ColladaFileExporter(ProgressDialog dialog, ConsoleInterface console, Expo
4851
initXmlFile(useYUP, useVertexColoring);
4952
// create the object in the scene
5053
setActivity("Creating Objects...", true);
51-
writeObject(name);
54+
writeObjects(name);
5255
if (!useVertexColoring) {
5356
// write the texture information
5457
setActivity("Creating Textures...", true);
@@ -61,11 +64,13 @@ public ColladaFileExporter(ProgressDialog dialog, ConsoleInterface console, Expo
6164
}
6265

6366
// create the object in the scene
64-
private void writeObject(String name) {
67+
private void writeObjects(String name) {
6568
String cleanName = name.replace(" ", "_").replaceAll("[^a-zA-Z0-9_\\-\\.]", "").toLowerCase();
6669
String[] layerNames = exportDataManager.getLayerNames();
67-
HashSet<String> knownObjectIds = new HashSet<String>();
70+
HashSet<String> knownObjectIds = new HashSet<>();
71+
float[][] offsets = exportDataManager.getOffsets();
6872
for (int layerRef = 0; layerRef < layerNames.length; layerRef++) {
73+
float[] offset = offsets[layerRef];
6974
String layerName = layerNames[layerRef];
7075
String cleanLayerName = layerName.replace(" ", "_").replaceAll("[^a-zA-Z0-9_\\-\\.]", "").toLowerCase();
7176
String objectId = cleanLayerName;
@@ -83,12 +88,12 @@ private void writeObject(String name) {
8388
"type=NODE"
8489
});
8590
xmlFile.addAttrAndTextContent("translate", new String[]{"sid=location"},
86-
"0 0 0");
91+
(-SCALE * offset[0] * 2) + " " + (-SCALE * offset[2] * 2) + " " + (-SCALE * offset[1] * 2));
8792
xmlFile.addAttrAndTextContent("rotate[-1]", new String[]{"sid=rotationZ"}, "0 0 1 0");
8893
xmlFile.addAttrAndTextContent("rotate[-1]", new String[]{"sid=rotationY"}, "0 1 0 0");
8994
xmlFile.addAttrAndTextContent("rotate[-1]", new String[]{"sid=rotationX"}, "1 0 0 0");
9095
// scale the object down
91-
xmlFile.addAttrAndTextContent("scale", new String[]{"sid=scale"}, "0.05 0.05 0.05");
96+
xmlFile.addAttrAndTextContent("scale", new String[]{"sid=scale"}, SCALE + " " + SCALE + " " + SCALE);
9297

9398

9499
// add the material to the object

src/main/java/com/vitco/app/export/generic/ExportDataManager.java

Lines changed: 100 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,48 @@ public class ExportDataManager extends ProgressReporter {
6060
// whether to fix tjunction problems
6161
private final boolean fixTJunctions;
6262

63-
// center of this object
63+
// center of all voxels
6464
private final float[] center;
6565

66+
// centers of individual objects
67+
private final ArrayList<float[]> centers = new ArrayList<>();
68+
69+
// retrieve offsets
70+
public final float[][] getOffsets() {
71+
float[][] result = new float[centers.size()][];
72+
for (int i = 0; i < result.length; i++) {
73+
result[i] = centers.get(i).clone();
74+
float[] entry = result[i];
75+
switch (originMode) {
76+
case ColladaExportWrapper.ORIGIN_CENTER:
77+
entry[0] -= center[0];
78+
entry[1] -= center[1];
79+
entry[2] -= center[2];
80+
break;
81+
case ColladaExportWrapper.ORIGIN_PLANE_CENTER:
82+
entry[0] -= center[0];
83+
entry[1] -= 0.5f;
84+
entry[2] -= center[2];
85+
break;
86+
case ColladaExportWrapper.ORIGIN_BOX_CENTER:
87+
entry[0] -= DynamicSettings.VOXEL_PLANE_SIZE_X % 2 == 0 ? -0.5f : 0f;
88+
entry[1] -= 0.5f - DynamicSettings.VOXEL_PLANE_RANGE_Y;
89+
entry[2] -= DynamicSettings.VOXEL_PLANE_SIZE_Z % 2 == 0 ? -0.5f : 0f;
90+
break;
91+
case ColladaExportWrapper.ORIGIN_BOX_PLANE_CENTER:
92+
entry[0] -= DynamicSettings.VOXEL_PLANE_SIZE_X % 2 == 0 ? -0.5f : 0f;
93+
entry[1] -= 0.5f;
94+
entry[2] -= DynamicSettings.VOXEL_PLANE_SIZE_Z % 2 == 0 ? -0.5f : 0f;
95+
break;
96+
case ColladaExportWrapper.ORIGIN_CROSS:
97+
default:
98+
break;
99+
}
100+
}
101+
102+
return result;
103+
}
104+
66105
// -------------
67106
// Layer names of layers that are being exported
68107
private final ArrayList<String> layerNames = new ArrayList<String>();
@@ -101,26 +140,46 @@ public final TriTextureManager getTextureManager() {
101140

102141
// constructor
103142
public ExportDataManager(ProgressDialog dialog, ConsoleInterface console, Data data, boolean usePadding, boolean removeHoles, int algorithm, boolean useYUP,
104-
int originMode, boolean forcePOT, boolean useLayers, boolean triangulateByColor, boolean useVertexColoring, boolean fixTJunctions,
143+
int originMode, boolean forcePOT, int separationMode, boolean triangulateByColor, boolean useVertexColoring, boolean fixTJunctions,
105144
boolean exportTexturedVoxels, boolean useOverlappingUvs, boolean useSkewedUvs) {
106145
super(dialog, console);
107146

108147
// create hull manager that exposes hull information
109148
setActivity("Computing Hull...", true);
110-
int minx = Integer.MAX_VALUE;
111-
int maxx = Integer.MIN_VALUE;
112-
int miny = Integer.MAX_VALUE;
113-
int maxy = Integer.MIN_VALUE;
114-
int minz = Integer.MAX_VALUE;
115-
int maxz = Integer.MIN_VALUE;
116-
117-
if (useLayers) {
149+
int gminx = Integer.MAX_VALUE;
150+
int gmaxx = Integer.MIN_VALUE;
151+
int gminy = Integer.MAX_VALUE;
152+
int gmaxy = Integer.MIN_VALUE;
153+
int gminz = Integer.MAX_VALUE;
154+
int gmaxz = Integer.MIN_VALUE;
155+
if (separationMode == ColladaExportWrapper.SEPARATION_VOXEL) {
156+
// handle voxels separately
157+
for (Voxel voxel : data.getVisibleLayerVoxel()) {
158+
HullManagerExt<Voxel> hullManager = new HullManagerExt<>();
159+
hullManager.update(voxel.posId, voxel);
160+
hullManagers.add(hullManager);
161+
layerNames.add("voxel_" + voxel.x + "_" + voxel.y + "_" + voxel.z);
162+
centers.add(new float[] {voxel.x, voxel.y, voxel.z});
163+
gminx = Math.min(gminx, voxel.x);
164+
gmaxx = Math.max(gmaxx, voxel.x);
165+
gminy = Math.min(gminy, voxel.y);
166+
gmaxy = Math.max(gmaxy, voxel.y);
167+
gminz = Math.min(gminz, voxel.z);
168+
gmaxz = Math.max(gmaxz, voxel.z);
169+
}
170+
} else if (separationMode == ColladaExportWrapper.SEPARATION_LAYER) {
118171
// handle layers separately
119172
for (Integer layerId : data.getLayers()) {
120173
if (data.getLayerVisible(layerId)) {
121174
Voxel[] layerVoxel = data.getLayerVoxels(layerId);
122175
if (layerVoxel.length != 0) {
123-
HullManagerExt<Voxel> hullManager = new HullManagerExt<Voxel>();
176+
HullManagerExt<Voxel> hullManager = new HullManagerExt<>();
177+
int minx = Integer.MAX_VALUE;
178+
int maxx = Integer.MIN_VALUE;
179+
int miny = Integer.MAX_VALUE;
180+
int maxy = Integer.MIN_VALUE;
181+
int minz = Integer.MAX_VALUE;
182+
int maxz = Integer.MIN_VALUE;
124183
for (Voxel voxel : data.getLayerVoxels(layerId)) {
125184
hullManager.update(voxel.posId, voxel);
126185
minx = Math.min(minx, voxel.x);
@@ -132,12 +191,25 @@ public ExportDataManager(ProgressDialog dialog, ConsoleInterface console, Data d
132191
}
133192
layerNames.add(data.getLayerName(layerId));
134193
hullManagers.add(hullManager);
194+
centers.add(new float[] {(minx + maxx) / 2f, (miny + maxy) / 2f, (minz + maxz) / 2f});
195+
gminx = Math.min(gminx, minx);
196+
gmaxx = Math.max(gmaxx, maxx);
197+
gminy = Math.min(gminy, miny);
198+
gmaxy = Math.max(gmaxy, maxy);
199+
gminz = Math.min(gminz, minz);
200+
gmaxz = Math.max(gmaxz, maxz);
135201
}
136202
}
137203
}
138-
} else {
204+
} else if (separationMode == ColladaExportWrapper.SEPARATION_MERGED) {
139205
// merge all layers
140-
HullManagerExt<Voxel> hullManager = new HullManagerExt<Voxel>();
206+
HullManagerExt<Voxel> hullManager = new HullManagerExt<>();
207+
int minx = Integer.MAX_VALUE;
208+
int maxx = Integer.MIN_VALUE;
209+
int miny = Integer.MAX_VALUE;
210+
int maxy = Integer.MIN_VALUE;
211+
int minz = Integer.MAX_VALUE;
212+
int maxz = Integer.MIN_VALUE;
141213
for (Voxel voxel : data.getVisibleLayerVoxel()) {
142214
hullManager.update(voxel.posId, voxel);
143215
minx = Math.min(minx, voxel.x);
@@ -149,11 +221,18 @@ public ExportDataManager(ProgressDialog dialog, ConsoleInterface console, Data d
149221
}
150222
layerNames.add("Merged");
151223
hullManagers.add(hullManager);
224+
centers.add(new float[] {(minx + maxx) / 2f, (miny + maxy) / 2f, (minz + maxz) / 2f});
225+
gminx = Math.min(gminx, minx);
226+
gmaxx = Math.max(gmaxx, maxx);
227+
gminy = Math.min(gminy, miny);
228+
gmaxy = Math.max(gmaxy, maxy);
229+
gminz = Math.min(gminz, minz);
230+
gmaxz = Math.max(gmaxz, maxz);
152231
}
153232
center = new float[] {
154-
(minx + maxx) / 2f,
155-
(miny + maxy) / 2f,
156-
(minz + maxz) / 2f
233+
(gminx + gmaxx) / 2f,
234+
(gminy + gmaxy) / 2f,
235+
(gminz + gmaxz) / 2f
157236
};
158237

159238
// store references
@@ -308,8 +387,10 @@ private short[][][] fix3DTJunctionProblems(HullManagerExt<Voxel> hullManager, sh
308387
private void extract(final int algorithm) {
309388
setActivity("Extracting Mesh...", false);
310389
// loop over all managers
311-
for (final HullManagerExt<Voxel> hullManager : hullManagers) {
312-
final TexTriangleManager triangleManager = new TexTriangleManager();
390+
for (int i = 0; i < hullManagers.size(); i++) {
391+
final int finalI = i;
392+
HullManagerExt<Voxel> hullManager = hullManagers.get(i);
393+
final TexTriangleManager triangleManager = new TexTriangleManager();
313394
triangleManagers.add(triangleManager);
314395
// loop over all sides
315396
for (int side = 0; side < 6; side++) {
@@ -487,25 +568,7 @@ public boolean execute(int rgb, Collection<DelaunayTriangle> tris) {
487568
texTri.invert(1);
488569
texTri.invert(2);
489570

490-
if (originMode == ColladaExportWrapper.ORIGIN_CROSS) {
491-
texTri.move(0.5f, 0.5f, 0.5f); // move one up
492-
} else if (originMode == ColladaExportWrapper.ORIGIN_CENTER) {
493-
texTri.move(center[0] + 0.5f, center[2] + 0.5f, center[1] + 0.5f);
494-
} else if (originMode == ColladaExportWrapper.ORIGIN_PLANE_CENTER) {
495-
texTri.move(center[0] + 0.5f, center[2] + 0.5f, 1f);
496-
} else if (originMode == ColladaExportWrapper.ORIGIN_BOX_CENTER) {
497-
texTri.move(
498-
DynamicSettings.VOXEL_PLANE_SIZE_X % 2 == 0 ? 0f : 0.5f,
499-
DynamicSettings.VOXEL_PLANE_SIZE_Z % 2 == 0 ? 0f : 0.5f,
500-
1f - DynamicSettings.VOXEL_PLANE_RANGE_Y
501-
);
502-
} else if (originMode == ColladaExportWrapper.ORIGIN_BOX_PLANE_CENTER) {
503-
texTri.move(
504-
DynamicSettings.VOXEL_PLANE_SIZE_X % 2 == 0 ? 0f : 0.5f,
505-
DynamicSettings.VOXEL_PLANE_SIZE_Z % 2 == 0 ? 0f : 0.5f,
506-
1f
507-
);
508-
}
571+
texTri.move(centers.get(finalI)[0] + 0.5f, centers.get(finalI)[2] + 0.5f, centers.get(finalI)[1] + 0.5f);
509572

510573
if (useYUP) {
511574
texTri.swap(1, 2);

src/main/java/com/vitco/app/importer/VoxImporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ protected boolean read(FileIn fileIn, RandomAccessFileIn raf) throws IOException
116116
return false;
117117
}
118118

119-
ArrayList<Integer> voxels = new ArrayList<Integer>();
119+
ArrayList<Integer> voxels = new ArrayList<>();
120120
int[] palette = voxColors;
121121

122122
int[] offset = new int[3];
@@ -169,7 +169,7 @@ protected boolean read(FileIn fileIn, RandomAccessFileIn raf) throws IOException
169169
for (Integer voxel : voxels) {
170170
buf.position(0);
171171
buf.putInt(voxel);
172-
addVoxel(offset[0] -(buf.get(0) & 0xFF), -(buf.get(2) & 0xFF), -offset[1] + (buf.get(1) & 0xFF), palette[(buf.get(3) & 0xFF) - 1]);
172+
addVoxel(-offset[0] + (buf.get(0) & 0xFF) - 1, -(buf.get(2) & 0xFF),-offset[1] + (buf.get(1) & 0xFF), palette[(buf.get(3) & 0xFF) - 1]);
173173
}
174174

175175
return true;

0 commit comments

Comments
 (0)