Giter Site home page Giter Site logo

gliscowo / isometric-renders Goto Github PK

View Code? Open in Web Editor NEW
102.0 2.0 11.0 662 KB

Creates high-resolution isometric screenshots of Minecraft's game objects

Home Page: https://modrinth.com/mod/isometric-renders

License: MIT License

Java 100.00%
minecraft-mod rendering isometric-graphics utility

isometric-renders's Introduction

Isometric Renders

curseforge modrinth release discord

Overview

Isometric Renders allows you to take isometric screenshots, or rather, create renders of game objects like parts of world, blocks, items and entities. These are automatically keyed to have a transparent background and you can adjust scale, positioning and many more options right in-game in a fancy gui. This was designed with modded wikis or similar documentation in mind, should be easy to use and mostly pretty performant.

In-Depth documentation is available on the wiki

Currently Supported Rendering Targets

  • Items
  • Blocks
  • Entities
  • Areas of the world
  • Batch export of multiple blocks or items
  • Item Atlases (Overviews)

isometric-renders's People

Contributors

gliscowo avatar ivan-1f avatar minemobs avatar tort-oise avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

isometric-renders's Issues

owo-lib does not install automatically and the game won't start without it

In the release notes it is stated that "owo-lib is now a required dependency, installed automatically through sentinel" but when I installed isometric-renders from Modrinth using PolyMC the game wouldn't start and will be stuck at listing the installed mods Loading 181 mods: ....

After I installed owo-lib manually, everything worked again.

Incompatibility with 1.20 content in 1.19.4

When attempting to utilize 1.19.4's experimental features that allow for some 1.20 content, the mod cannot recognize the new content.
I understand if this is disabled for experimental content to avoid potential bugs, but that should be expected due to the fact that it's dubbed experimental.
Simple things like the cherry wood variants can't be rendered, even if the only difference is the textures and nothing else.

Player rendering

Not sure if it is a bug or an intended feature. Either way, I want to render player models.
Error

Transparency and shader support

Transparent pixels are appearing where they aren't supposed to be, see below (issue persist with different background colour export settings and different texturepacks). This makes sharing the renders a bit difficult because you either share the 50mb png render or convert to a jpg that can't do transparency.

