Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

import org.mtr.mapping.annotation.MappedMethod;
import org.mtr.mapping.holder.Identifier;
import org.mtr.mapping.render.model.RawMesh;
import org.mtr.mapping.tool.DummyClass;

import javax.annotation.Nullable;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;

Expand Down Expand Up @@ -42,6 +44,11 @@ public void addCube(ModelPartExtension modelPart, double x, double y, double z,
}

public static final class ObjModel {

@MappedMethod
public static Map<String, ObjModel> createObjModel(Map<String, List<RawMesh>> rawMeshesMap, boolean flipTextureV){
return new HashMap<>();
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public OptimizedModel(OptimizedModel... optimizedModels) {
uploadedParts.addAll(optimizedModel.uploadedParts);
}
}

@MappedMethod
public void close() {
uploadedParts.forEach(VertexArray::close);
Expand Down Expand Up @@ -133,13 +133,9 @@ private ObjModel(
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

public static Map<String, ObjModel> createObjModel(Map<String, List<RawMesh>> rawMeshesMap, boolean flipTextureV) {
final Map<String, ObjModel> objModels = new HashMap<>();
ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel).forEach((key, rawMeshes) -> {
rawMeshesMap.forEach((key, rawMeshes) -> {
prepareRawMeshes(rawMeshes, flipTextureV);
final float[] bounds = {Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE};
rawMeshes.forEach(rawMesh -> {
Expand All @@ -161,6 +157,15 @@ public static Map<String, ObjModel> loadModel(String objString, Function<String,
return objModels;
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

return createObjModel(ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel), flipTextureV);
}

@MappedMethod
public static Map<String, List<RawMesh>> loadRawModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
Expand Down Expand Up @@ -237,6 +242,7 @@ public float getMaxY() {
public float getMaxZ() {
return maxZ;
}

private static void prepareRawMeshes(List<RawMesh> rawMeshes, boolean flipTextureV) {
rawMeshes.forEach(rawMesh -> {
rawMesh.applyRotation(new Vector3f(1, 0, 0), 180);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.mtr.mapping.tool.DummyClass;

import javax.annotation.Nullable;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.util.*;
Expand All @@ -24,12 +25,12 @@ public static Map<String, List<RawMesh>> loadModel(String objString, Function<St
final Map<String, List<RawMesh>> result = new HashMap<>();

try {
final Obj sourceObj = ObjReader.read(IOUtils.toInputStream(objString, StandardCharsets.UTF_8));
final Obj sourceObj = ObjReader.read(new InputStreamReader(IOUtils.toInputStream(objString, StandardCharsets.UTF_8), StandardCharsets.UTF_8));

final Map<String, Mtl> materials = new HashMap<>();
sourceObj.getMtlFileNames().forEach(mtlFileName -> {
try {
MtlReader.read(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
MtlReader.read(new InputStreamReader(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
} catch (Exception e) {
DummyClass.logException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,13 +133,9 @@ private ObjModel(
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

public static Map<String, ObjModel> createObjModel(Map<String, List<RawMesh>> rawMeshesMap, boolean flipTextureV) {
final Map<String, ObjModel> objModels = new HashMap<>();
ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel).forEach((key, rawMeshes) -> {
rawMeshesMap.forEach((key, rawMeshes) -> {
prepareRawMeshes(rawMeshes, flipTextureV);
final float[] bounds = {Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE};
rawMeshes.forEach(rawMesh -> {
Expand All @@ -161,6 +157,15 @@ public static Map<String, ObjModel> loadModel(String objString, Function<String,
return objModels;
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

return createObjModel(ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel), flipTextureV);
}

@MappedMethod
public static Map<String, List<RawMesh>> loadRawModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.mtr.mapping.tool.DummyClass;

import javax.annotation.Nullable;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.util.*;
Expand All @@ -24,12 +25,12 @@ public static Map<String, List<RawMesh>> loadModel(String objString, Function<St
final Map<String, List<RawMesh>> result = new HashMap<>();

try {
final Obj sourceObj = ObjReader.read(IOUtils.toInputStream(objString, StandardCharsets.UTF_8));
final Obj sourceObj = ObjReader.read(new InputStreamReader(IOUtils.toInputStream(objString, StandardCharsets.UTF_8), StandardCharsets.UTF_8));

final Map<String, Mtl> materials = new HashMap<>();
sourceObj.getMtlFileNames().forEach(mtlFileName -> {
try {
MtlReader.read(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
MtlReader.read(new InputStreamReader(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
} catch (Exception e) {
DummyClass.logException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,13 +133,9 @@ private ObjModel(
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

public static Map<String, ObjModel> createObjModel(Map<String, List<RawMesh>> rawMeshesMap, boolean flipTextureV) {
final Map<String, ObjModel> objModels = new HashMap<>();
ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel).forEach((key, rawMeshes) -> {
rawMeshesMap.forEach((key, rawMeshes) -> {
prepareRawMeshes(rawMeshes, flipTextureV);
final float[] bounds = {Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE};
rawMeshes.forEach(rawMesh -> {
Expand All @@ -161,6 +157,15 @@ public static Map<String, ObjModel> loadModel(String objString, Function<String,
return objModels;
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

return createObjModel(ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel), flipTextureV);
}

@MappedMethod
public static Map<String, List<RawMesh>> loadRawModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.mtr.mapping.tool.DummyClass;

import javax.annotation.Nullable;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.util.*;
Expand All @@ -24,12 +25,12 @@ public static Map<String, List<RawMesh>> loadModel(String objString, Function<St
final Map<String, List<RawMesh>> result = new HashMap<>();

try {
final Obj sourceObj = ObjReader.read(IOUtils.toInputStream(objString, StandardCharsets.UTF_8));
final Obj sourceObj = ObjReader.read(new InputStreamReader(IOUtils.toInputStream(objString, StandardCharsets.UTF_8), StandardCharsets.UTF_8));

final Map<String, Mtl> materials = new HashMap<>();
sourceObj.getMtlFileNames().forEach(mtlFileName -> {
try {
MtlReader.read(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
MtlReader.read(new InputStreamReader(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
} catch (Exception e) {
DummyClass.logException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,13 +133,9 @@ private ObjModel(
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

public static Map<String, ObjModel> createObjModel(Map<String, List<RawMesh>> rawMeshesMap, boolean flipTextureV) {
final Map<String, ObjModel> objModels = new HashMap<>();
ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel).forEach((key, rawMeshes) -> {
rawMeshesMap.forEach((key, rawMeshes) -> {
prepareRawMeshes(rawMeshes, flipTextureV);
final float[] bounds = {Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE};
rawMeshes.forEach(rawMesh -> {
Expand All @@ -161,6 +157,15 @@ public static Map<String, ObjModel> loadModel(String objString, Function<String,
return objModels;
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

return createObjModel(ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel), flipTextureV);
}

@MappedMethod
public static Map<String, List<RawMesh>> loadRawModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.mtr.mapping.tool.DummyClass;

import javax.annotation.Nullable;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.util.*;
Expand All @@ -24,12 +25,12 @@ public static Map<String, List<RawMesh>> loadModel(String objString, Function<St
final Map<String, List<RawMesh>> result = new HashMap<>();

try {
final Obj sourceObj = ObjReader.read(IOUtils.toInputStream(objString, StandardCharsets.UTF_8));
final Obj sourceObj = ObjReader.read(new InputStreamReader(IOUtils.toInputStream(objString, StandardCharsets.UTF_8), StandardCharsets.UTF_8));

final Map<String, Mtl> materials = new HashMap<>();
sourceObj.getMtlFileNames().forEach(mtlFileName -> {
try {
MtlReader.read(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
MtlReader.read(new InputStreamReader(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
} catch (Exception e) {
DummyClass.logException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,13 +133,9 @@ private ObjModel(
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

public static Map<String, ObjModel> createObjModel(Map<String, List<RawMesh>> rawMeshesMap, boolean flipTextureV) {
final Map<String, ObjModel> objModels = new HashMap<>();
ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel).forEach((key, rawMeshes) -> {
rawMeshesMap.forEach((key, rawMeshes) -> {
prepareRawMeshes(rawMeshes, flipTextureV);
final float[] bounds = {Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE};
rawMeshes.forEach(rawMesh -> {
Expand All @@ -161,6 +157,15 @@ public static Map<String, ObjModel> loadModel(String objString, Function<String,
return objModels;
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

return createObjModel(ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel), flipTextureV);
}

@MappedMethod
public static Map<String, List<RawMesh>> loadRawModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.mtr.mapping.tool.DummyClass;

import javax.annotation.Nullable;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.util.*;
Expand All @@ -24,12 +25,12 @@ public static Map<String, List<RawMesh>> loadModel(String objString, Function<St
final Map<String, List<RawMesh>> result = new HashMap<>();

try {
final Obj sourceObj = ObjReader.read(IOUtils.toInputStream(objString, StandardCharsets.UTF_8));
final Obj sourceObj = ObjReader.read(new InputStreamReader(IOUtils.toInputStream(objString, StandardCharsets.UTF_8), StandardCharsets.UTF_8));

final Map<String, Mtl> materials = new HashMap<>();
sourceObj.getMtlFileNames().forEach(mtlFileName -> {
try {
MtlReader.read(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
MtlReader.read(new InputStreamReader(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
} catch (Exception e) {
DummyClass.logException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,13 +133,9 @@ private ObjModel(
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

public static Map<String, ObjModel> createObjModel(Map<String, List<RawMesh>> rawMeshesMap, boolean flipTextureV) {
final Map<String, ObjModel> objModels = new HashMap<>();
ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel).forEach((key, rawMeshes) -> {
rawMeshesMap.forEach((key, rawMeshes) -> {
prepareRawMeshes(rawMeshes, flipTextureV);
final float[] bounds = {Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE};
rawMeshes.forEach(rawMesh -> {
Expand All @@ -161,6 +157,15 @@ public static Map<String, ObjModel> loadModel(String objString, Function<String,
return objModels;
}

@MappedMethod
public static Map<String, ObjModel> loadModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
ATLAS_MANAGER.load(atlasIndex);
}

return createObjModel(ObjModelLoader.loadModel(objString, mtlResolver, textureResolver, ATLAS_MANAGER, splitModel), flipTextureV);
}

@MappedMethod
public static Map<String, List<RawMesh>> loadRawModel(String objString, Function<String, String> mtlResolver, Function<String, Identifier> textureResolver, @Nullable Identifier atlasIndex, boolean splitModel, boolean flipTextureV) {
if (atlasIndex != null) {
Expand Down Expand Up @@ -237,7 +242,6 @@ public float getMaxY() {
public float getMaxZ() {
return maxZ;
}

private static void prepareRawMeshes(List<RawMesh> rawMeshes, boolean flipTextureV) {
rawMeshes.forEach(rawMesh -> {
rawMesh.applyRotation(new Vector3f(1, 0, 0), 180);
Expand All @@ -246,6 +250,7 @@ private static void prepareRawMeshes(List<RawMesh> rawMeshes, boolean flipTextur
}
});
}

}

public enum ShaderType {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.mtr.mapping.tool.DummyClass;

import javax.annotation.Nullable;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.util.*;
Expand All @@ -24,12 +25,12 @@ public static Map<String, List<RawMesh>> loadModel(String objString, Function<St
final Map<String, List<RawMesh>> result = new HashMap<>();

try {
final Obj sourceObj = ObjReader.read(IOUtils.toInputStream(objString, StandardCharsets.UTF_8));
final Obj sourceObj = ObjReader.read(new InputStreamReader(IOUtils.toInputStream(objString, StandardCharsets.UTF_8), StandardCharsets.UTF_8));

final Map<String, Mtl> materials = new HashMap<>();
sourceObj.getMtlFileNames().forEach(mtlFileName -> {
try {
MtlReader.read(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
MtlReader.read(new InputStreamReader(IOUtils.toInputStream(mtlResolver.apply(mtlFileName.replace("\\\\", "/").replace("\\", "/")), StandardCharsets.UTF_8), StandardCharsets.UTF_8)).forEach(mtl -> materials.put(mtl.getName(), mtl));
} catch (Exception e) {
DummyClass.logException(e);
}
Expand Down
Loading