From 0ce5ed9374f3f231a699ca2ca5f3eeff863ff745 Mon Sep 17 00:00:00 2001 From: cire3 Date: Thu, 20 Jun 2024 16:13:12 -0500 Subject: [PATCH] Features: add Optimized OBJ Converter, convert to gradle project for easier cross-platform/cross-software management, add tests, add QoL features, and update README & EaglerBinaryTools.jar , mark OBJConverter as deprecated in favor of the new one, and update EaglerBinaryTools.java to reflect this as well as update EaglerBinaryTools.jar --- .gitignore | 8 +- EaglerBinaryTools.jar | Bin 37829 -> 50461 bytes README.md | 2 +- build.gradle | 43 +++ generate_mdl_samples.bat | 18 ++ generate_mdl_samples_with_old.bat | 18 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 60756 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 234 ++++++++++++++ gradlew.bat | 89 ++++++ settings.gradle | 2 + .../bintools/EaglerBinaryTools.java | 123 +++++--- .../eaglercraft/bintools/OBJConverter.java | 10 +- .../bintools/OptimizedOBJConverter.java | 285 ++++++++++++++++++ .../bintools/TestOptimizedOBJConverter.java | 39 +++ 15 files changed, 825 insertions(+), 52 deletions(-) create mode 100644 build.gradle create mode 100644 generate_mdl_samples.bat create mode 100644 generate_mdl_samples_with_old.bat create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/net/lax1dude/eaglercraft/bintools/OptimizedOBJConverter.java create mode 100644 src/test/java/net/lax1dude/eaglercraft/bintools/TestOptimizedOBJConverter.java diff --git a/.gitignore b/.gitignore index 916b75b..ff99832 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ .classpath .project -bin \ No newline at end of file +bin + +.idea +samples/obj2mdl-fnaw/output +samples/obj2mdl-fnaw/tests +build +.gradle diff --git a/EaglerBinaryTools.jar b/EaglerBinaryTools.jar index 5895495f2343c0560965eb150fc072bea3ec4f0b..db1151149f445b050a5c8b7737ea50d0fa7db9c4 100644 GIT binary patch literal 50461 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 JZT{{gw@CBgsz literal 37829 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 Hbc1*RS6Fgy diff --git a/README.md b/README.md index 5a09130..cd1fa75 100644 --- a/README.md +++ b/README.md @@ -163,6 +163,6 @@ Mipmap levels will be generated automatically and embedded in the Eagler BMP fil ## Compiling and Contributing -The code in the `src/main/java` folder is written in plain Java. There are no dependencies besides what is already included by default in the JRE. Minimum required Java version is 8, just compile to JAR and you're ready to go. +The code in the `src/main/java` folder is written in plain Java. There are no dependencies besides what is already included by default in the JRE & JUnit for tests. Minimum required Java version is 8, just run `gradlew build`. **For a PR:** Tabs, not spaces, and format the code like the Eclipse auto format tool on factory settings. \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..fb76820 --- /dev/null +++ b/build.gradle @@ -0,0 +1,43 @@ +plugins { + id 'java' +} + +group = 'net.lax1dude.eaglercraft.bintools' +version = '' + +repositories { + mavenCentral() +} + +sourceSets { + main { + java { + srcDir 'src/main/java' + } + } +} + +dependencies { + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' + testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.2' + testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.2' +} + +jar { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + + compileJava.options.encoding = 'UTF-8' + javadoc.options.encoding = 'UTF-8' + javadoc.options.addStringOption('Xdoclint:none', '-quiet') + + manifest { + attributes( + 'Main-Class': 'net.lax1dude.eaglercraft.bintools.EaglerBinaryTools' + ) + } +} + +test { + useJUnitPlatform() +} \ No newline at end of file diff --git a/generate_mdl_samples.bat b/generate_mdl_samples.bat new file mode 100644 index 0000000..2a568b5 --- /dev/null +++ b/generate_mdl_samples.bat @@ -0,0 +1,18 @@ +@echo off +title Generate_MDLs +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/charles0.obj samples/obj2mdl-fnaw/output/charles0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/charles1.obj samples/obj2mdl-fnaw/output/charles1.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/charles2_eyes.obj samples/obj2mdl-fnaw/output/charles2.mdl false +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/laxativedude0.obj samples/obj2mdl-fnaw/output/laxativedude0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/laxativedude1.obj samples/obj2mdl-fnaw/output/laxativedude1.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/laxativedude2.obj samples/obj2mdl-fnaw/output/laxativedude2.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/laxativedude3_eyes.obj samples/obj2mdl-fnaw/output/laxativedude3.mdl false +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/longarms0.obj samples/obj2mdl-fnaw/output/longarms0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/longarms1.obj samples/obj2mdl-fnaw/output/longarms1.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/longarms2_eyes.obj samples/obj2mdl-fnaw/output/longarms2.mdl false +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/weirdclimber0.obj samples/obj2mdl-fnaw/output/weirdclimber0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/weirdclimber1.obj samples/obj2mdl-fnaw/output/weirdclimber1.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/weirdclimber2_eyes.obj samples/obj2mdl-fnaw/output/weirdclimber2.mdl false +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/winston0.obj samples/obj2mdl-fnaw/output/winston0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8 samples/obj2mdl-fnaw/winston1_eyes.obj samples/obj2mdl-fnaw/output/winston1.mdl false +pause \ No newline at end of file diff --git a/generate_mdl_samples_with_old.bat b/generate_mdl_samples_with_old.bat new file mode 100644 index 0000000..741cfef --- /dev/null +++ b/generate_mdl_samples_with_old.bat @@ -0,0 +1,18 @@ +@echo off +title Generate_MDLs +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/charles0.obj samples/obj2mdl-fnaw/output/old/charles0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/charles1.obj samples/obj2mdl-fnaw/output/old/charles1.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/charles2_eyes.obj samples/obj2mdl-fnaw/output/old/charles2.mdl false +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/laxativedude0.obj samples/obj2mdl-fnaw/output/old/laxativedude0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/laxativedude1.obj samples/obj2mdl-fnaw/output/old/laxativedude1.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/laxativedude2.obj samples/obj2mdl-fnaw/output/old/laxativedude2.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/laxativedude3_eyes.obj samples/obj2mdl-fnaw/output/old/laxativedude3.mdl false +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/longarms0.obj samples/obj2mdl-fnaw/output/old/longarms0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/longarms1.obj samples/obj2mdl-fnaw/output/old/longarms1.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/longarms2_eyes.obj samples/obj2mdl-fnaw/output/old/longarms2.mdl false +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/weirdclimber0.obj samples/obj2mdl-fnaw/output/old/weirdclimber0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/weirdclimber1.obj samples/obj2mdl-fnaw/output/old/weirdclimber1.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/weirdclimber2_eyes.obj samples/obj2mdl-fnaw/output/old/weirdclimber2.mdl false +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/winston0.obj samples/obj2mdl-fnaw/output/old/winston0.mdl true +java -jar EaglerBinaryTools.jar obj2mdl1.8-old samples/obj2mdl-fnaw/winston1_eyes.obj samples/obj2mdl-fnaw/output/old/winston1.mdl false +pause \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..249e5832f090a2944b7473328c07c9755baa3196 GIT binary patch literal 60756 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..bef84df --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'EaglerBinaryTools' + diff --git a/src/main/java/net/lax1dude/eaglercraft/bintools/EaglerBinaryTools.java b/src/main/java/net/lax1dude/eaglercraft/bintools/EaglerBinaryTools.java index bf80733..0897618 100644 --- a/src/main/java/net/lax1dude/eaglercraft/bintools/EaglerBinaryTools.java +++ b/src/main/java/net/lax1dude/eaglercraft/bintools/EaglerBinaryTools.java @@ -25,55 +25,78 @@ public class EaglerBinaryTools { String[] argz = new String[args.length - 1]; System.arraycopy(args, 1, argz, 0, argz.length); switch(args[0].toLowerCase()) { - case "epkcompiler": - case "epkcompile": - EPKCompiler._main(argz); - return; - case "legacy-epkcompiler": - case "legacyepkcompiler": - case "legacy-epkcompile": - case "legacyepkcompile": - EPKCompilerLegacy._main(argz); - return; - case "epkdecompiler": - EPKDecompiler._main(argz); - return; - case "obj2mdl-1.5": - case "obj2mdl1.5": - OBJConverter._main(argz, false); - return; - case "obj2mdl-1.8": - case "obj2mdl1.8": - case "obj2mdl": - OBJConverter._main(argz, true); - return; - case "ebp-encode": - case "ebpencode": - case "ebp-encoder": - case "ebpencoder": - EBPFileEncoder._main(argz); - return; - case "ebp-decode": - case "ebpdecode": - case "ebp-decoder": - case "ebpdecoder": - EBPFileDecoder._main(argz); - return; - case "skybox-gen": - case "skyboxgen": - SkyboxGen._main(argz); - return; - case "light-mesh-gen": - case "lightmeshgen": - LightMeshGen._main(argz); - return; - case "eagler-bmp-gen": - case "eaglerbmpgen": - EaglerBMPGen._main(argz); - return; - default: - usage(); - return; + case "epkcompiler": + case "epkcompile": + EPKCompiler._main(argz); + return; + case "legacy-epkcompiler": + case "legacyepkcompiler": + case "legacy-epkcompile": + case "legacyepkcompile": + EPKCompilerLegacy._main(argz); + return; + case "epkdecompiler": + EPKDecompiler._main(argz); + return; + case "obj2mdl-1.5-old": + case "obj2mdl-1.5old": + case "obj2mdl1.5-old": + case "obj2mdl1.5old": + OBJConverter._main(argz, false); + return; + case "obj2mdl-1.8-old": + case "obj2mdl-1.8old": + case "obj2mdl1.8-old": + case "obj2mdl-old": + case "obj2mdlold": + OBJConverter._main(argz, true); + return; + case "obj2mdl-1.5-new": + case "obj2mdl-1.5new": + case "obj2mdl1.5-new": + case "obj2mdl1.5new": + case "obj2mdl-1.5": + case "obj2mdl1.5": + OptimizedOBJConverter._main(argz, false); + return; + case "obj2mdl-1.8-new": + case "obj2mdl-1.8new": + case "obj2mdl1.8-new": + case "obj2mdl1.8new": + case "obj2mdl-new": + case "obj2mdlnew": + case "obj2mdl-1.8": + case "obj2mdl1.8": + case "obj2mdl": + OptimizedOBJConverter._main(argz, true); + return; + case "ebp-encode": + case "ebpencode": + case "ebp-encoder": + case "ebpencoder": + EBPFileEncoder._main(argz); + return; + case "ebp-decode": + case "ebpdecode": + case "ebp-decoder": + case "ebpdecoder": + EBPFileDecoder._main(argz); + return; + case "skybox-gen": + case "skyboxgen": + SkyboxGen._main(argz); + return; + case "light-mesh-gen": + case "lightmeshgen": + LightMeshGen._main(argz); + return; + case "eagler-bmp-gen": + case "eaglerbmpgen": + EaglerBMPGen._main(argz); + return; + default: + usage(); + return; } } @@ -84,6 +107,8 @@ public class EaglerBinaryTools { System.out.println(" - 'epkdecompiler': Decompile an EPK file into a folder"); System.out.println(" - 'obj2mdl-1.5': Compile FNAW skin MDL file for 1.5"); System.out.println(" - 'obj2mdl-1.8': Compile FNAW skin MDL file for 1.8"); + System.out.println(" - 'obj2mdl-1.5-old': Compile FNAW skin MDL file for 1.5 using the old OBJ converter"); + System.out.println(" - 'obj2mdl-1.8-old': Compile FNAW skin MDL file for 1.8 using the old OBJ converter"); System.out.println(" - 'ebp-encode': Encode EBP file from PNG"); System.out.println(" - 'ebp-decode': Decode EBP file to PNG"); System.out.println(" - 'skybox-gen': Generate skybox.dat from OBJ for shader packs"); diff --git a/src/main/java/net/lax1dude/eaglercraft/bintools/OBJConverter.java b/src/main/java/net/lax1dude/eaglercraft/bintools/OBJConverter.java index f8e4d9d..d35463a 100644 --- a/src/main/java/net/lax1dude/eaglercraft/bintools/OBJConverter.java +++ b/src/main/java/net/lax1dude/eaglercraft/bintools/OBJConverter.java @@ -28,6 +28,7 @@ import java.util.List; * POSSIBILITY OF SUCH DAMAGE. * */ +@Deprecated public class OBJConverter { public static void _main(String[] args, boolean v1_8) throws IOException { @@ -48,7 +49,14 @@ public class OBJConverter { File output = new File(args[1]); System.out.println("Exporting " + (v1_8 ? "1.8" : "1.5") + " MDL: " + output.getAbsolutePath()); boolean tex = args[2].equalsIgnoreCase("true") || args[2].equals("1"); - try(FileOutputStream fs = new FileOutputStream(output)) { + if (!output.exists()) { + if (!output.getParentFile().exists()) + if (!output.getParentFile().mkdirs()) + throw new RuntimeException("Failed to create parent dir!"); + if (!output.createNewFile()) + throw new RuntimeException("Failed to create file!"); + } + try(FileOutputStream fs = new FileOutputStream(output, false)) { convertModel(lns, fs, tex, v1_8); } if(tex) { diff --git a/src/main/java/net/lax1dude/eaglercraft/bintools/OptimizedOBJConverter.java b/src/main/java/net/lax1dude/eaglercraft/bintools/OptimizedOBJConverter.java new file mode 100644 index 0000000..d88c18b --- /dev/null +++ b/src/main/java/net/lax1dude/eaglercraft/bintools/OptimizedOBJConverter.java @@ -0,0 +1,285 @@ +package net.lax1dude.eaglercraft.bintools; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.*; + +public class OptimizedOBJConverter { + + public static void _main(String[] args, boolean v1_8) throws IOException { + if(args.length != 3) { + System.out.println("Usage: obj2mdl-" + (v1_8 ? "1.8" : "1.5") + " "); + System.out.println("Input file format is Wavefront OBJ file exported from your 3D modeling program"); + System.out.println("Texture mode can be 'true' or 'false' to enable/disable exporting texture UV coordinates"); + return; + } + System.out.println("Reading input file..."); + List lns = new ArrayList(); + try(BufferedReader bu = new BufferedReader(new FileReader(new File(args[0])))) { + String s; + while((s = bu.readLine()) != null) { + lns.add(s); + } + } + File output = new File(args[1]); + System.out.println("Exporting " + (v1_8 ? "1.8" : "1.5") + " MDL: " + output.getAbsolutePath()); + boolean tex = args[2].equalsIgnoreCase("true") || args[2].equals("1"); + if (!output.exists()) { + if (!output.getParentFile().exists()) + if (!output.getParentFile().mkdirs()) + throw new RuntimeException("Failed to create parent dir!"); + if (!output.createNewFile()) + throw new RuntimeException("Failed to create file!"); + } + try(FileOutputStream fs = new FileOutputStream(output)) { + convertModel(lns, fs, tex, v1_8); + } + if(tex) { + System.out.println("Export with UVs completed!"); + }else { + System.out.println("Export without UVs competed!"); + } + } + + public static void convertModel(Collection lines, OutputStream out, boolean textureMode, boolean v1_8) throws IOException { + List vertexes = new ArrayList(); + List normals = new ArrayList(); + List texcoords = new ArrayList(); + List faces = new ArrayList(); + List vboentries = new ArrayList(); + IndexLinkedHashSet indexablevboentries = new IndexLinkedHashSet<>(); + List indexbuffer = new ArrayList(); + for(String ul : lines) { + String[] l = ul.split(" "); + if(l[0].equals("v")) { + vertexes.add(new float[] {Float.parseFloat(l[1]), Float.parseFloat(l[2]), Float.parseFloat(l[3])}); + } + if(l[0].equals("vn")) { + int dumb = v1_8 ? 0 : 127; + normals.add(new byte[] {(byte)((int)(Float.parseFloat(l[1]) * 127.0F) + dumb), (byte)((int)(Float.parseFloat(l[2]) * 127.0F) + dumb), (byte)((int)(Float.parseFloat(l[3]) * 127.0F) + dumb), (byte)0}); + } + if(textureMode) { + if(l[0].equals("vt")) { + texcoords.add(new float[] {Float.parseFloat(l[1]), 1.0f - Float.parseFloat(l[2])}); + } + } + if(l[0].equals("f")) { + if(l.length != 4) { + printTriangulationMessage(); + throw new IOException("Incompatible model! (This can be fixed)"); + } + String[] v1 = l[1].split("/"); + String[] v2 = l[2].split("/"); + String[] v3 = l[3].split("/"); + faces.add(new int[][] { + {Integer.parseInt(v1[0]), Integer.parseInt(v1[1]), Integer.parseInt(v1[2])}, + {Integer.parseInt(v2[0]), Integer.parseInt(v2[1]), Integer.parseInt(v2[2])}, + {Integer.parseInt(v3[0]), Integer.parseInt(v3[1]), Integer.parseInt(v3[2])} + }); + } + } + + for(int[][] f : faces) { + + for(int i = 0; i < 3; i++) { + byte[] b = new byte[textureMode ? 24 : 16]; + + float[] v = vertexes.get(f[i][0]-1); + + int ix = Float.floatToRawIntBits(v[0]); + int iy = Float.floatToRawIntBits(v[1]); + int iz = Float.floatToRawIntBits(v[2]); + + int idx = 0; + + b[idx++] = (byte)(ix); b[idx++] = (byte)(ix >> 8); b[idx++] = (byte)(ix >> 16); b[idx++] = (byte)(ix >> 24); + b[idx++] = (byte)(iy); b[idx++] = (byte)(iy >> 8); b[idx++] = (byte)(iy >> 16); b[idx++] = (byte)(iy >> 24); + b[idx++] = (byte)(iz); b[idx++] = (byte)(iz >> 8); b[idx++] = (byte)(iz >> 16); b[idx++] = (byte)(iz >> 24); + + byte[] n = normals.get(f[i][2]-1); + + b[idx++] = n[0]; + b[idx++] = n[1]; + b[idx++] = n[2]; + b[idx++] = n[3]; + + if(textureMode) { + float[] t = texcoords.get(f[i][1]-1); + int ix3 = Float.floatToRawIntBits(t[0]); + int iy3 = Float.floatToRawIntBits(t[1]); + + b[idx++] = (byte)(ix3); b[idx++] = (byte)(ix3 >> 8); b[idx++] = (byte)(ix3 >> 16); b[idx++] = (byte)(ix3 >> 24); + b[idx++] = (byte)(iy3); b[idx++] = (byte)(iy3 >> 8); b[idx++] = (byte)(iy3 >> 16); b[idx++] = (byte)(iy3 >> 24); + } + + vboentries.add(b); + } + } + + for (byte[] v : vboentries) { + int l = indexablevboentries.size(); + + // HashSet is amortized constant time for contains + // (IndexLinkedHashSet is backed by an arraylist for indices and a HashSet for performance) + if (indexablevboentries.contains(ByteArray.of(v))) { + indexbuffer.add(indexablevboentries.indexOf(ByteArray.of(v))); + } else { + if (l > 65535) + throw new RuntimeException("Too many vertices!"); + indexbuffer.add(l); + indexablevboentries.add(ByteArray.of(v)); + } + } + + DataOutputStream o = new DataOutputStream(out); + o.write((v1_8 ? "!EAG$mdl" : "!EAG%mdl").getBytes(StandardCharsets.US_ASCII)); + o.write(textureMode ? (byte)'T' : (byte)'C'); + + o.writeUTF("\n\nthis file was generated with EaglerBinaryTools\n\n"); + + o.writeInt(indexablevboentries.size()); + o.writeInt(indexbuffer.size()); + for(int i = 0; i < indexablevboentries.size(); ++i) { + byte[] b = indexablevboentries.get(i).array; + o.write(b, 0, b.length); + } + for(int i : indexbuffer) { + o.write((byte)i); + o.write((byte)(i >> 8)); + } + o.write("_:>+".getBytes(StandardCharsets.US_ASCII)); + + o.close(); + } + + static void printTriangulationMessage() { + System.err.println("====================================="); + System.err.println("THIS OBJ FILE IS NOT COMPATIBLE WITH EAGLERCRAFT!"); + System.err.println(); + System.err.println("Eaglercraft meshes can only have triangles in them."); + System.err.println(); + System.err.println("If you're using Blender, add the \"triangulate\""); + System.err.println("modifier to the mesh before exporting to fix"); + System.err.println("====================================="); + } + + /* + * Copied from https://stackoverflow.com/a/77179230 + * */ + public static final class IndexLinkedHashSet implements Set { + private final ArrayList list = new ArrayList<>( ); + private final HashSet set = new HashSet<> ( ); + + public synchronized boolean add(E e) { + if ( set.add(e) ) { + return list.add(e); + } + return false; + } + + public synchronized boolean remove(Object o) { + if ( set.remove(o) ) { + return list.remove(o); + } + return false; + } + + @Override + public boolean containsAll(Collection c) { + return set.containsAll(c); + } + + public synchronized void clear() { + set.clear(); + list.clear(); + } + + public synchronized E get(int index) { + return list.get(index); + } + + + // Added this function + public synchronized int indexOf(E element) { + return list.indexOf(element); + } + // + + public synchronized boolean removeAll(Collection c) { + if ( set.removeAll(c) ) { + return list.removeAll(c); + } + return true; + } + + public synchronized boolean retainAll(Collection c) { + if ( set.retainAll(c) ) { + return list.retainAll(c); + } + return false; + } + + public synchronized boolean addAll(Collection c) { + boolean modified = false; + for (E e : c) + if (add(e)) + modified = true; + return modified; + } + + @Override + public synchronized int size() { + return set.size(); + } + + @Override + public synchronized boolean isEmpty() { + return set.isEmpty(); + } + + @Override + public synchronized boolean contains(Object o) { + return set.contains(o); + } + + @Override + public synchronized Iterator iterator() { + return list.iterator(); + } + + @Override + public synchronized Object[] toArray() { + return list.toArray(); + } + + @Override + public synchronized T[] toArray(T[] a) { + return list.toArray(a); + } + } + + public static class ByteArray { + public final byte[] array; + + public ByteArray(byte[] array) { + this.array = array; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ByteArray byteArray = (ByteArray) o; + return Arrays.equals(array, byteArray.array); + } + + @Override + public int hashCode() { + return Arrays.hashCode(array); + } + + public static ByteArray of(byte... bytes) { + return new ByteArray(bytes); + } + } +} diff --git a/src/test/java/net/lax1dude/eaglercraft/bintools/TestOptimizedOBJConverter.java b/src/test/java/net/lax1dude/eaglercraft/bintools/TestOptimizedOBJConverter.java new file mode 100644 index 0000000..30e7a3f --- /dev/null +++ b/src/test/java/net/lax1dude/eaglercraft/bintools/TestOptimizedOBJConverter.java @@ -0,0 +1,39 @@ +package net.lax1dude.eaglercraft.bintools; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.platform.commons.annotation.Testable; + +import java.io.FileInputStream; +import java.io.IOException; + +@Testable +public class TestOptimizedOBJConverter { + @Test + @SuppressWarnings("ConstantConditions") + public void test() throws IOException { + String[] paramz = { + "samples/obj2mdl-fnaw/laxativedude1.obj", "samples/obj2mdl-fnaw/tests/output/laxativedude1.mdl", "true" + }; + OBJConverter._main(paramz, true); + paramz[1] = "samples/obj2mdl-fnaw/tests/output/o_laxativedude1.mdl"; + OptimizedOBJConverter._main(paramz, true); + + try (FileInputStream optimizedProgramOutput = new FileInputStream(paramz[1]); + FileInputStream originalProgramOutput = new FileInputStream( "samples/obj2mdl-fnaw/tests/output/laxativedude1.mdl")) { + + int o; + int r; + + while ((o = optimizedProgramOutput.read()) != -2 && (r = originalProgramOutput.read()) != -2) { + if (o == r && r == -1) + break; + + if (o != r) + Assertions.fail("Output is not the same!"); + } + } catch (Exception e) { + Assertions.fail(e.getMessage()); + } + } +}