Exported png on a red background (#ff0000)
image

Exported png on a dark background (#454545)
image

Also just curious if there's a possibility of shader support?

Add option to enable culling

Many isometric renders of closed spaces remove certain walls in order to show the interior, e.g as below
image

However, when rendering a closed or underground space, the buildings are obscured by stone or other wall materials.
area_render_9

With this in mind, is it possible to add an option to cull chosen surfaces/blocks?

Please more wiki about this mod

Today when I used this mod, I suddenly discover that the shortcut key "C" and "shift+C" can select the area more easily. But I can't find any hint about this in the wiki. So please more help about this mod which is wonderful. Thanks~

Not find FFmpeg

Hello, I decided to update the build of mods to 1.19 and found that on the new version your mod cannot detect ffmpeg. I checked ffmpeg with the old version and everything was fine.

Campfire particles do not show in area render

The particles emitted from campfires do not show in the area render.

I tested a plain campfire which should emit minecraft:campfire_cosy_smoke.
I assume minecraft:campfire_signal_smoke also does not show, but have not tested this directly.

Tested using version 0.2.7 on MC 1.17.1.

Game crashes when I try launching

When I try launching the game it crashes

Launcher:GDLauncher

Mods:Betterf3, Boosted-brightness, fabric capes, clumps, fabric-api, fabric language kotlin, iris, isometric renders, logical zoom, litematica, mallib, minecraftcapes, modmenu, simple voice chat, xaeros minimap, xaeros worldmap.

Version:1.17.1

[Suggestion] Improve render file sizes / add post-processing configuration

Currently when saving renders the mod uses net.minecraft.client.texture.NativeImage's writeTo method, which ultimately calls STBImageWrite.nstbi_write_png_to_func which is frankly terrible at compression:

LWJGL JavaDoc for STBImageWrite

The PNG output is not optimal; it is 20-50% larger than the file written by a decent optimizing implementation; though providing a custom zlib compress function (see zlib_compress) can mitigate that. This library is designed for source code compactness and simplicity, not optimal image file size or run-time performance.

Solutions?

  1. Endeavor to provide a better zlib compress function, as suggested in the JavaDoc.
  2. Adjust stbi_write_png_compression_level global variable ("// defaults to 8; set to higher for more compression" - if it's normal zlib stuff I'd expect 9 to be the max, but it's somewhat vague).
  3. Don't use NativeImage to compress/write the file, instead use something like:
    • javax.imageio.ImageIO which has moderately better compression available, and a bit more control while you're at it.
    • pngtastic which does some extremely good compression of PNG images.
  4. If compressing in-memory before writing to disk is too tricky, the image can be written to disk and then have a compressor/optimizer called on it.

Additional nice-to-have:

  1. Compression options for animations, too:
    • APNG: Pngtastic
    • GIF: Gifsicle perhaps
    • MP4 (and also potentially both of the above) - just improve the parameters passed to FFmpeg. I'd be happy to help tune them for best results. (This is also something that could and, IMO, should, be user-configurable.)
  2. Config options for how exactly renders get processed before/after written to disk, ideally allowing fully custom commands to be configured to run on newly written renders.

Isometric Renders doesn't support the Fabric Renderer API

The title explains itself mostly.

2021-09-11_22-06

As you can see on this screenshot, in world the daffodil renders in the big flower pot, but in isometric renders it doesn't render at all, the Fabric Renderer API models are entirely ignored.

chests not rendered

Chests don't render in my screenshots, is there any reason why? and or can i activate it somewhere?

Command suggestions not showing up

Currently the /isorender command is shown by Minecraft as an incomplete/nonexistent command. It'd be nice if I could type it in and I'd get a preview of all the available subcommand and the main /isorender command.

image

i cannot deselect an area

i joined a different world and the box was still at the original coordnates. I cannot remove the box.

Crash when rendering fluid

crash-2022-07-01_23.37.21-client.txt

java.lang.NullPointerException: Cannot read field "field_21652" because "☃" is null
	at net.minecraft.class_1162.method_22674(class_1162.java:125)
	at net.minecraft.class_4588.method_22918(class_4588.java:125)
	at com.glisco.worldmesher.renderers.WorldMesherFluidRenderer.method_23072(WorldMesherFluidRenderer.java:21)
	at net.minecraft.class_775.method_3347(class_775.java:179)
	at net.fabricmc.fabric.impl.client.rendering.fluid.FluidRenderHandlerRegistryImpl.renderFluid(FluidRenderHandlerRegistryImpl.java:124)
	at net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandler.renderFluid(FluidRenderHandler.java:85)
	at net.minecraft.class_775.tessellateViaHandler(class_775.java:593)
	at net.minecraft.class_775.handler$cei000$tesselate(class_775.java:568)
	at net.minecraft.class_775.method_3347(class_775.java)
	at net.fabricmc.fabric.impl.client.rendering.fluid.FluidRenderHandlerRegistryImpl.renderFluid(FluidRenderHandlerRegistryImpl.java:124)
	at net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandler.renderFluid(FluidRenderHandler.java:85)
	at net.minecraft.class_775.tessellateViaHandler(class_775.java:593)
	at net.minecraft.class_775.handler$cei000$tesselate(class_775.java:568)
	at net.minecraft.class_775.method_3347(class_775.java)
	at net.minecraft.class_776.method_3352(class_776.java:76)
	at net.minecraft.class_846$class_851$class_4578.method_22785(class_846.java:509)
	at net.minecraft.class_846$class_851$class_4578.method_22783(class_846.java:447)
	at net.minecraft.class_846.method_22757(class_846.java:132)
	at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1183)
	at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2305)
	at net.minecraft.class_846.method_22763(class_846.java:132)
	at net.minecraft.class_846.method_23618(class_846.java:147)
	at net.minecraft.class_3846.method_16907(class_3846.java:91)
	at net.minecraft.class_3846.method_16900(class_3846.java:146)
	at net.minecraft.class_3846.run(class_3846.java:102)
	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1434)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:295)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1016)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1665)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1598)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

Does not work on MacOS

Isometric Renders forcibly initializes AWT, which causes the game to never launch on MacOS. AWT is incompatible with LWJGL on Mac due to Mac's rendering constraints. An alternative method for copying images would be necessary. I know this is meant to be a Mac workaround, but it does result in the game hanging as soon as the window tries to open.

Tall Grass/Fern are uncolored

Hi glisco,
already having fun creating beautiful renders with your mod.
While rendering larger natural areas, I noticed an issue.

Foliage colors don't seem to apply to tall grass and tall fern (double blocks).

Steps to reproduce:

  • /give @s tall_grass
  • Place it down
  • Stand in it and use /isorender area ~ ~ ~ ~ ~1 ~

➡️ The rendered block will appear gray.

Area render not working with Iris

Rendering an area, via manual or hotkey selection, gives out an empty preview, as well as an empty fully transparent image.
The selection outline also doesn't show up.
I've guessed it was a mod incompatibility, and after removing everything but Isometric Renders, it works again.

After some testing, it would seems when playing with Iris, the early stage shader mod, area renders completely break (shader activated or not).

It's not problem to me, just thought I'd let it be known, so you can close this whenever.
Thanks for the great work!

Crash on render animation

With ffmpeg installed on linux if area render is animated minecraft crashes. However it doesn't crash instantly. If I disable rotation speed or animations in a few seconds after opening render preview screen it won't crash.
Also before ffmpeg installation it didn't crash.

Crash report (with NotEnoughCrashes):
crash-2022-06-16_23.08.27-client.txt

Installed ffmpeg:

ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared

how to remove area?

When i use my [ISO] keybind, then I see the white lines where I selected my area. But how do I remove those lines when I am finished with my render/ area?

This is what i mean:
image

Segmentation fault produced by only rendering air

Reproduction steps:
Get into a space with air.
Issue /isorender area ~ ~ ~ ~ ~ ~ or select a box full of air only.
It will crash.
hs_err_pid11558.log
Error that appears before it seg faults.
[14:47:25] [Render thread/INFO]: OpenGL debug message: id=1, source=API, type=ERROR, severity=HIGH, message='GL_INVALID_OPERATION in glBufferData(no buffer bound)'

1.12.2

add version 1.12.2 many servers still support this version and I would like to see this wonderful mod on 1.12.2

unable to batch render tags

This seems to happen whether items or blocks are specified no matter what.

I'm on Windows.

/isorender tag #minecraft:beds batch items

[10:01:06] [Render thread/WARN]: Error while executing client-sided command '/isorender tag #minecraft:beds batch items'
java.nio.file.InvalidPathException: Illegal char <:> at index 21: batches/tag_minecraft:beds/items/
	at sun.nio.fs.WindowsPathParser.normalize(Unknown Source) ~[?:?]
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source) ~[?:?]
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source) ~[?:?]
	at sun.nio.fs.WindowsPath.parse(Unknown Source) ~[?:?]
	at sun.nio.fs.WindowsFileSystem.getPath(Unknown Source) ~[?:?]
	at java.nio.file.Path.resolve(Unknown Source) ~[?:?]
	at com.glisco.isometricrenders.render.BatchRenderable.<init>(BatchRenderable.java:35) ~[isometric-renders-0.3.1+1.18.jar:?]
	at com.glisco.isometricrenders.render.BatchRenderable.of(BatchRenderable.java:45) ~[isometric-renders-0.3.1+1.18.jar:?]
	at com.glisco.isometricrenders.render.RenderTask.lambda$static$1(RenderTask.java:20) ~[isometric-renders-0.3.1+1.18.jar:?]
	at com.glisco.isometricrenders.command.IsorenderCommand.renderTagContents(IsorenderCommand.java:124) ~[isometric-renders-0.3.1+1.18.jar:?]
	at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:263) ~[brigadier-1.0.18.jar:?]
	at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:177) ~[brigadier-1.0.18.jar:?]
	at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:142) ~[brigadier-1.0.18.jar:?]
	at net.fabricmc.fabric.impl.command.client.ClientCommandInternals.executeCommand(ClientCommandInternals.java:89) ~[fabric-command-api-v1-1.1.9+d7c144a860-e25e6711fa98433e.jar:?]
	at net.minecraft.class_746.handler$zgi000$onSendChatMessage(class_746.java:2304) ~[client-intermediary.jar:?]
	at net.minecraft.class_746.method_3142(class_746.java) ~[client-intermediary.jar:?]
	at net.minecraft.class_437.method_25425(class_437.java:378) ~[client-intermediary.jar:?]
	at net.minecraft.class_437.method_25427(class_437.java:371) ~[client-intermediary.jar:?]
	at net.minecraft.class_408.method_25404(class_408.java:101) ~[client-intermediary.jar:?]
	at net.minecraft.class_309.method_1454(class_309.java:384) ~[client-intermediary.jar:?]
	at net.minecraft.class_437.method_25412(class_437.java:492) ~[client-intermediary.jar:?]
	at net.minecraft.class_309.method_1466(class_309.java:380) ~[client-intermediary.jar:?]
	at net.minecraft.class_309.method_22678(class_309.java:472) ~[client-intermediary.jar:?]
	at net.minecraft.class_1255.execute(class_1255.java:103) ~[client-intermediary.jar:?]
	at net.minecraft.class_309.method_22676(class_309.java:472) ~[client-intermediary.jar:?]
	at org.lwjgl.glfw.GLFWKeyCallbackI.callback(GLFWKeyCallbackI.java:37) [lwjgl-glfw-3.2.2.jar:?]
	at org.lwjgl.system.JNI.invokeV(Native Method) [lwjgl-3.2.2.jar:?]
	at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3101) [lwjgl-glfw-3.2.2.jar:?]
	at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:204) [client-intermediary.jar:?]
	at net.minecraft.class_1041.method_15998(class_1041.java:310) [client-intermediary.jar:?]
	at net.minecraft.class_310.method_1523(class_310.java:1147) [client-intermediary.jar:?]
	at net.minecraft.class_310.method_1514(class_310.java:737) [client-intermediary.jar:?]
	at net.minecraft.client.main.Main.main(Main.java:236) [client-intermediary.jar:?]
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:461) [fabric-loader-0.14.8.jar:?]
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.14.8.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.14.8.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
	at org.multimc.impl.OneSixLauncher.invokeMain(OneSixLauncher.java:104) [NewLaunch.jar:?]
	at org.multimc.impl.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:175) [NewLaunch.jar:?]
	at org.multimc.impl.OneSixLauncher.launch(OneSixLauncher.java:185) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.listen(EntryPoint.java:127) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.main(EntryPoint.java:57) [NewLaunch.jar:?]
[10:01:06] [Render thread/INFO]: [CHAT] Illegal char <:> at index 21: batches/tag_minecraft:beds/items/

GUI is too big

I am playing on GUI x3 size (I am used to it) on 1920x1080 and the GUI of this mod is just too big with it, just look:
obraz
I have no idea if another mod is causing it, I sadly don't have time to check now.

Cannot detect ffmpeg on macOS

Hey,

I have ffmpeg installed through homebrew, and it should be visible in my path as well, as I was just using it the other night.

any reason this might not be detecting it?

I'm on Ventura beta 7, and using PolyMC as a launcher.

Game hangs on launch

The game hangs on launch with the isometric renders mod installed. The game just freezes and doesn't close. No errors are logged.

OS: MacOS: 12.4
Minecraft Version: 1.19
Fabric Version: 0.14.7
Isometric Renders Version: 0.3.1

Large GUI scale overlapping GUI elements

Looks beautiful in Gui Scale 2 (Sodium)

image

Not as much in Gui Scale 3

image

image

On a (odd res) 2048x1152 screen, both windowed and fullscreen

I am absolutely incompetent when it comes to most things Minecraft, but if you can (and it's not fixed already, and it's not too much work), make the panels scrollable

Thanks for the mod, loving it (with a magnifying glass cuz I'm blind af)

Rendering Player Entities

I'm trying to render NPCs on Hypixel but am unable to do so, i am not sure if this is a missing feature or a setting i need to turn on.

Fluid Displacement in Rendering

Crash Log

Placing fluids has a chance to crash the game, otherwise the fluids are rendered in incorrect positions.

All tested on Isometic Renders 0.2.7

Issue tested and found on:
Fabric API 0.42.5 (1.18)
Fabric API 0.43.1 (1.18)
Fabric API 0.44.0 (1.17)

My steps to reproduce:

  • Select an area with a fluid
  • /isorender it
  • Bug found

Use on servers

It is possible to use this mod while playing on servers? The isorender command doesn't work.

Forge?

Hi,

Thanks for this awesome mod, you did a great job.

If I can ask, is it any Forge version planned?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.